{"version":3,"file":"static/chunks/pages/_app-7e932167b0a0d4c6.js","mappings":"4FACA,qCAA6C,CAAE,SAAa,EAC5D,kBAAwB,QACxB,MAAqB,EAAQ,KAAc,CAC3C,SACA,EAF4B,UAE5B,GAGA,OAFA,cACA,2CACA,KAEA,OACA,iCACA,SAAoB,+BAA2D,EAC/E,KACA,eACA,MACA,QACA,IACA,YACA,GACA,mBAAyD,EAAW,SAAmB,EAAW,GAAG,GAAQ,GAG7G,QACA,EACA,gBACA,yCAAmG,oBAAqB,UACxH,IACA,WACA,SAEA,MACA,WACA,QACA,iCAAiE,eAAqB,UACtF,YACA,GAAmC,kBACnC,QACA,CAAiB,EAEjB,GACA,uBAAkD,eAA8B,WAEhF,EADA,EACA,OACA,EAFA,EAEA,MAKA,OAFA,UAA2B,uBAC3B,2DACA,CACA,CAAS,EAAI,SAAU,SAAY,CACnC,CACA,CACA,kBAAwB,uCCpDxB,8CACA,0BAA6C,UAC7C,EACA,qCAA6C,CAAE,SAAa,EAAC,EAC7D,UAAkB,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,CACoB,GAC5D,IAAgC,EAAQ,IADC,CACe,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,OAcA,cACA,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,kCAzCA,KACA,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,SADA,gBACA,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,UACC,EACD,yCACA,iFACA,EACA,qCAA6C,CAAE,SAAa,EAC5D,EAAa,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,C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B,CAhBpB,YACA,MACA,gCAEA,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,CAmCvC,WAnCuB,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,mCAKA,iBACA,2BAGA,oEACA,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,uDCtOA,IAOA,cACA,cACA,KACA,IACA,cACA,mCACA,EAwBA,oBACA,+BAtBA,gBACA,iBACA,SAEA,kBACA,GAiBA,EAjBA,YACA,GAEA,wDAcA,EAdA,mBACA,KACA,CAAK,EACL,mBAA+B,UAAoB,CAYnD,OACA,mBAEA,WACA,KACA,UACA,aACA,cACA,eAGA,SACA,gBACA,EACA,aACA,kBACA,cAGA,oDACA,YACA,UAGA,IACA,wBACA,wBACA,kBACA,kBACA,WACA,WACA,UACA,UACA,YAEA,OACA,yBAEA,GACA,wBAEA,CACA,SACA,oDACA,CAEA,CAAS,CACT,EAIA,OAHA,KACA,UACA,IAC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A,0BAEA,iBACA,IAGA,EAAI,IAEJ,IADA,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,0CAEA,CADA,wCACA,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,sBACA,CACA,CAAC,EAmCD,gBAgEA,uBACA,eACA,EAIA,wDACA,oCA8BA,wBACA,OApBA,EAoBA,GAnBA,MACA,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,WAk4BA,GAEA,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,EAm4BA,cAGA,QAFA,IACA,KACA,IAAkB,aAClB,WADkC,IAIlC,EADA,qBACA,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,SAGA,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,OAEA,EAEA,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,SACA,EAEA,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,K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BACA,qCAGA,OAMA,aALA,MAAkB,iBAClB,KACA,WACA,MAAkB,cAClB,KAIA,YACA,MAAkB,eAClB,KACA,SACA,6CACA,CAGA,QACA,EAnKA,yBACA,qBAUA,8EChCA,sCASA,OARA,6BACA,iCAAiD,IAAO,IAExD,aADA,eACA,2CACA,YAEA,QACA,GACA,qBACA,EACA,EAAgB,EAAQ,KAAkB,EAC1C,EAAsC,EAAQ,KAAqC,CAD5D,CAEvB,EAA4B,EAAQ,KAA2B,CADlB,CAE7C,EAAwB,EAAQ,KAAuB,CADpB,CAEnC,EAAc,EAAQ,KAAa,CADJ,CAE/B,KACA,GACA,EAHqB,GAGrB,OACA,wBACA,oCACA,0BACA,oBACA,UACA,oBACA,kBACA,UACA,UACA,cACA,qBACA,EACA,GACA,OACA,aACA,mBACA,cACA,WACA,MACA,WACA,UACA,MACA,MACA,QACA,YACA,CACA,aACA,cACA,kBAKA,gBACA,aAAgD,MAChD,mBACA,cACA,qDAEA,QACA,CACA,cACA,SACA,0BACA,SAEA,gBACA,OAhBA,kBAA+C,qBAA2C,EAkB1F,sBACA,WACA,kCACA,CAAK,EACL,gCACA,EACA,IAEA,CACA,CACA,0BACA,oBACA,EACA,yBACA,WACA,aACA,EACA,sBACA,kBACA,aACA,QACA,cAEA,EACA,2BACA,iBACA,MACA,0EAEA,2BACA,gDAEA,gBAEA,GADA,SAAqC,QACrC,OACA,EACA,4BACA,WACA,cACA,eACA,EACA,gCACA,aACA,IACA,EACA,UACA,0CClHA,qCAA6C,CAAE,SAAa,EAAC,EAC7D,yBAAiC,QACjC,MAAc,EAAQ,KAAS,EAC/B,EAAgB,EAAQ,KAAW,CADd,CAuBrB,UAtBuB,iBAsBU,CArBjC,gBACA,QACA,QAAgB,oBAAuC,KACvD,oBACA,mBAGA,iBAEA,EADA,iBACA,oBAGA,iBAEA,aACA,oBAEA,UACA,MACA,CACA,0BC2KA,UAnMA,CACA,MACA,gBACA,YACA,aACA,cACA,mBACA,MACA,WACA,MACA,CACA,CAAK,CACL,YACA,sBACA,kBACA,gEACA,cACA,aACA,MACA,WACA,MACA,CAAS,CACJ,CACL,oBACA,4BACA,wBACA,iBACA,YACA,aACA,MACA,WACA,MACA,CACA,CAAK,CACL,eACA,uBACA,mBACA,8BACA,YACA,mBACA,MACA,WACA,MACA,CAAS,CACJ,CACL,UACA,oBACA,gBACA,6BACA,cACA,gBACA,MACA,WACA,MACA,CAAS,CACJ,CACL,KACA,eACA,WACA,iCACA,cACA,sBACA,MACA,WACA,MACA,CACA,CAAK,CACL,UACA,oBACA,gBACA,UACA,IACA,UACA,cACA,cACA,cACA,cACA,gBACA,OACA,gBACA,cACA,gBACA,UACA,KACA,KACA,KACA,gBACA,gBACA,YACA,KACA,KACA,IACA,YACA,YACA,YACA,YACA,CACA,cACA,4BACA,MACA,WACA,MACA,CACA,CAAK,CACL,SACA,mBACA,eACA,UACA,OACA,aACA,gBACA,gBACA,QACA,GACA,GACA,EACA,CACA,cACA,kCACA,MACA,WACA,MACA,CAAS,CACJ,CACL,KACA,eACA,WACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,gBACA,eACA,OACA,OACA,OACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,eACA,gBACA,CACA,cACA,aACA,MACA,WACA,MACA,CACA,CAAK,CACL,KACA,eACA,WACA,uBACA,cACA,sBACA,MACA,YACA,MACA,CACA,CAAK,CACL,OACA,iBACA,aACA,kEACA,cACA,aACA,MACA,WACA,MACA,CAAS,CACJ,CACL,WACA,qBACA,iBACA,kBACA,cACA,aACA,MACA,WACA,MACA,CAAS,CAET,8BClMA,qCAA6C,CAAE,SAAa,EAAC,EAC7D,KAAa,QAOb,OAAa,CANb,mBACA,EAGA,8BAFA,IAGA,8BCPA,qCAA6C,CAAE,SAAa,EAAC,EAC7D,aAAqB,QA6BrB,eAAqB,CAlBrB,gBATA,QAMA,CANA,uBAAoF,uBAA8B,UAMlH,GACA,aAMA,6BACA,IAOA,gDANA,EASA,CACA,CAAK,EAdL,IAeA,8BC7BA,qCAA6C,CAAE,SAAa,EAAC,EAC7D,gBAAwB,QAIxB,kBAAwB,CAHxB,YACA,6CACA,8BCDA,qCAA6C,CAAE,SAAa,EAAC,EAC7D,OAAe,QAqBf,SAAe,CANf,kBAdA,IACA,EACA,EACA,EAMA,SAMA,kBAfA,EAgBA,KAhBA,EAgBA,KAfA,mBAEA,WADA,EAcA,EAdA,YACA,IACA,4CACA,4CACA,MACA,MAGA,UADA,EASA,EARA,EACA,wBACA,uBAOA,uBCzBA,yCACA,aACA,aACA,cACA,gCACA,CAEA,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,WACA,kBAEA,mCAEA,OADA,yBACA,SAIA,aA0FA,OAzFA,iBAEA,2BAEA,GADA,iBACA,GAEQ,sBACR,sBACQ,2CACR,sBACQ,mDACR,0BACQ,8DACR,gCACQ,KA5MR,CA4MQ,yBA5MR,EA4MQ,IA3MR,qCA4MA,kCAEA,kDACQ,8DACR,2BAEA,kDACA,OAjBA,iBAmBA,qCACA,mBACA,4CAAuD,gBAC7C,oCACV,qDACU,4DACV,mEAA8E,gBAG9E,EAEA,SACA,qBACA,cACA,KACA,SAGA,kBACA,uCACU,yBACV,0DACU,uBAGV,kDAFA,oDAIA,EAEA,mCACA,sBACA,gDAEA,mBAEA,GAGA,qBACA,IA3FA,EACA,EACA,EAyFA,UACA,KACA,SAGA,kBACA,OAjGA,EAiGA,eA/FA,IADA,kBAEA,gBACA,EA8FQ,yBACR,uBA5FA,YAIA,QAHA,oBACA,kBAEA,IAAoB,WAAiB,IACrC,+BAEA,iBACA,EAoFA,wBACQ,uBAGR,sCAFA,oDAIA,EAEA,YACA,0BACA,0BACA,GAGA,qBACA,mCACA,EAEA,KA1MA,iCACA,OACA,OACA,kBACA,wBACA,EAEA,+BACA,uBAGA,4BAEA,OADA,OACA,4BACA,EAEA,4BACA,oCACA,EAEA,8BACA,mBACA,EAEA,kCACA,sBACA,4BACA,4BAGA,EAEA,4BACA,SAIA,OAHA,2BACA,SACA,CAAK,EACL,IACA,EAEA,8BACA,SAIA,OAHA,yBACA,SACA,CAAK,EACL,IACA,EAEA,+BACA,SAIA,OAHA,2BACA,aACA,CAAK,EACL,IACA,EAEA,YACA,mDAqJA,qDAOA,gBAEA,IAPA,EACA,EAMA,GADA,SACA,KAEA,mBACA,cACA,+BAEA,gBACA,+BACA,WACA,gCAEA,qBACA,iBACA,qBACA,uBACA,cACA,cAEA,EAAM,IACN,mBAYA,GATA,gEACA,4BACA,gCAEA,aAhCA,GADA,EAiCA,8BAhCA,cACA,qBAgCA,kCACA,kCACA,mBAEA,+CACA,6DAEA,iBACA,CAMA,cACA,mBAYA,OAXA,EACA,OACA,WACA,oBACA,MACA,mBACA,+BACA,iCACA,qDACA,CACA,CAAO,EACP,CACA,CAoBA,gBACA,GACA,OAGA,oBACA,2CACA,0CACA,mDACA,8BACA,mBACA,iBACA,CAlDA,6BACA,mBAA8B,oBAAqB,CACnD,EAkCA,oBAgBA,oBAEA,6BACA,6BACA,mBACA,2BACA,4BACA,aACK,CACL,EAEA,mBACA,kBAAuC,uBAA0B,EAEjE,OADA,eACA,CACA,EAEA,2BAEA,0BACA,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IA,sBAIA,EClJmB,KAGnB,WACA,mBACA,gBACA,eACA,gBACA,kBACA,kBACA,wBAGA,EAA2B,EAAe,KAE1C,QAF0C,CAGpC,OAAe,MACrB,CACA,0BC7CA,cACA,sBACA,qCAKA,SACA,eAAkB,uBAClB,qBACA,0BCVA,sCACA,MASA,cA4BA,kBACA,UACA,eACA,eACA,CAaA,sBACA,wBACA,mDAGA,sBACA,UAMA,OAJA,aACA,gBACA,8BADA,qBADA,kCAIA,CACA,CASA,gBACA,oCACA,oBAUA,aACA,mBACA,mBACA,CAzEA,gBACA,gCAMA,2BA2EA,kCACA,IACA,EACA,EAFA,KAIA,kCAEA,wBACA,2CAGA,6BACA,0CAGA,CACA,EASA,kCACA,cACA,kBAEA,eACA,qBAEA,kCAA0D,IAAO,IACjE,aAGA,QACA,EASA,sCACA,cACA,yBAEA,EACA,OACA,SAFA,CAGA,EASA,uCACA,cAEA,6BAEA,IAEA,EACA,EAHA,kBACA,mBAIA,SAGA,OAFA,8CAEA,GACA,qCACA,wCACA,0CACA,4CACA,8CACA,gDACA,CAEA,qBAA0C,IAAS,IACnD,oBAGA,uBACA,EAAI,IACJ,IACA,EADA,WAGA,QAAgB,IAAY,IAG5B,OAFA,oDAEA,GACA,kCAA4D,KAC5D,qCAAgE,KAChE,uCAAoE,KACpE,yCAAwE,KACxE,SACA,2BAA2D,IAAS,IACpE,oBAGA,6BACA,CAEA,CAEA,QACA,EAWA,+BACA,uBACA,EAWA,iCACA,uBACA,EAYA,6CACA,cAEA,gCACA,MAEA,OADA,UACA,KAGA,sBAEA,QAEA,UACA,YACA,kBAEA,cAEI,CACJ,4BAA4D,IAAY,IAExE,cACA,eACA,sBAEA,YAOA,8CACA,SACA,CAEA,WACA,EASA,2CACA,MAUA,OARA,GACA,UACA,6BAEA,mBACA,qBAGA,MAMA,2CACA,uCAKA,aAKA,iBAMA,oCCvTA,IAOA,EAPA,wCACA,gCACA,QACA,gBACA,2CACA,EAIA,EADA,gCACA,UACE,6BACF,YACA,qCACA,uCACA,EAEA,YACA,oCACA,EAOA,gCACA,WACA,EAEA,aACA,iBACA,CACA,YACA,cAAmB,CAwYnB,cACA,qCAoBA,EAnBA,cACA,sBACA,IACA,CAEA,aACA,qCACA,4BAEA,2BACA,CAEA,SAA8D,QAAY,EAC1E,cAMA,EALA,CAA8D,QAAY,CAM1E,mBANA,EAMA,IACA,EAPA,EAOA,QAPA,EAOA,GALA,CAAG,CACH,EAxZA,iBAEA,2BACA,2BACA,iCAIA,SAEA,cACA,wBACA,4FAEA,CAoCA,qBACA,yBACA,sBACA,eACA,CAkDA,oBAyBA,GApBA,KAGA,SADA,eAEA,gCACA,mBAIA,yBACA,uBACA,yBAIA,aAEA,QAGA,WAEA,SACA,sBAeA,GAbA,qBAEA,OACA,cAEM,EACN,aAEA,UAIA,SACA,0BACA,YAGA,IA9CA,EACA,EACA,EA4CA,uDACA,uBADA,oEAIA,sCACA,YACA,SACA,iBA5KA,oCA6KA,EACA,CAGA,QACA,CAaA,aACA,qBAGA,CAFA,kDACA,cACA,qBACA,gCACA,0CAEA,CAEA,kBACA,OAAgB,mDAChB,YAGA,OAFA,aACA,WACA,CACA,CAyHA,kBACA,gBAEA,cACA,SAEA,kBACA,WACA,GAEA,qBACA,sBAEA,EACA,SAqDA,GAEA,QADA,kBACA,IAAkB,WAAgB,IAClC,yBAEA,QACA,EA3DA,gBACA,CAmBA,cACA,mBAEA,eACA,WAEA,wBACA,SACM,cACN,gBAIA,QACA,CAMA,gBAEA,QADA,WACA,IAAkB,IAAO,IACzB,UACA,QACA,CA2CA,oBACA,2BACA,OACA,YAEA,eAEI,yCAGJ,mCAGA,QACA,2BAEA,IACA,CAAK,OAEL,+FAEA,CAraA,+CACA,cACA,eACA,QACA,CAAG,CACH,gBACA,iCACA,0HAEA,GACA,CACA,CAAC,EAED,kBAEA,wBACA,sDACA,iCACA,qBAGA,6CACA,EAIA,wCACA,iCACA,wGAGA,OADA,qBACA,MASA,uCACA,cACA,EAEA,6BAEA,QADA,KACA,IAAkB,mBAAsB,yBADxC,IAEA,cAEA,eACA,cACA,2BACA,MACA,SAGA,MAIA,GAFA,YACA,SACA,mBAGA,QAGA,EAHgB,EANhB,EASA,qDAEA,OADA,YACA,CACA,CAEA,GAHe,CAGf,OAEA,cACA,SAEA,wBACA,iBAIA,QAFA,WACA,SACA,IAAoB,IAAS,IAC7B,eAGA,QACA,EAgEA,sCACA,qBACA,EAEA,uCAEA,4BACA,cACA,qBACA,EAoBA,+BAGA,OAFA,KACA,uBACA,MAGA,gCACA,cAGA,OAFA,KACA,oCACA,MAIA,2BACA,cACA,cAKA,GAHA,KAGA,SADA,kBAKA,SADA,SAFA,YAMA,yBACA,uBACA,kCAEA,YACA,kBACA,kDAEQ,yBAGR,IAFA,KAEA,aAAkC,KAAQ,IAC1C,gCACA,gBACA,IACA,KACA,CAGA,OACA,WAEA,OACA,UAEA,SA+HA,KACA,KAAS,aAAyB,IAClC,YACA,OACA,EAnIA,KAGA,cACA,YAEA,2BACA,kCACA,CAEA,aAGA,2CAEA,+BACA,YACA,UAGA,YADA,iBAEA,YAGA,6BAUA,OATA,qBACA,iCACA,qBACU,gBACV,uBACA,iCAEA,aAEA,KAIA,wBACA,IACA,EADA,iBAEA,QAAoB,WAAiB,IAErC,mBADA,UAEA,2BAKA,OAHA,0CACA,iCACA,oBACA,KAKA,qBAFA,SAGA,8BACQ,cAER,iBAAuC,KAAQ,IAC/C,4BAIA,WACA,EAmBA,kCACA,mBACA,EAEA,qCACA,mBACA,EAEA,oCACA,mCACA,mBAEA,WAEA,EAEA,4BAiBA,kCACA,6EC7ZA,MAAoB,EAAQ,KAAiB,EA8D7C,UA9D2B,CAe3B,8BACA,oBACA,2BACA,CACA,kBACA,6BACA,CACA,GACM,eACN,wBACA,CACA,kBACA,uBACA,CACA,SAEA,CAAG,CAUH,+BACA,oBACA,2BACA,CACA,kBACA,6BACA,CACA,GAKA,CACA,QACA,CAEA,CAAG,CAEH,4BACA,0BC7DA,qFAQA,GAEA,YAEA,yCAEA,wEAEA,kCAEA,aAEA,CAEA,qCCrBA,cACA,kBACA,QACA,CACA,CAOA,kBAEA,iBACA,yBACA,wBACA,0BACA,6BACA,aAEA,kCACA,QACA,EAEA,oCCdA,oBA+BA,UArBA,0BAGA,GAFA,KAEA,IACA,MACA,cACA,sCAAsD,uGAChD,CACN,oBACA,GAIA,CAHA,oCACA,aACA,CAAO,IACP,0BACA,CAGA,MADA,gBACA,CAD2B,CAG3B,gCCxCA,MAAoB,EAAQ,KAAiB,EAmD7C,UAnD2B,aCT3B,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,qBAsCA,QArCA,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,mBCvEA,UAMA,eAGA,uBAGA,eAGA,gBAGA,WAGA,mBAAwB,GAAM,EAAgB,GAAM,EAAI,GAAM,kBAAsB,GAAM,CAG1F,0DAGA,kCAUA,EAPA,iBAOA,SAGA,WACA,WAkBA,aACA,mBACA,EA2MA,cACA,eACA,uCACA,CA2EA,cACA,sBACA,SAEA,GA/BA,iBADA,EAgCA,IA9BA,GAtBA,iBAsBA,gCA+BA,SAEA,SACA,IApCA,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ACP,MAAQ,MACR,OAAS,MACT,MAAQ,MACR,OAAS,MACT,MAAQ,MACR,OAAS,MACT,OAAS,MACT,OAAS,SACT,OAAS,SACT,MAAQ,SACR,OAAS,SACT,SAAW,MACX,QAAU,MACV,OAAS,MACT,MAAQ,KACR,EACA,UCtBA,GACA,2BACA,iBACA,uBACA,8BACA,sBACA,mDACA,eACA,QAAU,CDeW,iBCdrB,EELA,gBACA,eACA,iDACA,aACA,GACA,CACA,cACA,eACA,0CACA,gDACA,CAKA,cACA,8BEhBO,IAAM,EAAc,iBAAH,CAAG,CAAa,EACjC,SACP,cACA,sBACA,CACA,qBACA,cACA,mDACA,CAAK,CACL,CACA,oBACA,uCACA,CACA,CCdO,SAAS,EAAK,GACrB,IACA,EAFqB,OAErB,EACA,QACA,SACA,UACA,UACA,aAAiB,CACjB,SACA,WACA,aACA,KACA,OACA,IACA,iBACA,KACA,CAAI,EACJ,CACA,OACA,YACA,CAAI,CAAE,eAAU,CAAC,IAAW,GAC5B,QJpBA,EIqBA,EAF4B,GAE5B,SADmD,EACnD,IACA,OHmKO,KGnKqB,EAF8B,EHqKnD,GACP,IACA,WACA,QACA,SACA,UACA,UACA,aAAiB,CACjB,SACA,WACA,aACA,KACA,OACA,IACA,iBACA,KACA,CAAI,EACJ,KD1MA,EC2MA,MAEA,MAHgC,CAE5B,EAAQ,iBAF2B,2DAGvC,EAEA,6BACA,iBACA,OFnMA,IEoMA,CACA,EADO,CACP,UADkB,CAClB,iBAEA,0CACA,4CACA,eA9LO,OACP,eACA,SACA,OACA,6FAsCA,OArCA,kBACA,sBACA,MAAuB,EAAM,OACvB,GAAS,oBAAc,KAC7B,kCACA,uBACA,mBACA,gBACA,OAA0B,OAAW,SAC7B,gBAEA,6BACR,OAA0B,EAAW,KAAK,EAAW,QAC7C,gCACR,OAA0B,OAAW,GAAG,EAAc,IAAI,OAAW,OAC7D,CACR,aACA,OAA0B,EAAW,GAAG,EAAQ,IAAI,EAAW,SAP/D,OAA0B,EAAW,KAAK,EAAW,IAS/C,gBACA,EAAI,kFACJ,uBACN,IACA,SACA,KACA,CAAQ,EACR,iBACA,iBACA,WAAkC,KAAQ,IAAI,EAAO,OACrD,MAAyB,EAAE,IAAQ,GAC3B,IACA,EAAI,uGAAwG,iBAAiB,6BAErI,EAAM,IACA,EAAI,8EAA+E,QAAQ,oEAAoE,QAAQ,KAE7K,CAAG,EACH,CACA,EAmJA,KACA,iCACA,CACA,eACA,CAAI,EACJ,qBACA,+EACA,+BACA,KACA,2CACA,EAAM,CACN,4CACA,EAEA,qCACA,eACA,mBACA,aACA,YACA,CACA,EACA,GACA,KACA,QACA,KACA,KACA,eACA,IACA,EACA,aACA,GACA,2BACA,UACA,wEAA2G,EAAE,qBAAmC,GAAG,MAInJ,MAAsB,mBAAa,CAHnC,WACA,MAAe,mBAAa,CAAC,UAAQ,QACrC,EACmC,CACnC,CAAK,EAEL,eA1LA,aACA,mBACA,uCACA,6BAA6F,EAAK,sBAClG,wBACA,UAQA,SAPA,KAEA,EADA,GACA,YACA,qBACA,aAA0D,oBAAuC,oBAAc,wBAC/G,CAAK,CACL,EACA,GACA,MAAc,EAAI,YAAa,EAAa,OAC5C,GACA,CAFkB,EAElB,EACA,IACA,EACA,kBACA,WACA,oBACA,MA/EA,kDA+EA,IA9EA,WAAiC,oBAAc,MA8E/C,oDACA,CACA,sBACA,SACA,aACA,OAAe,kBAAY,IAC3B,KACA,CAAO,eAEP,UAAkB,UAAQ,aAC1B,OACA,YAGA,OADA,2BACe,mBAAa,SAC5B,KACA,MACA,UACS,UACT,CAAO,EAEP,CACA,kBACA,WAEA,OADA,KACA,iBACA,gIACA,mBACA,6BACA,kCACA,UACA,sCAxGA,cACA,OACA,MAGA,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,wBACR,2BACA,wIACA,EACA,OAAmB,mBAAa,IAChC,OAAoB,OAAU,GAAG,EAAE,EACxB,KAEX,SAEA,CACA,QACA,CAAK,IACL,CAKA,WAJA,EACA,SACA,eACG,aACH,IACA,EAuEA,gBACA,oCACA,SAAuB,mBAAa,SACpC,EG5O4B,CAC5B,WACA,QACA,SACA,UACA,UACA,WACA,SACA,WACA,aACA,oDACA,OACA,IACA,iBACA,KACG,CACH,CCxCA,cACA,MAAc,YAAM,GAIpB,MAHE,eAAS,MACX,uBACA,CAAG,QACH,WAEA,oBACA,yBACA,CAIO,SAAS,EAAc,OAH9B,IAIA,gBAD8B,MAC9B,0CACA,CACA,OACA,CAAI,EACJ,CACA,OACA,YACA,CAAI,CAAE,eAAU,CAAC,IAAW,GAC5B,QLpBA,EKsBA,EAH4B,CAE5B,WADmD,WACnD,SAD0D,YAC1D,KAAkE,CAAgB,EAClF,IACI,EAAQ,OAFsE,mEAGlF,aACA,qBACA,sEACA,iCAEA,OAAsC,KAItC,OAHA,MACA,UACA,WACA,CACA,CACA,gDAAmE,EAAQ,uGAC3E,ONtBA,IMuBA,CACA,EADO,CACP,UADkB,KAClB,CACA,MAEA,CACA,cACA,YACA,CAAI,EACJ,uCACA,4CACA,8EACA,4DRIO,eACP,GQL6G,CRK7G,mEACA,gCAIA,uCAIA,wBACA,UACA,iBACA,4JACA,CACA,CAAG,EAPH,SAxBA,KACA,gEACA,iBACA,qCACA,oCACA,uCACA,cACA,2CAA8D,EAAE,GAAG,EAAE,GACrE,oBACA,QACA,6JACA,0BACA,+FACA,qBAEA,EASA,QALA,wDACA,GAYA,GQpB6G,QAC7G,GAzCA,EAyCA,YAzCA,EAyCA,6BAxCS,iBAAW,GAwCpB,EAxCoB,IAwCpB,GAxCoB,CAwCpB,EAxCoB,IAwCpB,EAxCoB,GAyCpB,QACA,sDACA,MAAoB,cAAQ,IAC5B,UACA,cAA+B,MAAU,EAAE,EAAS,GACpD,WACA,EAAoB,YAAM,KACxB,eAAS,MACX,IACA,WACA,gBACA,CAAM,EAgBN,aACA,eACA,CAGA,OApBA,aACA,OACA,MACQ,EAAa,eACrB,eACA,CAAS,EAED,EAAc,SACtB,GADsB,MACtB,MACA,CAAS,GAGT,wBACA,KAKA,gBACA,sBACA,KACA,aACA,0CACA,+CACA,CACA,CAAG,QACH,MAAoB,YAAM,KACxB,eAAS,MACX,uBACA,KAEA,YACA,CAAG,QACH,cAIA,GAHA,MACA,SACA,UACA,GACA,OADA,QAEA,uBACA,MACM,EAAa,mBAEb,EAAc,aAEjB,CACH,CG/GO,cACP,IACA,OACA,YACA,WACA,CAAI,EACJ,EAAgB,aAAO,OACvB,OACA,WACA,EAAG,QACH,MAAS,mBAAa,CAAC,EAAW,UAClC,OADkC,CAE/B,GACH,6CIfA,gBACA,oCACA,uBAAgC,IAAO,cACvC,QACA,CGHA,gBACA,MACA,6BAAqC,EAAgB,KACrD,UAAc,8BACd,iKAA+L,EAAgB,WAC/M,CACA,GAF+M,aMD/M,gBACA,OAAS,SHLT,GACA,4BACA,EGGuB,IFLvB,cACA,OEIkD,KFJlD,uEACA,YACA,MACA,EACA,EACA,EACA,KACA,KACA,KACA,IACA,+BACA,wBACA,IACA,EAAQ,SAAY,wDAAkE,MACtF,CAAM,SACN,QACA,EAAM,OACN,IACA,0DACA,EAAQ,OACR,YACA,CACA,CACA,QACA,CACA,EErBkD,MAAU,EAA0B,MAAU,WDJhG,KCI+G,CDJ/G,ECIsF,QDJtF,4IACA,GCIA,gBCLA,gBACA,oBACA,MACA,EACA,EAAQ,OAA4B,MACpC,iCACA,sCACA,QAAgB,WAAc,8BAAkC,4CAChE,CACA,QACA,CCLO,OACP,UALA,SAMA,uBACA,MACA,cAVA,KAWA,QAVA,MAWA,CAAG,CACH,oBACA,MAA0B,CAAf,KAAe,oBAC1B,CAAG,CACH,eACA,cACA,CAAG,CACH,mBACA,gBAfA,OAgBA,WAlBA,mBAmBA,gBAlBA,GAA0B,KAAK,GAAG,IAAI,EAmBtC,OACA,cACA,CAAG,CACH,qBACA,mBACA,QCGO,6BAAgE,iBAAe,CAAG,WAAS,CC1BlG,WACA,WAIA,gBAAyB,qBAAwB,iCAAoC,sCAAyC,2BAAkC,wDAA0D,oBAA0B,SACpP,cAA4B,YAAgB,mBAAsB,KAAO,yCAAkD,wCAAsD,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,OACA,OAEA,OADA,qBDjEA,ECiEmC,IDjEnC,ECiEyC,EDjEzC,SCiEyC,yBRjFhC,SJJT,GACA,MIG0B,GJH1B,cYoFqF,IZpFtD,EAAgB,EAC/C,EYmFqF,IRjFpD,OJHc,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,0BACG,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,MAAQ,EAClF,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,qBAEA,MADA,oCACA,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,OAA2D,SAA3D,SAA+C,IAAO,GAAG,EAAE,IAC3D,cAGA,UAAc,IAAO,GAAG,EAAE,IAC1B,CAUA,iBACA,IACA,MACA,IACA,CAAI,QACJ,KACA,YAyBA,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,EA1MA,kBACA,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,0BAEA,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,cAJA,0DAIA,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,MADA,iFACA,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,IACA,CAAO,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,MACQ,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,KACA,CACA,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,iBAEA,CAAK,CACL,CAAG,EACH,CACA,GAYA,CACA,aACA,eACA,CACA,WACA,gEACA,2BACA,IACA,kDACA,mCACA,CAAS,CACT,CAAQ,SACR,MACA,CAEA,+EACA,CACA,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,GAOA,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,qBACA,wCAA8D,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,SAIA,GAHA,IACA,IACA,GACA,iDACA,sBACA,sBACA,SACA,+CAA8D,GAAG,cACjE,uDACA,gBACA,IACA,IACA,CAEA,IADA,oCACA,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,KACS,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,CArGA,YACA,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,aACA,EAw7CA,gBA9EA,SA+EA,EA/EA,QA+EA,EA/EA,GACA,iBA8EA,EA9EA,CA8EA,EA7EA,gBA8EA,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,SACA,CAAS,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,cAjBA,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,EACL,0EACA,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,cAEA,IADA,8CACA,YACA,cACA,yBACA,CAAS,CACT,EACA,EAIA,KAFA,IADA,mEACA,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,GACA,4WAEA,SADA,0DACA,+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,GADgB,CACR,CACH,GAAQ,OACK,CAFV,EAEkB,GADb,UACa,OACT,GAAQ,mBACZ,GAAQ,eACT,GAAQ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QATA,GAWA,KAEA,EACA,cACA,WACA,EAhBA,EAiBA,KACA,WACA,IACA,KACA,kBACA,mBACA,EACA,IAEA,KAGA,KACA,iBACA,gBACA,IAEA,KACA,iBACA,mBACA,EACA,IAEA,KAGA,KACA,eACA,gBACA,GAGA,CACA,SACA,0BACA,CAAK,EACL,MAA2B,SAAG,CAC9B,GACA,CACA,QACA,WACA,YACA,cACA,SAAkC,SAAG,UAAoB,iBAAmD,SAAG,CACrG,KAAS,KACnB,CACA,KACA,qBACA,MACA,oBACA,EACA,CAAW,CACX,EAEA,GAEA,mBACA,eACA,GAAoB,YAAgB,CACpC,QACA,qBAAY,gBAAiD,EAC7D,WACA,WACA,QACA,EAAsB,QAAK,GAC3B,6BACA,yBACA,MAA2B,SAAG,CAC9B,GACA,CACA,QACA,OACA,WACA,YACA,SAAkC,SAAG,CDhErC,GCkEA,CACA,iCACA,aAA0B,GAAQ,GAClC,KACA,EAFkC,CAElC,EACA,MACA,WACA,OACA,iBACA,EACA,gBAEA,gBAEA,CACA,EAEA,EAEA,GAEA,kBACA,yBACA,GAAsB,YAAgB,CACtC,QACA,IAAY,yBAAmC,EAC/C,WACA,WACA,MAA2B,SAAG,CACxB,KAAS,IACf,CACA,iCACA,aAAsB,GAAQ,QAC9B,EAD8B,cAC9B,qBACA,KACA,KACA,EAEA,GAEA,kBACA,IAAI,GAAY,mBAChB,GAAuB,YAAgB,CACvC,QACA,qBAAY,QAAoC,EAChD,WACA,KAAgD,GAAY,GAC5D,KAA8D,GAAY,GAC1E,QACA,GAF0E,GAE/C,SAAG,cAAwB,iBAAmD,SAAG,CDlH5G,GCoHA,CACA,+CACA,iCACA,eACA,KACA,KACA,KACA,EACA,CAAO,CACP,GAEA,eAA+B,GAC/B,IAAI,GAAY,OAD2B,OAC3B,KAChB,GAAuB,YAAgB,CACvC,QACA,qBAAY,QAAoC,EAChD,WACA,KAAgD,GAAY,GAC5D,QACA,GAF4D,GAEjC,SAAG,CDtInB,GCwIX,CACA,cACA,8BACA,iCACA,KACA,KACA,MACA,OACA,6EACA,2EACA,WAEA,EAEA,GAGA,SAAS,GAAQ,GAC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AC7B,KAAsD,GAKtD,UAPgH,KAOhH,eANkD,CAMlD,CACA,MANsD,OAMtD,4BACA,MACA,uBACA,EACA,oCACA,kCACA,kCAGA,kCACA,iCACA,kCACA,wCACA,wCACA,wCAEA,sCACA,sCACA,qCAGA,uCACA,KACA,CAAK,EACL,OACA,CAAK,EACL,UACA,OACA,CAAK,CACL,CACA,eACA,SAA6B,GAC7B,KAAsD,GACtD,8BAFkD,QACI,MACtD,GACA,YACA,8CACA,uCACA,qCACA,qCACA,qCACA,oCACA,kCACA,2CACA,2CACA,2CAEA,yCACA,yCACA,wCAEA,aACA,EAgBA,cACA,oBACA,CAHA,uCAdA,OAEA,EADA,SAA+B,KAD/B,EAGA,6BAHA,KACsD,IAItD,OACA,GANA,OAOA,EACA,0CAEA,WACA,IA4BA,gBACA,WACA,QACA,QACA,QACA,OACA,QACA,SACA,SACA,QACA,ECnLA,kCAAoG,sBEEpG,UACA,qBACA,yCAEA,iBACA,yBACA,iCACA,CACA,kBACA,mCACA,gCACA,CACA,uBACA,QACA,CACA,WACA,iBACA,mBACA,qBACA,mCACA,mCACA,uBACA,6BACA,yCACA,6BACA,2BACA,2BACA,WACA,CACA,CACA,eACA,SAAuB,UAAa,CACpC,aACA,aACA,CAAK,EAEL,GAAQ,KACR,gBACA,WACA,SAH8B,CAG9B,GACA,wBACA,gBAEA,CACA,CAAK,KACL,SAA2B,MD7C3B,GACA,SAAoB,UAAa,MAOjC,OANA,GAAQ,KACR,WACA,CAAK,EACL,EACA,EAEA,GAAe,eANkC,CAMhB,QACjC,gBACA,6BACA,CAAK,IACL,ECiCgD,IAChD,aACA,CAAK,EAEL,SAAe,eAAkB,IAKjC,gKACA,uBACA,eAWA,8BAVA,IACA,uBACA,YACA,oBAEA,qBACA,gCACA,wBAEA,EACA,CACA,OACA,CAAa,EACb,6CACA,oCACA,KACA,2DACA,6DACA,uCACA,eACA,CAAqB,GACrB,2CACA,WACA,eACA,CAAqB,EACrB,CACA,CAAa,EACb,8BACA,cACA,iBACA,WACA,CACa,CACb,CACA,CAAK,EACL,EACA,CACA,CGxGA,gBAA6D,MNsN7D,MMrNA,IAAU,uCAAyE,EACnF,KAAoB,UAAa,CACjC,aACA,qBAAyC,CACzC,CAAK,EACL,SAAsC,UAAe,MACrD,SAAqD,GAHS,OAGT,EAAe,mDACpE,KAA0B,eAAkB,yDAC5C,KAA4B,eAAkB,IAC9C,sBACA,KACA,GACA,CAAK,EACL,EACA,ENuMA,EMtMsC,IACtC,2BACA,GACA,CAAK,CNmML,EMnMK,GNmML,EMnMK,CACL,aACA,CAAK,CNkML,KACA,GAAQ,aAAgB,KACxB,cACA,CA3BA,gBACA,MACA,oCAAkE,MAAqB,qDACvF,gCAA0F,iEAC1F,gCAA6D,MAAqB,2CAClF,gCAA+D,MAAqB,+CAEpF,SADA,+OACA,4CACA,EAmBA,uCACA,OACA,EAEA,OADA,UACA,KACA,YACA,CAEA,CAAK,IM5ML,IAAU,cAAyB,GAAM,MFNzC,GACA,IAAU,4BEK8C,EFL9C,mBAAiG,EAC3G,KAAuB,eAAkB,IACzC,8BAGA,OAFA,QACA,SACA,EAEA,CAAK,EACL,EACA,EACA,EACA,KAAiC,GACjC,KAAwB,eAAkB,IAG1C,SAAkC,EAAuB,GAJiB,GAIjB,CACzD,gCADyD,YACzD,cACA,QACA,SACA,KAEA,CAAK,EACL,EACA,EACA,EACA,EACA,OACA,YACA,+BACA,0BACA,CACA,CACA,EE3BwD,CACxD,aACA,eACA,CAAK,EACL,CAAU,oBAAqC,GAAM,MDZrD,GACA,IAAU,mEAA6H,EACvI,KAAoB,UAAa,CACjC,gBACA,CAAK,EACL,KAAqB,eAAkB,IAIvC,sEACA,2BACA,QACA,SAEA,CAAK,EACL,EACA,EACA,EACA,EACA,KAA+B,GAC/B,KAAsB,eAAkB,IAGxC,cAJwE,SAIxE,sCACA,QACA,SACA,2BACA,KAEA,CAAK,EACL,EACA,EACA,EACA,SACA,GACA,kBAEA,eACA,aACA,CACA,EACA,CACA,kBACA,UACA,QACA,CACA,CACA,ECnC0E,CAC1E,cACA,qBACA,CAAK,EACL,OACA,YACA,iBACA,gBACA,CACA,CCpBA,UACA,KACA,cACA,MAKA,gBACA,KACA,CAAK,IACL,CACA,eACA,6BACA,CACA,cACA,gCAIA,MAHA,2EACA,yCACA,KACA,OAEA,OACA,8EACA,4CACA,CACA,CACA,eACA,IAAU,0DAA2G,EACrH,SAAsC,YAAe,IACrD,KAAoB,UAAa,CACjC,aACA,6BACA,eACA,WACA,CAAK,UACL,GAAQ,WAAgB,SACxB,IAAU,gCAA2D,GAAM,WAAc,KACzF,cAEA,GADA,gBACA,uEACA,gBACA,sBACA,WACA,MACA,kBACA,SACA,aACA,CAAa,EACb,SACA,KACA,EACA,UAGA,GAFA,iBACA,cACA,gCACA,gBACA,sBACA,MACA,gBACA,SACA,aACA,CAAa,EACb,SACA,KACA,EACA,KAqBA,MApBA,kCACA,qBACA,6BACA,kBACA,EACA,qBACA,0DACA,IAEA,oBACA,8BACA,EACA,mBACA,8CACA,8BACA,EACA,mBACA,oDACA,GAEA,CACA,aACA,iBACA,CACA,CAAK,EACL,EACA,EACA,EACA,EACA,EACA,EAWA,MAVA,GAAQ,aAAgB,KAGxB,MACA,uBACS,eAET,CAAK,EACL,EACA,EACA,CACA,aACA,WACA,CACA,CCpIA,mBACA,IACA,EADA,oBAEA,eACA,YACA,EAQA,CAPA,6DACA,UAEA,IADA,+CAEA,SAMA,GAJA,IAEA,4DACA,UACA,6CACA,yCACA,qCACA,OACA,UAEA,IADA,YACA,YACA,QAEA,QACA,EACA,aACA,OAAe,QAAuB,GAAG,QAAoB,IAC7D;AACA;AACA;AACA,yBAAyB,SACzB,EACA,yBACU,cAAc,EACxB,qBAEA,CAEA,OADA,iDACA,CACA,CACA,CACA,iBACA,cAGA,QAFA,oCAA2C,OAAW,EAAI,KAAO,EAIjE,CACA,8BACM,GAAQ,UACd,CADc,GACd,EACA,sBACA,kBACA,qCACA,CACA,ECxDA,QACA,OACA,0CACA,4CACA,KACA,YAAsB,KAAU,IAChC,UAEA,QACA,EACA,WACA,sBACA,MACA,OAEA,qBACA,MACA,OAEA,UACA,UAAY,YAAgB,EAC5B,GAAS,yCAAsD,CAC/D,EAEA,GADA,6BACA,kBACA,WACA,EAEA,+BACA,WACA,WACA,mCACA,yBACA,MACA,GAAoB,sCAA8C,EAClE,MACA,CACA,CACA,4BACA,CACA,2EACA,CAAG,EAEH,OADA,aAA8B,iBAAmB,EACjD,KACA,cACA,CACA,EACA,IACA,UACA,EAeA,sDACA,WACA,sBACA,MACA,OAEA,qBACA,MACA,OAEA,QACA,6CAA4F,GAC5F,EACA,KACA,IAHoG,CAGpG,EACA,CAAK,CACL,iCAEA,UACA,eAAY,WAAoB,UAChC,wCACA,IACA,MACA,EACA,QACA,QACA,IACA,kCACA,sCAIA,OAHA,GACA,qCAEA,KACA,kCACA,GACA,oCAEA,CACA,EAsCA,aACA,mCACA,yBACA,KAIA,OAHA,WACA,iDAIA,CACA,kBACA,iEAEA,EAYA,OACA,gBACA,WACC,MACD,OAEA,kEACA,oCAFA,IAGA,UACA,CAAG,CACH,CACA,UACA,eACA,eACA,wBACA,uBACA,oBACA,iCACA,0BACA,2BACA,oCACA,qBACA,uBACA,0BACA,yBACA,2BACA,oBACA,WACA,MACA,IAGA,oDAGA,2CACA,cACA,WACA,gCACA,CACA,8EACA,CAAW,CACX,CAAS,EATT,MAWA,OACA,gBACA,KACA,+BACA,MACA,CAAS,CACT,YACA,MACA,yCAAsE,iBAAmB,CACzF,CAAS,CACT,cACA,MACA,0CACA,CACA,CACA,EAAK,GACL,gBACA,oBACA,oCACA,wBACO,EACP,cACA,SACA,gBACA,WACA,eACA,aACA,qBACA,mBACA,cACA,cACA,kBACA,cACA,CAAS,CACT,kBACA,aAAuB,iBAAqB,CAC5C,eACA,MACA,4BACA,4BACA,QACA,0BACA,WACA,SACA,qBACA,uCACA,KAEA,EACA,gBACA,OACA,sDACA,EACA,iBAAuB,GACvB,CAD2B,IAE3B,sBACA,CACA,iBACA,sCACA,oCACA,EAEA,IACA,cACA,CAAO,CACP,CACA,IAAa,GACb,EADkD,IAAI,CAAa,GACnE,mBACA,aACA,iBACA,sCACA,oCACA,GAGA,kBACA,4CACA,eACA,2BACA,wBACA,sBACA,EACA,mBACA,KACA,cACA,EAEA,sBACA,MACA,gEACA,2BAEA,GADA,eACA,IACA,mBACA,MACA,CACA,qBACA,yDACA,+DAEA,uEAEA,+BACA,wBACA,CAAS,EACT,6CACA,mBACA,eACA,CAAS,EACT,iBACA,yCACA,kBACA,kBACA,CAAW,GAEX,iBACA,+CACA,yBACA,0EACA,oBACA,mBACA,kBACA,CAAW,EAEX,CACA,EACA,iBACA,sBAIA,0DACA,4DAJA,qBACA,GAKA,yBACA,sBAIA,6IACA,oBAJA,uBACA,GAKA,oCACA,cACA,UACA,cAA8B,KAAQ,KACtC,WACA,iBACA,SAEA,YACA,QAOA,GALA,qBACA,gBACU,aACV,iBAEA,4BACA,KAEA,CACA,sEACA,cACA,gBAEA,YACO,UACP,EACA,2BAAiC,GACjC,CADqC,GACrC,CACA,mBACA,0BACA,0BACA,wBACA,qBACA,CACA,cACA,oCACA,CACA,QACA,eACA,eACA,aACA,SACA,GAEA,CACA,MACA,GAEA,qBAA2B,GAC3B,CAD+B,GAC/B,kDACA,QAAS,uDAAwD,MACjE,MAGA,OAFA,0BACA,2BACA,EAEA,qCACA,6DACA,mCACA,oCACA,CAAW,GAEX,+FACA,qCACA,wCACA,YAA0B,IAAW,KACrC,WACA,iEACA,+BACA,WACA,oDACA,MACA,gCACA,MACA,QACA,QACA,OACA,MACA,MACA,MACA,CACA,CAEA,OADA,yBACA,CACA,CAAO,CACP,CACA,IAAa,GACb,GADkD,GAClD,CADsD,CAAiB,EACvE,qBAGA,oBAA0B,GAC1B,CAD8B,GAC9B,+DACA,SACA,oCA2SA,CACA,eACA,YACA,eACC,EACD,iBAEA,SADA,cACA,GACA,IACA,wBACA,IAEA,kBAAW,aACX,EAxTA,CACA,eACA,YACA,cACA,CAAS,OAET,CACA,IAAa,GACb,GADkD,GAClD,CADsD,CAAgB,EACtE,kBACA,GAEA,uBAA6B,GAC7B,CADiC,IAEjC,WACA,OACA,wBAKA,OAJA,IACA,eACA,cAEA,CACA,4BACA,sBACA,mBACA,EACA,EACA,CACO,CACP,aACA,yBACA,aACA,WACA,WACA,OACA,CAAS,EAET,CACA,IAAa,GACb,GADkD,GAClD,CADsD,CAAmB,EACzE,qBAGA,0BACA,kCACA,2BACA,EAMA,gBALA,aACA,2BAAqC,EAAc,EAAE,MAAM,yBAE3D,GAGA,EACA,6BACA,+BACA,4BACA,MACA,OAEA,YACA,4BACA,QACA,GACA,2BAEA,yBACA,6BAEA,eACA,wDAEA,EACA,wBACA,gCACA,MACA,OAGA,QADA,uCAEA,SACA,4KAIA,6CACA,sCACA,eACA,CAAW,EAEX,+CACA,4DACA,gBAEA,EACA,wBACA,OACA,mCACA,gBACA,2BACA,6BAEA,CAAS,EACT,MACA,CACA,8BACA,EACA,qBAA2B,GAC3B,CAD+B,GAC/B,kDACA,QACA,SACA,uBAA8C,IAAS,KAEvD,QADA,KACA,CACA,SACA,CACA,QACA,CAAO,CACP,CACA,IAAa,GACb,GADkD,GAClD,CADsD,CAAiB,EACvE,qBAGA,iCACA,6BACA,gBAGA,OAAa,GACb,KACA,EACA,WACA,GAAqB,GAAY,YACjC,GACA,CAEA,EACA,mCACA,qBACA,wBACA,aACA,QACA,UAGA,WACA,OAEA,2DAGA,yBAFA,4HACA,EACA,KACA,EACA,sCACA,+CACA,gCACA,MACA,OAEA,qBACA,yBACA,eACA,4CACA,aACU,iDAGV,YAFA,WAKA,2DACA,UACA,aACA,yCACA,WACA,OACA,2BACA,oCACA,GAEA,EACA,SAEA,OACA,2BACA,wCACA,GAEA,EACA,CAEA,EACA,iDACA,8BACA,wDACA,4DACA,iCAEA,EACA,8BAAuC,sBAA4B,EAAI,IACvE,2BACA,oCACA,aACA,0EAGA,sDACA,mBACA,UACA,CAAO,CACP,EACA,uBAAmC,2BAAyC,EAAI,IAChF,+CACA,2BACA,oCACA,aACA,0EAGA,kCACA,aACA,WACA,wBAAqC,8BAA+B,EACpE,uDACA,+DAKA,GAJA,iCACA,uBACA,4BAEA,CACA,OAAmC,GACnC,SAD+C,aAC/C,OAEiB,GAAW,2BAC5B,4BAA0C,aAAiB,CAE3D,EAAY,IACZ,4BAAwC,aAAiB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2E,EAAAA,KAAAA,IAAAA,EAAE,SAAFA,EAAyBs1E,GAAE,WAAK3jG,GAAGsiG,EAAE,EAAE,EAAE,CAACtiG,EAAE,EAAE,IAAuCgsG,ED64F9gD,WC74FghDA,CD84FhhD,YACA,OAEA,IACA,SACA,CAAI,EACJ,WAzDA,GACA,IACA,UACA,eACA,WACA,CAAI,EACJ,OACA,EAAkB,QAAY,GAAG,EACjC,IAAmB,UAAc,KA/kEjC,YACA,cACA,OACA,UACA,KACA,uCACA,CAAK,CACL,QACA,4BACA,CAAK,CACL,SACA,MACA,2DACA,CACA,CACA,MAikEA,aAOA,MAAoD,UAAc,cAClE,eACA,+BACA,qBACA,OACA,QACA,SACA,QACA,CAAK,EACL,iBACA,CAAG,EACH,EAAe,SAAa,OAC5B,sBACA,EAAG,KACH,EAAmB,SAAa,OAChC,+BACA,0BACA,yBACA,CAAG,6BACH,OAAS,SAAa,OACtB,UACA,OACA,eACA,WACA,SACA,aACA,MACA,EAAG,eACH,EAaA,CACA,KACA,UACA,eACA,cACA,cAEA,CAAG,EACH,mBACA,aACA,MAA2C,UAAc,OACzD,MAAqD,UAAc,OAEnE,GADA,gCACA,EACA,EAA0B,QAAY,OACtC,OACA,QACA,GACA,aAEA,CAAG,MACH,MAAmB,SAAa,EAChC,KACA,UACA,KACA,OACA,WACA,CAAO,CAEP,CAAG,EACH,EAA+B,aAAiB,KAChD,MAAsC,SAAS,KAC/C,oDACA,gBACA,EAAM,EAGN,KACA,sBACA,CAAG,WACH,EAAuB,aAAiB,MAChC,SAAS,iBACjB,YACA,OAKQ,SAAS,6DAIjB,WAAsB,SAAS,MAC/B,sBAEA,CAAG,WACH,EAAe,SAAa,OAC5B,UACA,eACA,uBACA,cACA,EAAG,eACH,EAAmB,SAAa,OAChC,cACA,cACA,EAAG,iBACH,EAAkB,SAAa,OAC/B,KACA,KACA,OACA,WACA,QACA,EAAG,cAQH,OAPA,QACA,oCACA,0DACA,GACA,aAEA,CAAG,EACM,SAAa,OACtB,KACA,UACA,OACA,UACA,EAAG,WACH,EC1+FihD,CAACxhF,KAAKxqB,EAAEisG,U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2B,QAAK,EAChC,YACA,aACA,sBAA0C,QAAU,UACpD,KACS,EACT,GAA2B,QAAI,EAAG,KAA0B,EACpD,QAAI,EACZ,KACA,iBAAoB,6CAAkD,IACtE,IAAoB,kBAA2C,YAC/D,mBACA,kDAA0E,EAAe,KACzF,mDAA2E,EAAgB,KAC3F,+CAAuE,EAAY,KACnF,gDAAwE,EAAa,IACrF,CACA,CAAS,EACT,GAAiB,QAAe,EAAG,oBAAuC,EAC1E,cAA0B,gBAAyB,EACnD,GAA4B,QAAI,EAAG,gCAAuD,EAC1F,CACK,EACL,WACA,EAAyB,OAAc,IACnC,OAAe,MACnB,GACA,KAEA,CAAK,QACL,iBACA,aACA,6BACA,QAA8C,UAAc,GAI5D,MAHI,OAAe,MACnB,wCACA,CAAK,MACsB,SAAG,CAC9B,MACA,CACA,kBACA,uCACA,OACA,KACA,8CAEA,uBACA,UACA,mCACA,qBACA,qBACA,WAIA,6BACA,oBACA,oBACA,EACS,CACT,UACA,SAAkC,SAAG,CACrC,EACA,CACA,QACA,aACA,gBACA,SACA,SACA,mBACA,SAAsC,SAAG,CAC3B,IAAS,KACvB,CACA,cACA,eACA,KACA,MACA,OACA,WAGA,yBACA,CACA,EAEA,EAEA,EAEA,GAEA,gBACA,oBACA,GACA,aACA,aACA,aACA,YACA,EACA,EAAkB,YAAgB,eAClC,kBAAU,QAA+B,EACzC,SACA,kBACA,MAIoB,SAAG,CACvB,OACA,CACA,oBACA,OACA,oBACA,cACA,aACA,MACA,iBACA,OACA,YACA,kBACA,aACA,CAAW,eACX,WACA,uBACA,uDACA,wBACA,qDACA,CAAW,eACX,4CACA,CAAS,CACT,SAAkC,SAAG,CDjNrC,ECmNA,CACA,KACA,MACA,OACA,WAEA,eACA,CACA,EAEA,EAGA,CAAC,EAED,cACA,eACA,CAHA,gBAIA,WACA,uBACA,UACA,MACA,cAAY,4BAAmC,EAC/C,4BAEA,EADA,EACA,eACA,EAFA,EAEA,gBACA,WACA,GAA2B,mCAAyC,IACpE,sBACA,sBACA,KACA,KAcA,MAbA,cACA,EAVA,EAUA,KAA4C,EAAa,IAC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ACA,aACA,YACA,aACA,MACA,kBACA,UACA,eACA,iBACA,gBACA,SACA,MACA,oBACA,oBACA,aACA,oBACA,oBACA,aACA,qBACA,qBACA,cACA,oBACA,kBACA,kBACA,WACA,wBACA,wBACA,iBACA,wBACA,wBACA,iBACA,yBACA,yBACA,kBACA,uBACA,uBACA,wBACA,qBACA,sBACA,sBACA,eACA,oBACA,YACA,eACA,KACA,iBACA,QACA,MACA,QACA,UACA,SACA,OACA,WACA,QACA,MACA,OACA,MACA,kBACA,YACA,uBACA,SACA,kBACA,aACA,kBACA,WACA,eACA,aACA,OACA,SACA,YACA,eACA,WACA,YACA,eACA,oBACA,QACA,sBACA,kBACA,oBACA,mBACA,iBACA,gBACA,OACA,qBACA,WACA,QACA,QACA,eACA,eACA,QACA,kBACA,YACA,SACA,iBACA,UACA,YACA,mBACA,UACA,iBACA,SACA,OACA,YACA,cACA,eACA,WACA,UACA,mBACA,cACA,SACA,WACA,OACA,WACA,UACA,gBACA,OACA,cACA,oBACA,QACA,UACA,gBACA,gBACA,WACA,SACA,eACA,iBACA,WACA,UACA,aACA,WACA,YACA,OACA,SACA,kBACA,cACA,eACA,aACA,UACA,cACA,OACA,cACA,WACA,YACA,aACA,oBACA,gBACA,OACA,aACA,QACA,mBACA,MACA,YACA,QACA,SACA,QACA,cACA,cACA,OACA,OACA,OACA,gBACA,UACA,iBACA,iBACA,QACA,QACA,QACA,kBACA,cACA,oBACA,cACA,YACA,YACA,OACA,gBACA,OACA,eACA,YACA,UACA,yBACA,SACA,WACA,OACA,OACA,eACA,WACA,OACA,SACA,UACA,SACA,OACA,OACA,eACA,UACA,qBACA,UACA,YACA,OACA,gBACA,YACA,4BACA,cACA,UACA,aACA,SACA,QACA,SACA,QACA,gBACA,YACA,aACA,QACA,gBACA,WACA,UACA,aACA,aACA,oBACA,cACA,UACA,kBACA,eACA,eACA,UACA,eACA,QACA,oBACA,SACA,eACA,YACA,cACA,OACA,oBACA,mBACA,oBACA,SACA,WACA,cACA,OACA,QACA,QACA,eACA,iBACA,UACA,SACA,wBACA,0BACA,OACA,MACA,UACA,SACA,gBACA,gBACA,SACA,kBACA,YACA,SACA,UACA,aACA,SACA,UACA,SACA,YACA,eACA,gBACA,kBACA,iBACA,YACA,eACA,oBACA,eACA,OACA,UACA,OACA,SACA,WACA,QACA,WACA,SACA,kBACA,MACA,YACA,eACA,WACA,UACA,SACA,UACA,YACA,WACA,MACA,oBACA,mBACA,OACA,eACA,UACA,aACA,qBACA,cACA,YACA,OACA,eACA,WACA,SACA,WACA,UACA,YACA,QACA,YACA,SACA,UACA,aACA,SACA,SACA,cACA,WACA,cACA,UACA,mBACA,KACA,cACA,UACA,SACA,SACA,cACA,YACA,cACA,OACA,QACA,QACA,aACA,SACA,eACA,YACA,eACA,eACA,UACA,WACA,OACA,IACA,OACA,UACD,CAAU,EClUEo9G,EAAiB,IAAIp9G,IAAK,QAAGq9G,CApBxC,YACA,CAmBsD,SAlBtD,QACA,UACA,UACA,eACA,SACD,CAAU,EAeEC,EAAiB,IAAIt9G,IAAK,QAbZ,CACzB,YACA,CAWsD,OAVtD,UACA,qBACA,iBACA,mBACD,CAAU,EAQEu9G,EAAiB,IAAIv9G,IAAK,QANZ,CAAC,MAAO,OAMqB,QANN,CAAU,ECf/Cw9G,EAAmB,CAC9Bn0F,GAAI,KACJ7pC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJ,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,IACT,EAEMuhE,EAAY,6BAELu8D,EAAgB,GAAY,OAATv8D,EAAS,UAgDlC,SAAStoE,EAAK,CAQT,MAPVzF,EADmB,EACnBA,SAAAA,CACAna,EAFmB,EAEnBA,SAAAA,CACAjP,EAHmB,EAGnBA,IAAAA,CAAAA,EAHmB,EAInByvB,IAAAA,CACA5U,CADA4U,CAJmB,EAKnB5U,KAAAA,CAAAA,EALmB,EAMnB6U,OAAAA,CAAU,CAAVA,CANmB,EAOn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CA,uBACA,4BAEA,OADA,WACA,KACA,CAGA,CAHU,CAIV,CACA,MAA2B,SAAG,CAC9B,EACA,CACA,sBACA,OACA,WACA,MACA,MACA,wBACA,iBACA,SACA,cACA,OACA,SAAkC,SAAG,aAAwB,+BAAsD,SAAG,SAAoB,+BAAsD,SAAG,CACnM,EACA,CACA,kBACA,4BACA,KACA,MACA,cAA2B,OAAoB,sBAC/C,gBACA,CAAa,EACb,MACA,MACA,WACA,sBAvDA,YACA,MAobA,cACA,yBACA,8BACA,iBACA,mBACA,EAzbA,KACA,MACA,EAqDA,qBApDA,YACA,cACA,EAmDA,oBAlDA,WACA,2BACA,eACA,GACA,IACA,EA8CA,6BAAqE,UAAc,EACnF,qCAAoF,UAAc,EAClG,sBAA8B,cAAiC,IAC/D,OAEA,MADA,mBACA,8BAEA,YAGA,GAFA,IACA,EAHA,SAGA,EACA,GAAkE,UAAc,CAChF,CACA,CACA,EACA,CAAW,EAAG,CACd,EAEA,GAEA,gBACA,cACA,iBACA,gBACA,aACA,WACA,CAAC,EACD,EAAuB,YAAgB,CACvC,QACA,IACA,MACA,MACA,MACA,WACA,eACA,cACA,aACA,gBACA,KACA,CAAM,EACN,MAAgC,UAAc,OAC9C,EAAyB,OAAe,YACxC,EAAoB,QAAY,SAChC,EAAsB,QAAY,IAClC,YACA,eACA,cACA,2CAGA,KAFA,YACA,eAGA,OADA,YACA,WACA,CACA,MAA2B,SAAG,CAC9B,EACA,CACA,sBACA,2BACA,yBACA,iBACA,aACA,SAAkC,SAAG,CACrC,EACA,CACA,MACA,gCACA,KACA,MACA,OACA,WACA,mDACA,CAAa,CACb,iBACA,mBACA,MACA,CAAa,CACb,gBACA,mBACA,MACA,CAAa,CACb,gBACA,iBACA,KACA,CAAa,CACb,kBAEA,QADA,2BACA,iBACA,WAAgC,mBAAsC,CACtE,CACA,EAEA,EAEA,GAEA,EAAqB,YAAgB,CACrC,QACA,IACA,MACA,MACA,WACA,eACA,cACA,aACA,gBACA,KACA,CAAM,EACN,EAAsB,QAAY,OAClC,EAAgB,OAAe,MAC/B,EAAoB,QAAY,SAChC,KACA,cACA,mDAGA,KAFA,aACA,eAGA,OADA,YACA,UACA,CACA,MAA2B,SAAG,CAC9B,EACA,CACA,sBACA,2BACA,yBACA,cACA,iBACA,SAAkC,SAAG,CACrC,EACA,CACA,8BACA,KACA,MACA,OACA,WACA,kDACA,CAAa,CACb,iBACA,mBACA,MACA,CAAa,CACb,gBACA,mBACA,MACA,CAAa,CACb,gBACA,iBACA,KACA,CAAa,CACb,kBAEA,QADA,2BACA,iBACA,WAAgC,mBAAsC,CACtE,CACA,EAEA,EAEA,GAEA,EAAiB,YAAgB,CACjC,QACA,IACA,gBACA,eACA,cACA,aACA,gBACA,eACA,gBACA,KACA,CAAM,EACN,SACA,MAA2B,SAAG,CACxB,IAAS,MACf,CACA,KACA,MACA,UAAmB,OAAoB,iBACvC,gBACA,KACA,oBACY,eACZ,KACA,oBACY,8BACZ,KACA,mBAEA,CAAS,EACT,cAAuB,OAAoB,qBAC3C,eACA,iCACA,mBACA,gBACA,UAEA,IAEA,CAAS,EACT,cAAuB,OAAoB,qBAE3C,EADA,OACA,oCACA,CAAS,EACT,YAAqB,OAAoB,mBACzC,eACA,mCACA,qCACA,KAEA,CAAS,CACT,EAEA,GAEA,iBACA,GAAkB,YAAgB,CAClC,QACA,kBAAY,QAA+B,EAC3C,UACA,MAA2B,SAAG,CACxB,IAAS,MACf,CACA,qCACA,iCACA,KACA,KACA,EAEA,GAEA,kBACA,qBACA,GAAkB,YAAgB,CAClC,QACA,kBAAY,QAA+B,EAC3C,UACA,UACA,EAAgB,QAAY,OAC5B,EAAyB,OAAe,MACxC,kBACA,eACA,sBAEA,uBACA,qBACA,MAA2B,SAAG,CACxB,IAAS,MACf,CACA,iCACA,qCACA,KACA,MACA,OACA,WACA,oBACA,iBACA,CACA,EAEA,GAEA,kBACA,qBACA,GAAkB,YAAgB,CAClC,QACA,yBACA,MAA8B,UAAc,OAC5C,EAAyB,OAAe,YACxC,EAAkB,SAAa,CAC/B,6CACA,OAEA,MAA2B,SAAG,KAAoB,mBAAoC,CACtF,GAEA,GAAsB,YAAgB,CACtC,QAC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A,2CACA,GAEA,MAAiB,EAAO,GACxB,EADwB,CACxB,oBAAwC,OAAQ,EAAQ,KAAmB,CAAnB,CAExD,OADA,8DACA,GAEA,QACU,EAAgB,WAChB,EAAiB,CADD,CACC,SAC3B,IAD2B,SAC3B,aAEA,OADA,SACA,CACA,CAAK,EACL,UAIA,OACA,YACA,YACA,WACA,mBAEA,EACA,iBACA,QACU,EAAiB,EAAO,YACxB,EAAkB,EAAO,YACnC,CAD2B,KAC3B,CACA,WACA,mBAEA,EAQA,mBACA,aAA8B,MAC9B,IATA,EASA,GATA,EASA,EARA,eACA,oBACA,SACA,eACA,CAAK,KAKL,+BACA,MAGA,mBACA,GACQ,GAAO,uBAEf,EAyBA,mBAGA,IAFA,EAEA,EADA,8CACA,IACA,GACQ,GAAO,sBAEf,ECjGO,eACP,eACA,CAMO,mBACP,mCACA,ECJA,cACA,yDAKA,QACA,QACA,cACA,WACA,EACA,QACA,MACA,MAOA,iBACA,IACA,eACA,iBACA,CACA,EAIA,qBACA,WACA,IACA,GACA,WACA,WACA,+BACA,WAEM,eACN,SACA,OAEA,MACA,EAAM,IACN,KAEA,EAAI,iBACJ,GACA,mBAEA,CAeA,mBACA,OAAS,EAAiB,UAC1B,EAMA,GAP0B,WAQ1B,SACA,OACA,SACA,aACA,oBACA,cACA,WACA,eACA,iBACA,kBACA,4BACA,iCACA,8BAjBA,MADA,EAkBA,IAjBA,8BACA,iBACA,CAAG,CAeH,GACA,WACA,GACA,SAEA,CAEA,uCACA,MACA,IA3BA,EA2BA,mBAAwD,IAAU,iBAkClE,GAtBA,KAzFA,eAJA,WACA,QACA,CAEA,EAyFA,KACA,IAZA,WACA,IA7CA,GACA,KAEA,gBADA,GA2CA,YACA,SAEA,YACA,0BAEA,OADA,SACA,EACA,CAAS,EACT,4BACA,KAEA,CAxGA,OAA0B,GAAa,GAwGvC,OAxGuC,GAyGvC,IAA+B,IAAW,OAhD1C,mBACA,gBALA,SACA,0GACA,EAkD0C,EA/C1C,IACA,CAAG,GApCH,yBAkF0C,KAC1C,sBACA,QACA,SAEA,wBAEA,EAAuB,GAAe,MACtC,MADsC,O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B,mCAIA,CAFA,UAF8D,CAE9D,QAGA,sCAGA,QACA,CAEA,OACA,oBACA,mBACA,oBACA,wBAGA,8BACA,gCACA,gCACA,gCACA,6BACA,+BACA,6BAGA,8BACA,+BACA,8BACA,2BACA,8BACA,0BACA,8BAGA,mCACA,kCACA,8BACA,6BACA,iCACA,wBACA,kCAGA,+BACA,kCACA,oCAGA,cACA,oBACA,OAAW,IAAM,qBAGjB,sCACA,WACA,OAAW,IAAM,oBACjB,CAGA,CAEA,uBACA,GACA,WACA,eACA,eACA,aACA,cACA,cACA,cACA,SACA,UACA,UACA,UACA,UACA,EAKA,gBACA,SAkDA,OAjDA,sBACA,WAGA,CAHwD,EAGxD,uCACA,0BAGA,IAFA,gBAGA,IAFA,iBAGA,GACA,cACA,YACA,aAGA,CAFS,GAET,YACA,iBAIA,kBACA,gBAEA,CAGA,CAHM,EAGN,oCACA,0BAEA,iCACA,+BAEA,2BAEA,yBAQA,GAPA,MACA,cACA,YACA,YACA,QACA,EAEA,gBACA,0FAEA,CACA,CACA,CAAG,EACH,CACA,CAKA,WAIA,EAIA,EAIA,EAIA,GAIA,MAFA,MAEA,CAFmD,CAQnD,OAJA,EAFgD,CAGhD,SAGA,CACA,CAuBA,oBARA,IAUA,OACA,OAXA,EASA,0CATA,EASA,4BARA,EAQA,2BARA,MAQA,CARA,OAWA,2BAEA,CAEA,0CACA,mBACA,CAAC,EA2CD,cACA,WACA,IACA,qBACA,mBACA,CAwCA,kBAOA,OADA,WAFA,GADA,6BAFA,EAEA,KACA,EAEA,CAF+C,CAI/C,CAKA,MAZgD,GAYhD,OACA,cACA,QACA,SAEA,YACA,YACA,KACA,IACA,CAEA,aACA,YACA,QACA,sBACA,qBACA,CAEA,aACA,YAEA,QAEA,uBACA,sBACA,CAEA,OACA,QACA,KACA,CACA,CAEA,OACA,QACA,MACA,OACA,EAkLA,kBACA,gCACA,EAEA,aACA,kBAhUA,EAEA,CA+TA,cACA,mBACA,6BACA,iEACA,UAtlBA,EAulBA,2CACA,mBACA,gBAEA,uCA1UA,EA4UA,KA1UA,EADA,YA2UA,cA1UA,oBAEA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A,OArYA,6BACA,WAEA,0XAEA,iBACA,CAAK,CACL,EAEA,4BACA,yEACA,UACA,EAAM,CACN,6DACA,2DACA,4DACA,0DACA,EAEA,+BACA,MAEA,sDACA,gEACA,8DACA,+DACA,8DACA,8CACA,EAEA,gCACA,WAEA,IACA,oEACA,mDACA,iBACA,CAAO,EAEP,+BACA,CAAM,SACN,6EACA,CACA,EAEA,gCAOA,OAJA,yBACA,0CACA,yBACA,yCACA,EAQA,2BAGA,IAFA,EAEA,4BACA,OACA,OAEA,2BAGA,EAHmC,GAGnC,yDACA,iBAEA,IAF4B,GAE5B,+CAEA,EAOA,gCACA,oBAEA,yBACA,cACA,CAAK,CACL,EAQA,iCACA,WAGA,GADA,cAAsC,GACtC,YAEA,eACA,kCACA,GACA,uCAGA,2BACA,CAAO,EAIP,gBACA,EAQA,qCACA,iCACA,6BACA,EAMA,4BACA,6BAEA,8BAEA,CAF4C,CAE5C,yBAEA,CAF8C,CAE9C,yBAEA,CAFoD,CAEpD,wBACA,0BACA,QACA,SACA,eACA,aACA,CAAO,CACP,CAEA,+BAKA,OACA,MALA,iCAMA,OALA,mCAMA,aALA,eAMA,YALA,aAMA,CACA,EAMA,0BACA,+CACA,EAOA,oCACA,kDACA,EAYA,yBACA,sBAOA,4BACA,gBAA4C,IAC5C,2BACA,yCACK,GAaL,OAZA,6CACA,6DAEA,+BAKA,UAL6C,iBAK7C,IACA,cAGA,CACA,EAMA,gCACA,eACA,gDACA,eACA,EAAK,CACL,EAMA,uCACA,eACA,oDACA,SACA,iBAGA,CACA,EAAO,EAGP,aACA,EAMA,iCACA,IACA,EAMA,oBAGA,gCACA,OACA,OAEA,2BAEA,oBAEA,yBACA,cACA,CAAK,CACL,EAMA,oCAEA,mCAEA,cACA,6BACA,iBACA,QACA,SACA,cACA,eACA,iBACA,CAAK,EAEL,oBAEA,gCAEA,yBACA,cACA,CAAK,CACL,EAEA,uCACA,iBAEA,IAF0B,CAE1B,8BAGA,CAHwC,GAGxC,WACA,kCACA,WACA,CAAO,CAEP,EAEA,sCACA,WAEA,iBAEA,eACA,kCACA,+BACA,8BACA,wBACS,CACT,CAAO,EAIP,gCAEA,0BAEA,mBACA,EAMA,gCACA,oEAEA,eACA,6CACA,sBACA,WACA,CAAS,CACT,EAAO,EAGP,aACA,EAMA,+BACA,mEAEA,eACA,6CACA,sBACA,WACA,CAAS,CACT,EAAO,EAGP,aACA,EAMA,qBACA,mCAEA,eACA,kCACA,WACA,CAAO,EAIP,oBACA,EAEA,CACA,CAAC,cCr2CD,SAAS,IAeT,MAAS,CAdP,EAAQ,oBADO,IACP,GACV,GAaiB,CAdP,IACV,IAAoB,mBAAsB,KAC1C,mBAEA,eACA,2CACA,WAGA,CAEA,QACA,GAEiB,qBACjB,CASA,gBAMA,MALA,wCAEA,OADA,cACA,CACA,GAEA,IACA,CAEA,gBACA,oBACA,IAEA,IAFA,KACA,iBAGA,QAAc,WAAuB,IACrC,OACA,iBACA,YAGA,QACA,CASA,6TACA,cACA,IATA,EASA,aACA,WACA,cACA,aACA,YACA,WACA,qBACA,YACA,eACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,kCACA,qCACA,UACA,gBACA,kBACA,eACA,eACA,SA4BA,OACA,eA7DA,YADA,EAmCA,CACA,WACA,SACA,YACA,WACA,UACA,SACA,mBACA,UACA,aACA,SACA,UACA,UACA,UACA,QACA,SACA,SACA,SACA,gCACA,mCACA,QACA,cACA,gBACA,aACA,YACA,CAAG,EA3DH,oBACA,kCACG,EACH,GA2DA,MACA,CACA,CAcA,MAAmC,eAAmB,OAiBtD,cACA,MAhBA,WACA,MAA2B,gBAAU,IAGrC,GAFA,2BAGA,YAGA,MACA,oIAGA,QACA,IAIA,EAAY,YAAM,OAGlB,IADA,GACA,cAjCE,eAAS,YAGX,mBAA2C,EAE3C,gBAF6D,EAAE,KAF/D,QAIA,CA8BA,GA9BA,GACA,8FAEA,CAAG,EA2BH,EA3BG,EA6BH,MAAkB,cAAQ,GAC1B,OACA,OAkCA,CAlCiC,KAG/B,eAAS,YACX,MAEA,qCACA,OACA,aACA,OACA,EAEA,EADA,oCAEA,EAAM,IACN,8FAGA,kBACA,GACA,oCAEA,CACA,CAAG,KAED,CAFQ,EAER,YAAS,YACX,IACA,YACA,mCAGA,0CAGA,CAAG,yTACH,CACA,MACA,aACA,SACA,CACA,CAEA,cACA,WACA,kBACA,SAGA,EADA,KACA,IAEA,OAAS,eAAmB,sBAC5B,KACA,CAAG,eACH,CAEA,OACA,QACA,EA8CA,8DACA,GACA,oBACA,MACA,OACA,QACA,QACA,EACA,cACA,WACA,kBACA,SAEA,UACA,aAEA,WACA,SAEA,EA1BA,SACA,mCACA,4BACA,sBACA,EAAI,GAuBJ,EALA,cAKA,SAjEA,GACA,gCACA,MAA0B,EAAiB,iBAC3C,EAAwB,EAAiB,iBAEzC,gCACA,OACA,8BACA,gCACA,EAGA,+BAGA,IAFA,IAEA,2EAGA,OACA,IAHA,kCAGA,KACA,UAHA,+BAGA,IACA,CACA,CACA,CAEA,YAEA,mBADA,YAEA,OACA,WACA,aACA,CACA,CAEA,QACA,EA8BA,MACA,IAA6B,EAAQ,CACrC,8BADqC,iCAErC,EACA,CAAG,KACH,OAAS,eAAmB,sBAC5B,gBACA,UACA,MAAW,EAAQ,EAAG,SACtB,CAAG,eACH,EAEA,gCACA,GACA,oBACA,kBACA,YACA,EACA,cACA,MAAkB,cAAQ,OAC1B,OACA,OAEA,EAAqB,YAAM,OACzB,eAAS,YACX,YACA,CAAG,KAEH,cACA,WACA,kBACA,SAuCA,OAAS,eAAmB,sBAC5B,MACA,MAAW,EAAQ,EAAG,KACtB,CAAG,IAvCH,GACA,cAGA,oBACA,OAAiB,eAAmB,mBAAsC,IAC1E,gBACA,eACA,iBACA,CAAW,EACX,CAAS,EAIT,KAIA,EACa,UAAc,kCAG3B,OAFA,EAEA,mBACsB,cAAkB,CAHxC,EAGwC,CACxC,IAJ0B,UAI1B,CACA,CAAW,EAIX,CACA,CAAO,EAGP,KAOA,EAcA,cAGA,kBACA,EAhBA,EAwBA,MANA,yBACA,YAnBA,EAmBA,CACA,wBACA,kCACA,sBACK,CAnBL,aAFA,cAIW,EAAkB,QAG7B,MAeA,CACA,CAnB6B,EArV7B,wBA4VA,EA5VA,WACA,wBA2VA,EAzVA,EAyVA,KAcA,kBAsCA,OApCA,qCAEA,EAOA,EAMA,CAdA,6EAGA,iFAGA,uCACA,uBAGA,2DAGA,uBAGA,wDAGA,EAEA,kCAEA,yCACA,EAEA,oBACA,0BACA,OACM,eAAmB,aACzB,sBACO,GAEP,EAEA,CACA,CAAC,CAAC,WAAS,EACX,gBACA,WAAc,EAAU,mHCvaxB,UAEA,cACA,sBACA,EAEA,aACA,0CAGA,kBACA,wBACA,iCACA,IACA,wCACA,0CACA,MACA,sCAEA,MAAmB,OAAK,SACxB,4CACA,+CAEA,CACA,qBACA,wCACA,8LAEA,qCACA,eAEA,gFAEA,CACA,CAAM,SAEN,GADA,UACA,mBACA,YAEA,OAEA,CACA,EACA,gBACA,oBACA,oBACA,+BAEA,QACA,EAEA,KACA,gBACA,cACA,YACA,EACA,cAkBA,QAjBA,gBACA,sBACA,wBACA,eACA,UACA,4BACA,aAEA,oBACA,KAEA,mBACA,YAGA,CAAK,GACL,EACA,kBAAkD,IAAS,IAC3D,IAEA,EAEA,kBACA,aACA,eACA,eACA,OACA,MACA,CACA,+BACA,aACA,MACA,CACA,CACA,gBACA,OACA,oBACA,MACA,EACA,WACM,yFACN,uCAEA,IACA,CAAG,CACH,EAEA,kBACA,oBACA,MACA,EACA,KACM,yFACN,qCAEA,CAAG,CACH,EAEA,IAKA,KACA,KAEA,iCACA,0BACA,wDACA,OACA,8CACA,MACA,CACA,sBACA,yBACA,OACA,MACA,CACA,UACA,yBACA,QACA,kBACA,OACA,yBACA,OACA,KACA,MACA,CACA,IAwFA,EACA,EAzFA,uBACA,GACA,uBAEA,8BACA,GACA,0BAEA,8BACA,GACA,0BAEA,+BACA,GACA,2BAEA,yBAA2C,QAAa,CAAC,QAAa,CAAC,QAAa,sIACpF,0BACA,8BACA,GACA,0BAEA,6BACA,8CACA,oCACA,CAAK,EAML,GALA,2CACA,iBACA,8BAEA,CAAK,EACL,GACA,IAYA,EACA,EACA,EACA,EACA,EAhBA,GACA,uBACA,kCACA,kBACA,kBACA,iCACA,2DACA,cACA,QACA,0BACA,kCAOA,mCACA,IACA,OACA,+BA4BA,uBAAyD,IAAiB,KA3B1E,cAEA,GADA,WACA,KAnFA,IAqFA,2CACA,yCACA,uBAAgF,IAA2B,KAC3G,2BACA,8CAGA,kCACA,CACA,CAAW,EAGX,QAbA,EAWA,iCACA,KACA,eAAyD,IAAiB,KAC1E,oCACA,+BACA,YAEA,CACA,uBAAmD,IAAc,IACjE,mCAEA,UACA,EAEA,EAEA,CAAO,CACP,CACA,6BAKA,QAJA,+BACA,KAGA,eAAiD,IAAgB,IACjE,+BACA,oFACA,sCAEA,UAEA,qBAGA,kDACA,uBAA+D,IAAsB,IACrF,sBAEA,QACA,CACA,kCAOA,GANA,2CACA,iBACA,CAAK,EACL,uBArIA,8BAsIA,gCACA,KACA,eACA,yBACA,OACA,gCACA,MACA,CACA,+BACA,yBACA,OACA,SACA,CAAG,CACH,EAEA,gBACA,oBAA8B,EAC9B,aACA,wBAEA,EAAM,EACN,cACA,wBAEA,EAAM,EACN,eACA,wBAEA,EAAM,EACN,kBACA,gBACA,gBACA,uBACA,+BACA,gBACA,0BACA,gBACA,mBAEA,QADA,IACA,eAAyC,IAAO,IAChD,+BACA,OACA,iCACA,IAEA,CAAO,OAEH,EACJ,4BACA,OACA,KACA,MACA,CAAK,EAEL,IAEA,uBC7SA,gBACA,eACA,aACA,SAGA,eACA,eACA,SAGA,QACA,EAEA,gLACI,EAAY,6BACZ,EAAc,+BAClB,cACA,aAEA,QADA,EACA,kCAAwE,IAAa,IACrF,kBAcA,MAXA,CADA,0CACA,cACA,YACA,YACA,EACA,uBACA,gBACA,sBACA,yBACA,0BACA,gBACA,EACA,CACA,CACE,OAAc,MAChB,kBA4JA,OA3JA,uBACA,WAEA,+BA9CA,EADA,QADA,EAgDA,mBA/CA,mCACA,qBA8CA,MACA,IAjDA,EA8DA,EACA,EAdA,aACA,SACA,gBACA,+BACA,0BACA,QACA,UACA,oBAEA,qBACA,6BACA,4BACA,qBAGA,WAEA,CADA,2BAAmD,EAAY,IAC/D,oBAD+D,CACjB,GAC9C,uBAD0D,MACN,GACpD,yBADkE,CAClE,CAAkD,EAAY,KAE9D,mBAF8D,KAE9D,IACA,6BAEA,iBACA,gBACA,sDACA,kBAEA,GADA,cACA,eACA,KACA,MACA,CACA,sBACA,OACA,YACA,YACA,CACA,CAAS,YACT,IACA,CAAS,CACT,EAgDM,EAAW,GACjB,MADiB,IA/CjB,cACA,MACA,KACA,MACA,CAGA,cACA,sBACA,OACA,YACA,CACA,CAAW,YACX,IACA,IACA,CAAc,SACd,IACA,CACA,CAAW,CAEX,EA6BA,WA5BA,YAEA,GADA,6BACA,GACA,uCACA,GACA,iBAEA,oCACA,eACA,YACA,CACA,MACA,wCACA,GACA,iBAEA,qCACA,eACA,YACA,CACA,IACA,IACA,CAAU,SACV,IACA,CACA,EAIA,gBACA,cACA,6BACA,uBACA,CAAO,CACP,CACA,EACA,uBACA,KACA,gDACA,kEACA,0BAEA,EACA,+BACA,mBACA,gBACA,EACA,iCACA,WACA,EAAuB,OAAQ,GAAG,iBAClC,yBACA,qBACA,CAAO,YACP,cACA,aACA,CAAO,CAEP,EACA,kCACA,mBACA,gBACA,EACA,oBAEA,gBACA,kBACA,kBACA,OACA,cACA,iBACA,6BACA,gBACA,wBACA,MACA,QACA,kBACA,gBACA,EAAa,OAA6B,MAI1C,OAAwB,eAAmB,CAD3C,EACqD,OAAQ,GAAG,IAChE,qBACK,YACL,MAAa,EACb,WAAkB,CAClB,EAAM,EAAI,QAFe,IAEf,WADsB,CACtB,GAAmD,eAAmB,iCAAiE,eAAmB,SACpK,EACA,CACA,CAAC,CAAC,WAAe,EACjB,gBACA,0BAEA,CAAG,CACH,2BAEA,CAAG,CACH,QACA,oBACA,cACA,8BACA,aACA,mBAEA,CAAG,CACH,yBACA,SACA,mBACA,aACA,EACA,aACA,eAAkB,MAAc,CAChC,gBAAmB,MAAc,CACjC,KAAQ,QAAgB,CACxB,YAAe,OAAe,4BAC9B,SAAY,WAAmB,EAAE,MAAc,CAAE,QAAgB,CAAE,QAAgB,GACnF,2BAA8B,MAAc,CAC5C,QAAW,WAAmB,EAAE,MAAc,CAAE,QAAgB,CAAE,QAAgB,GAClF,QAAW,MAAc,CACzB,sBAAyB,MAAc,CACvC,IAAO,QAAgB,YACvB,MAAS,QAAgB,CACzB,gBAAmB,MAAc,CACjC,QAAW,OAAe,sBAC1B,gECrNO,gBACP,aAA8B,MAC9B,IAVO,EAUP,KAeA,MAfA,CAeA,WAfA,CAeA,IAfA,EAgBA,UAhBA,EACA,GAVA,UADO,EAWP,eARA,GACA,CAOA,GAPA,EAAsC,IAAtC,MAAsC,wBAEtC,GAMA,IACA,oBACA,CACA,SAEA,CAIA,QACA,CC7CA,MAA4B,UAAZ,CAShB,OARA,CADoB,CACpB,GADwB,IACxB,KAD4B,CAC5B,cACA,iCAAiD,IAAO,IAExD,aADA,eACA,2CACA,YAEA,QACA,GACA,qBACA,ECTA,MDYA,KCZe,MDaf,KCbsB,EAAC,EDavB,OACA,WACA,wBACA,4BACA,aDLA,ECKuB,QDLvB,ICKmC,KDJpB,GAAY,CCIQ,KDFnC,iBCEmC,GDFnC,OCEmC,IDEnC,GCDA,uBACA,sBDjBA,ECiBwC,QDjBxC,SCiByD,QDjBzD,gCCkBA,CAAS,oBAAuB,CAChC,CAuDA,OAtDA,6CACA,0BAGA,cAAuB,GAAY,oBACnC,EACA,oCACA,YAAwB,8BAAiC,IACzD,0BAEA,EACA,gCAGA,OAFA,aAAkC,MAClC,6BACe,EAAU,kBACzB,EACA,iCACA,aAAkC,MAClC,6BACA,SACA,0BACA,KAA6B,EAAU,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,iEEjEM,gBAOP,MANA,qBACA,KAEA,GACA,cAEA,CACA,CElBA,iCAAgE,iBAAqB,CAAG,WAAe,CACvG,cAeO,gBACP,IDLO,IACP,ECIA,GDLO,ECK6B,QDL7B,CCKe,CAAc,YACpC,CADoC,MACpC,sBAA6C,OAAO,EAAS,KAAkB,CAC/E,CAD6D,CDe7D,CApBA,EAAc,cAAQ,YAAe,OAErC,QAEA,WAEA,QACA,cACA,cACA,CAAa,CACb,mBACA,cACA,YACA,cACA,oBAEA,CAAa,CACJ,CACJ,CAAI,MAET,WACA,UCMA,OAnBA,aACA,eACA,MACA,iBACA,aACA,YACA,sBACA,UACoB,EAAS,QAEhB,EACb,sBACA,UACoB,EAAS,IAE7B,CAAa,CACb,CACA,UACA,CAAK,MACL,CACA,wEC3CA,cACA,QACA,CACA,gBACA,aAAiC,KACjC,SACA,KA0DA,MAzDA,CACA,gBACA,KACA,uHAEA,SACA,cAEA,CACA,CAAS,CACT,sBACA,aAEA,OADA,UACA,WACA,uBAAsD,aAAoB,CAC1E,CACA,CAAS,CACT,6BAEA,IADA,KACA,WACA,QACA,KACA,YACA,CACA,GACA,iBAAqC,YAAe,CACpD,kBAAsC,SAAgB,CAEtD,CAAS,CACT,yBACA,KACA,SACA,aACA,QACA,KACA,aACA,GACA,CACA,iBACA,QACA,KACA,YACA,EACA,aAAsC,kCACtC,IACA,GACA,iBACA,UACA,GACA,CAAiB,CACjB,mBAEA,OADA,cACA,CACA,CAAiB,CAEjB,CACA,CAEA,CACO,gBAEP,OADA,aAAiC,KACjC,MACA,CAEO,cACP,aAA8B,MAC9B,cAEA,OADA,UAAqB,QAAQ,EAAG,gBAAyB,IACzD,CACA,aCxEA,WACA,QACA,QACA,MACA,OACA,SACA,MACA,OACA,SACA,QACA,QACA,SACA,UACA,SACA,MACA,iBCpBA,OAOA,WACA,aAEA,QAAgB,gBAEhB,aAGA,QAFA,KAEA,IAAkB,mBAAsB,KACxC,mBACA,GACA,gBAOA,GACA,0CACA,SAGA,sBACA,SAGA,oBACA,uBAGA,4FACA,oBAGA,SAEA,eACA,mBACA,WAIA,QACA,EAjCA,IAEA,CAEA,QACA,CA8BA,uBACA,EAIA,EACA,QAGA,IAPA,CAQA,CAEkC,WAClC,YACA,aAKG,SAFsB,IAAE,WAC3B,QACA,EAAG,SAFoB,EAAE,CAEtB,gBAIH,CAAC,CAJG,mBCxEJ,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,mBACA,gEGbA,kBDEA,MCDA,ODCA,EDFA,WCEqB,CDFrB,EACA,aAAkB,OAAO,iBACzB,4BACA,eACA,6BACA,aAAoB,OAAO,YAC3B,gEACA,CACA,qCACA,EER2B,EDCN,UCDrB,GDEA,CCFc,SDEO,ICFM,CDEN,EAAO,UCFD,kCAC3B,QACA,cACA,gBACA,WACA,CAAG,UACH,+BCRA,aACA,wDACA,YAAoB,mBAAsB,KAC1C,mBACA,mBAA0B,sCAC1B,CACA,QACA,GAAG,qBACH,gDCRA,gBACA,0EACA,sBACA,EAAG,KACH,CCHA,gBACA,iEAAyE,EAAc,IACvF,SADuF,uCCFvF,gBACA,oBACA,SACA,sBAAyB,2BACzB,yBACA,WAEA,QACA,gDCRA,cAGA,iFACA,eACA,EAAI,YACJ,mGACA,EAAG,GACH,kKCLA,kBACA,IAYA,EAZA,CACA,YACA,WACA,CAAI,EACJ,EAAmB,QAAW,IAC9B,EAAwB,QAAgB,IACxC,EAAsB,QAAa,IACnC,EAAe,QAAO,IACtB,UACA,0BACA,4BACA,gBAEA,UACA,UACA,GACA,IACA,gBAEA,KACA,cACA,GACA,IACA,gBAEA,KACA,aACA,GACA,cACA,GACA,EACA,KACA,YACA,GACA,cACA,GACA,EACA,KACA,SACA,GACA,MACA,KACA,CACA,CACA,OAAU,QAAY,KACtB,YACA,oBACA,KACA,WACA,mBAEA,CACA,QACA,CASA,qBACA,IACA,qBACA,sBACA,gBACA,WACA,CAAI,EACJ,oBACA,0CACA,2BACA,YACA,WACA,UACA,CAAG,EACH,CACA,IACA,IACA,CAAI,SACJ,IACA,KACA,IACA,YAAkB,WAA4B,KAC9C,IACA,OACA,KACA,CAAM,KACN,CACA,IACA,IACA,OACA,QACA,CAAM,SACN,IACA,IACA,mBACA,YACA,WACA,iBACA,QACA,WACA,UACA,YACA,UACA,CACA,CAAK,EACL,cACA,cACA,GACA,KACA,KACA,QACA,IACA,CACA,EACA,WACA,IACA,qBACA,aACA,gBAEA,SACA,yCACA,YACA,WACA,UACA,CAAW,WAEX,CACA,IACA,IACA,CAAU,UAEV,KAEA,CACA,OACA,IACA,IACA,YACA,WACA,gBACA,CACA,EAUA,sBACA,KACA,aACA,OAEA,IACA,IACA,IACA,WACA,QACA,WACA,WACA,CAAI,EACJ,CACA,+BACA,0BACA,4BACA,iBACA,YACA,CAAM,QAAQ,MACd,EAAwB,QAAgB,IAExC,MADA,sCACA,GACA,EAA6B,QAAgB,0BAC7C,oKACA,WACA,eACA,UACA,CAAG,GACH,kBACA,IACA,IACA,uBACA,0BACI,YACJ,uEACA,mGACA,IACA,GACA,EAAI,EAIwB,QAAgB,wHAC5C,WACA,OACA,eACA,UACA,CAAG,KACH,OACA,4BACA,wCACA,gCACA,oCAEA,CAyTA,gBACA,OACA,mBACA,sBACA,yBACA,oBAEA,CACA,cACA,OAAS,IAAK,iBACd,CAiMA,sBACA,IACA,YACA,WACA,WACA,CAAI,EACJ,mDACA,EAAe,QAAO,IACtB,EAAoB,QAAY,IAChC,EAAgC,MAAX,QAAW,IAChC,kCACA,YACA,EAAmB,QAAQ,MAG3B,CACA,WACA,YACA,gBACA,CAAI,oBACJ,WACA,YACA,kBACA,EAAI,CACJ,uBACA,yBACA,+BAKA,OAHA,uBACA,qBAEA,GACA,MACA,KACA,EAAI,CACJ,MACA,KACA,CACA,eC1vBA,cACA,MAAc,QAAgB,IAG9B,yBACA,0BACA,EAAoB,QAAa,IACjC,oBACA,qBACA,EAAyB,QAAK,SAA2B,QAAK,QAK9D,OAJA,IACA,IACA,KAEA,CACA,QACA,SACA,GACA,CACA,CAEA,cACA,OAAU,OAAS,uBAGnB,cACA,WACA,IAAO,QAAa,IACpB,MAAW,QAAY,IAEvB,gCACA,CACA,QACA,SACA,IACA,CAAI,KACJ,KAAe,QAAK,qBACpB,KAAe,QAAK,uBAUpB,OANA,uBACA,MAEA,uBACA,MAEA,CACA,IACA,GACA,CACA,CAEA,MAA+B,QAAY,IAC3C,cACA,MAAc,QAAS,UAChB,QAAQ,qBAGf,CACA,8BACA,8BAJA,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,qFAAkT,QAAiB,kBA5BnU,OACA,MAAqB,QAAa,UAClC,UAAkC,QAAS,KAAgB,QAAqB,OAGvD,UAAhB,QAAgB,qBACzB,EAsBmU,MAGnU,qBAGA,IAEA,EAAkB,QAAa,GAC/B,CAEA,OADA,WACA,CACA,EAWgF,wBAChF,GACA,OACA,mBACA,eAKA,OAJA,MAAkB,QAAG,cACrB,QAAoB,QAAG,kBACvB,SAAqB,QAAG,oBACxB,OAAmB,QAAG,gBACtB,CACA,CAAG,WACH,OACA,qBACA,sBACA,SACA,QAEA,EAyHA,kBACA,kBACA,eArRA,YACA,qCACA,EAoRA,cA1HA,YACA,IACA,QACA,SACA,CAAI,KACJ,OACA,QACA,QACA,CACA,EAkHA,WACA,SAAW,MACX,MAdA,YACA,MAAyB,QAAhB,QAAgB,aACzB,CAaA,EAEA,gBACA,mEACA,CAkGA,wBA0CA,CAzCA,aACA,OAEA,IACA,oBACA,oBACA,kDACA,sDACA,oBACA,CAAI,EACJ,OACA,aAA0E,QAAoB,UAAwB,QAAoB,QAC1I,cACA,kCACA,UACA,CAAK,EACL,iCACA,CAAG,EACH,WAlHA,cACA,IACA,EADA,OAEA,EAAe,QAAkB,IACjC,aACA,MACA,gBACA,4BACA,MACA,CA2EA,OADA,SAzEA,OACA,YACA,OAEA,YACA,MAEA,IACA,gCACA,CACA,OACA,MACA,QACA,SACA,CAAM,EAIN,GAHA,GACA,IAEA,OACA,OAEA,MAAqB,QAAK,IAC1B,EAAuB,QAAK,sBAI5B,GACA,WAFA,mBAFwB,QAAK,uBAE7B,OADsB,QAAK,IAC3B,KAGA,UAAiB,QAAG,GAAI,QAAG,SAC3B,EACA,KACA,cACA,6BACA,UACA,MACA,WAEA,EAOA,QAJA,kBACA,UACA,CAAW,KAIX,CACA,uCAQA,IAEA,IACA,CAIA,IACA,8BACA,KAEA,qBACO,CACP,CAAM,SACN,+BACA,CACA,YACA,EACA,IACA,CACA,EA6BA,UACA,KACA,OACA,IACA,yBACA,SACA,qBAGA,eACA,wBACA,6BACA,KACA,0BACA,CAAS,GAET,GACA,CAAK,EACL,OACA,aAEA,cAGA,yBACA,GACA,SAEA,IACA,WACA,YACA,IAEA,IACA,0BACA,IACA,IACA,KACA,MACA,cACA,qCACA,oCACA,CAAK,EACL,aACA,4BACA,OACA,GACA,uBAEA,CACA,CAUA,IAAM,EAAiB,EASjB,ED2GN,YAIA,OAHA,CC5GY,GAAG,CATK,IDqHpB,CC5GuB,ED6GvB,MAEA,CACA,cACA,UACA,YACA,QACA,IACA,IACA,IACA,YACA,iBACA,CAAQ,EACR,sBAIA,kFACA,GAEA,CACA,QACA,QACA,MACA,KACA,WACA,CACA,CACA,CACA,CACA,EC5HM,EDmIN,YAIA,OAHA,GCpIc,EDoId,GCpIqB,CDoIrB,GACA,OAEA,CACA,aACA,UACA,YACA,IACA,IACA,IACA,YACA,CAAQ,EACR,CACA,cACA,eACA,WACA,OACA,IACA,IACA,IACA,CAAc,EACd,OACA,IACA,GACA,CACA,CACA,CAAS,CACT,KACA,CAAQ,CAAE,OAAQ,MAClB,GACA,IACA,GACA,EACA,eACA,EAAwB,QAAW,CAAC,QAAO,KAC3C,EAAuB,QAAe,IACtC,OACA,OACA,MACA,2BACA,2BACA,SACA,SACA,EAAwB,QAAK,OAC7B,CACA,MACA,2BACA,2BACA,SACA,SACA,EAAyB,QAAK,OAC9B,CACA,YACA,KACA,MACA,KACA,CAAO,EACP,OACA,KACA,MACA,QACA,QACA,SACA,MACA,KACA,CACA,CACA,CACA,CACA,CACA,EClMM,ED9RN,YAIA,MC0RU,CD7RV,EC6Ra,GD7Rb,CC6RmB,GD7RnB,GACA,OAEA,CACA,YACA,UACA,gBACA,IAqDA,IAyBA,EA7EA,IACA,YACA,iBACA,QACA,mBACA,WACA,WACA,CAAQ,EACR,CACA,cACA,eACA,qBACA,6BACA,mCACA,mBACA,KACA,CAAU,QAAQ,MAMlB,wCACA,SAEA,MAAmB,QAAO,IAC1B,EAA8B,QAAW,IACzC,EAA8B,QAAO,QACrC,mDACA,aAAsG,QAAoB,KAAsB,QAAqB,KACrK,YACA,QACA,UAAmC,QAAyB,WAE5D,eACA,eACA,KACA,4CAIA,GAHA,GACA,aAEA,GACA,MAAsB,QAAiB,QACvC,uBACA,CAOA,GANA,SACA,YACA,WACA,CAAO,EAGP,mBAEA,+CACA,OACA,KAEA,OACA,MACA,QACA,WACA,CAAa,CACb,OACA,WACA,CACA,EAKA,gHAGA,MACA,UACA,cACA,CAEA,4BACA,MACA,MAA4C,QAAW,cACvD,cAGA,OACA,CACA,QACA,CAAiB,+GACjB,GACA,MAEA,KACA,CACA,uBACA,GAEA,CAEA,SACA,OACA,OACA,WACA,CACA,CAEA,CACA,QACA,CACA,CACA,ECgLM,EDsQN,YAIA,MC1QU,CDuQV,ECvQa,GDuQb,CCvQmB,GDuQnB,GACA,OAEA,CACA,YACA,UACA,gBACA,QAmBA,EACA,EAnBA,IACA,YACA,QACA,WACA,WACA,CAAQ,EACR,CACA,cAAwB,CACxB,KACA,CAAQ,CAAE,OAAQ,MAClB,eACA,EAAmB,QAAO,IAC1B,EAAwB,QAAY,IACpC,EAAiC,MAAX,QAAW,IACjC,CACA,QACA,SACA,CAAQ,WAGR,yBACA,IACA,wFAEA,IACA,4BAEA,uBACA,mBACA,EAAsC,QAAG,WACzC,EAAqC,QAAG,WACxC,0BACA,IACA,IAOA,GANA,+CACA,MAEA,+CACA,MAEA,OACA,MAAqB,QAAG,WACxB,EAAqB,QAAG,YACxB,EAAqB,QAAG,UACxB,EAAqB,QAAG,aACxB,EACA,wBAAiF,QAAG,kBAEpF,wBAAmF,QAAG,iBAEtF,CACA,SACA,KACA,iBACA,iBACA,CAAO,EACP,+CACA,0BACA,CACA,OACA,QACA,CACA,EAEA,EACA,CACA,CACA,EC3UM,EDrKN,YAIA,MCiKU,CDpKV,ECoKa,GDpKb,CCoKmB,GDpKnB,GACA,OAEA,CACA,YACA,UACA,YACA,IACA,QACA,CAAQ,EACR,CACA,6BACA,KACA,CAAQ,CAAE,OAAQ,MAClB,UACA,sBACA,CAKA,QAJA,WACA,KACA,0BACA,CAAa,EACb,aACA,OACA,MACA,yBACA,oBACA,CACA,CACA,CACA,cACA,CAKA,QAJA,WACA,KACA,cACA,CAAa,EACb,YACA,OACA,MACA,iBACA,YACA,CACA,CACA,CACA,QAEA,QAEA,CACA,CACA,CACA,ECyHM,ED9eN,KACA,aACA,CC4eW,GAAG,ID5ed,CC4eqB,CD3erB,YACA,IACA,IACA,IACA,YACA,QACA,WACA,WACA,iBACA,CAAM,EAEN,CACA,UACA,YACA,CAAQ,QAAQ,UAChB,WACA,SAEA,MAA0B,QAAgB,IAC1C,GACA,IACA,GACA,EACA,EAAiB,QAAgB,IACjC,EAAmB,QAAa,IAChC,2BACA,UAGA,iCACA,mDACA,sBACA,8DACA,WAGA,oDACA,iCAMA,mBACA,EAAuB,QAAG,GAjB1B,eAiB0B,IAC1B,EAAuB,QAAG,GAjB1B,mBAiB0B,IAK1B,WACA,aAZA,UAaA,EAAmB,QAAK,CAHxB,EAGwB,KAMxB,YAAiE,MAAZ,QAAY,gCATjE,EASiE,cACjE,MAVA,EAUA,EAVA,EAUA,MACA,OACA,WACA,MACA,MACA,mBACA,OACA,iBACA,CAAS,CACF,CACP,OACA,CACA,CACA,CAAC,EC+aK,EDoKN,YAIA,OAHA,QCrKmB,CDqKnB,GACA,MCtK+B,CDwK/B,CACA,UACA,MACA,IACA,IACA,IACA,YACA,QACA,iBACA,CAAQ,EACR,CACA,WACA,cACA,eACA,CAAQ,CAAE,OAAQ,MAClB,GACA,IACA,GACA,EACA,EAAwB,QAAW,IACnC,EAAuB,QAAe,IACtC,OACA,OACA,EAAwB,QAAQ,MAChC,sBACA,WACA,WACA,EAAQ,CACR,WACA,YACA,MAEA,MACA,+BACA,0CACA,2CACA,IACA,IACU,KACV,KAEA,CACA,MACA,QACA,+BACA,0BAAsD,QAAO,KAC7D,0FACA,2FACA,KACA,IACU,KACV,KAEA,CACA,OACA,MACA,KACA,CACA,CACA,CACA,EC9NM,EAAe,UAIrB,cACA,GACA,EANqB,OAMrB,EACA,MAEA,GACA,cACA,IACA,EACA,OAAS,EAAiB,KAC1B,KACA,GAF0B,MAE1B,CACA,CAAG,CACH,sJCvuBA,+BAA8C,iBAAe,CAAG,WAAS,CAIzE,oBAUA,EACA,EACA,EAXA,SACA,SAEA,sBACA,SAEA,qDACA,SAKA,6BACA,qBAEA,GADA,eACA,kBACA,QAAuB,EAAU,CAAV,KACvB,iBACA,SAGA,QACA,CAGA,GADA,GADA,mBACA,UACA,sBACA,SAEA,QAAqB,EAAU,CAAV,KACrB,QAAa,6BACb,SAGA,QAAqB,EAAU,OAC/B,WACA,gCAGA,cACA,QAEA,CACA,QACA,CACA,iBACA,CAEA,oBACA,2BACA,EAEA,sCACA,mBACA,CAEA,gBACA,WACA,wBACA,CAEA,cACA,MAAc,QAAY,IAI1B,OAHA,OACA,WACA,CAAG,EACH,CACA,CAMA,cACA,YACA,OAEA,IACA,qBACA,sBACA,gBACA,WACA,UACA,YACA,WACA,CAAM,EAAI,CACV,eACA,uBACA,OACA,CAAI,EACJ,MAA0B,UAAc,EACxC,IACA,IACA,WACA,YACA,iBAAsB,CACtB,eACA,CAAG,EACH,MAAkD,UAAc,IAChE,QACA,KAEA,SAAsC,UAAc,OACpD,MAAoC,UAAc,OAClD,EAAuB,aAAiB,KACxC,gBACA,YACA,KAEA,CAAG,KACH,EAAsB,aAAiB,KACvC,gBACA,YACA,KAEA,CAAG,KACH,OACA,OACA,EAAuB,QAAY,OACnC,EAAsB,QAAY,OAClC,EAAkB,QAAY,IAC9B,UACA,OACA,OACA,OACA,EAAiB,aAAiB,MAClC,0BACA,OAEA,OACA,YACA,WACA,YACA,CACA,YACA,uBAEI,QAAe,iCACnB,OACA,KAKA,4BAEA,8BACA,YACQ,WAAkB,MAC1B,IACA,CAAS,EAET,CAAK,CACL,CAAG,cACH,OACA,iCACA,0BACA,OACA,KACA,eACA,EAAO,EAEP,CAAG,MACH,MAAuB,QAAY,KACnC,OACA,aACA,KACA,YACA,GACG,IACH,OAGA,GAFA,iBACA,iBACA,MACA,aACA,wBAEA,GACA,CACA,CAAG,cACH,MAAe,SAAa,OAC5B,YACA,WACA,eACA,aACA,EAAG,QACH,EAAmB,SAAa,OAChC,YACA,UACA,EAAG,QACH,EAAyB,SAAa,MACtC,OACA,WACA,OACA,KACA,EACA,eACA,SAEA,wBACA,2BACA,EACA,CACA,KACA,wCACA,wBACA,sBACA,CAAS,EAGT,CACA,WACA,OACA,KACA,CACA,CAAG,2BACH,OAAS,SAAa,OACtB,KACA,SACA,OACA,WACA,gBACA,EAAG,aACH,CAQA,SAIA,EACA,aACA,UACA,MACA,IACA,UACA,UACA,CAAQ,mCACR,GAVA,IAAa,qBAUb,EAVa,WAWb,gBACiB,QAAO,EACxB,kBACA,SACA,CAAW,QAEX,GAEA,EACe,QAAO,EACtB,UACA,SACA,CAAS,QAET,EACA,CACA,GAUA,WACA,GAAK,QAAQ,IACb,cACA,CAAC,CAOD,WACA,GAAK,QAAO,IACZ,cACA,CAAC,CAKD,WACA,GAAK,QAAY,IACjB,cACA,CAAC,CAQD,WACA,GAAK,QAAM,IACX,cACA,CAAC,CAQD,WACA,GAAK,QAAM,IACX,cACA,CAAC,CAkBD,WACA,GAAK,QAAM,IACX,cACA,CAAC,CAkBD,WACA,QACA,cACA,CAAC,8BC7WD,aACA,gCACA,CACA,qBACA,KACA,+BAKA,WACA,CACA,cACA,MACA,uEACA,CACA,cACA,MACA,6FAEA,oBACA,OAGA,2CACA,CACA,oBACA,OAGA,iDACA,CACA,oBACA,OAGA,yDACA,CACA,oBACA,uCAGA,uDACA,CACA,cACA,IACA,WACA,YACA,YACA,UACA,CAAI,KACJ,uFACA,CACA,cACA,wCACA,CACA,cACA,0CACA,IACA,mBACA,CAAM,SACN,QACA,CACA,CAAG,CACH,CACA,cACA,UACA,cAIA,yZACA,CACA,cACA,WACA,mBACA,QACA,SACM,QACN,MAEA,MACA,CACA,WACA,CACA,mBACA,yCACA,8CACA,CACA,cACA,gDACA,CACA,cACA,+BACA,CACA,qBACA,KACA,CACA,wBACA,uBAGA,CACA,qBACA,oBAEA,CACA,cACA,iBACA,SAEA,MAEA,gBAEA,cAEA,cAEA,KACA,oBACA,CA4BA,cACA,oEACA,6IAnBA,kBACA,KACA,aACA,OAEA,YACA,OAEA,eAlBA,KACA,kBACA,KACA,4CAEA,WACA,EAEA,IACA,EASA,GACA,gDACA,OACA,MACA,WACA,8DACA,CACA,4BACA,iPC/IA,sCAGA,WACA,WACA,aACA,aACA,OACA,IACA,IACA,CAAC,CACD,GACA,aACA,aACA,aACA,YACA,EACA,GACA,YACA,WACA,EACA,kBACA,kBACA,CACA,gBACA,iCACA,CACA,cACA,sBACA,CACA,cACA,uBAEA,cACA,qBACA,CACA,cACA,8BACA,CACA,cACA,6CACA,CACA,cACA,cACA,CACA,kBACA,YACA,OAEA,WACA,OACA,OACA,0EAIA,OAHA,8BACA,SAEA,SAEA,cACA,WACA,oBAEA,cACA,sCACA,CAkBA,oBACA,WACA,EAnBA,gBACA,uBACA,mBAGA,UACA,UACA,aACA,kBACA,YACA,YACA,YACA,SATA,iBACA,gBASA,SACA,SAEA,EAGA,oBAOA,OANA,IACA,oBACA,GACA,wBAGA,CACA,CACA,cACA,kDACA,CAUA,cACA,yBATA,CACA,MACA,QACA,SACA,OACA,GAIA,CAHA,EAGA,CACA,MACA,QACA,SACA,MACA,CACA,CACA,cACA,IACA,IACA,IACA,QACA,SACA,CAAI,EACJ,OACA,QACA,SACA,MACA,OACA,UACA,WACA,IACA,GACA,CACA,gCCtIA,yCAAuE,MAAkC,EAAI,EAC7G,mBAEA,GADA,OACA,4BACA,aAEA,CACA,2HCAA,cACA,6BACA,MAA2D,OAAkB,IAC7E,QACA,EACA,CAAM,eAAiB,aAAe,mBAEtC,MACA,UAAY,cAAkB,EAC9B,EAAgB,QAAY,OAC5B,EAAoB,QAAY,kBAChC,MAA2B,SAAG,UAA2B,uCAA8C,CACvG,CACA,iBACA,yBACA,EAAyB,YAAgB,CACzC,QACA,UAAc,cAAkB,EAChC,SACA,EAA2B,OAAe,oBAC1C,MAA6B,SAAG,CAAC,IAAI,EAAI,iBAA6B,CACtE,EAEA,iBACA,6BACA,+BACA,EAA6B,YAAgB,CAC7C,QACA,UAAc,mBAA+B,EAC7C,EAAkB,QAAY,OAC9B,EAA2B,OAAe,MAC1C,SAKA,OAJM,WAAe,MACrB,iBAAmC,WAAkB,EACrD,+BAE6B,SAAG,CAAC,IAAI,EAAS,CAAL,EAAK,IAAsB,iBAA+B,CACnG,UAEA,gBAeA,CACA,CAAM,6BAAkF,CAfxF,YACA,kCAWA,OAVqB,aAAiB,MACtC,8BACA,eACA,wCAA0E,EAAe,KAKzF,OAJA,+BACA,KACA,yDAGA,CAAK,6BAEL,EAIA,EACA,wEChEA,gBACA,wBACA,kBACI,GACJ,aAEA,CACA,iBACA,WACA,SACA,YACA,aAIA,OAHA,yBACA,OAEA,CACA,CAAK,EACL,KACA,WACA,YAAwB,WAAqB,KAC7C,WACA,qBACA,IAEA,YAEA,CACA,CAEA,CACA,CACA,iBACA,OAAS,aAAiB,WAC1B,mFChCA,gBACA,MAAkB,eAAmB,IACrC,MACA,aAAY,QAAuB,EACnC,EAAkB,SAAa,yBAC/B,MAA2B,SAAG,mBAAqB,aAAiB,CACpE,SACA,2BAOA,GANA,YACA,MAAoB,YAAgB,IACpC,cACA,sBACA,kBAAyB,EAAa,2BAA2B,EAAkB,IACnF,EACA,CAEA,mBACA,SAqBA,OACA,eACa,eAAmB,KAEhC,mBACA,gBACA,OAAa,SAAa,CAC1B,MAAiB,WAAW,EAAU,IAAM,aAAmC,CAC/E,MAEA,CACA,EAEA,OADA,cACA,CAjCA,cACA,MAAwB,eAAmB,IAC3C,WACA,WACA,UACA,UAAc,mBAA8B,EAC5C,iBACA,EAAoB,SAAa,yBACjC,MAA6B,SAAG,mBAAqB,aAAiB,CACtE,SACA,2BAQA,GAPA,cACA,qBACA,EAAsB,YAAgB,IACtC,cACA,sBACA,kBAA2B,EAAa,2BAA2B,EAAkB,IACrF,EAEA,EAcA,SAEA,MACA,WACA,yBACA,WACA,iBACA,aACA,qBACA,EAAK,EACL,mBACA,4BAA2D,cAAqB,IAEhF,MADA,IACA,WAAkD,EAAU,GAC5D,OAAiB,UACjB,CAAO,GAAI,EACX,OAAa,SAAa,OAAU,WAAW,YAAoB,MAAgB,KACnF,CACA,EAEA,OADA,wBACA,CACA,EArBA,kFCnDA,MAAuB,eAAmB,SAK1C,cACA,MAAoB,YAAgB,IACpC,kBACA,qDEGA,oEAHA,4BAIA,EAA8B,eAAmB,EACjD,eACA,+CACA,gBACA,CAAC,EACD,EAAuB,YAAgB,CACvC,QACA,IACA,iCACA,kBACA,uBACA,iBACA,oBACA,YACA,KACA,CAAM,EACN,EAAoB,YAAgB,IACpC,MAA4B,UAAc,OAC1C,yCACA,KAAsB,UAAc,GAAG,EACvC,EAAyB,OAAe,YACxC,uBACA,4DACA,eACA,oBACA,kDACA,OACA,WA4FA,0BACA,MAAmC,OAAc,IACjD,EAAsC,QAAY,KAClD,EAAyB,QAAY,MACrC,CAAG,EAmCH,OAlCE,WAAe,MACjB,UACA,yBACA,iBACA,EAnIA,sCAqIA,EACA,EACA,CAAc,aAEd,EAEA,GAA8B,gBAC9B,0BACA,yCACA,YACA,sCAA4E,QAAY,GAExF,GAEA,EAAQ,IACR,wCAEA,aACA,EACA,yBACA,mCACA,CAAK,IACL,WACA,uBACA,uCACA,wCACA,CACA,CAAG,QACH,CAEA,qCACA,CACA,EAvIA,IACA,eACA,0CACA,OACA,OACA,OACA,0BACA,CAAK,IACL,WAgIA,0BACA,MAA6B,OAAc,IAC3C,EAAoC,QAAY,KAahD,OAZE,WAAe,MACjB,UACA,sBAEA,EA5KA,gCA4KA,EADA,CAA8B,iBAC9B,CACA,WACA,CAAS,CAET,EAEA,OADA,gCACA,sCACA,CAAG,QACH,CACA,gCACA,8BACA,CACA,EAnJA,IACA,eACA,yCAEA,OACA,OACA,0BACA,CAAK,IAwCL,OAvCI,SDvDJ,OCuDoB,SDvDpB,UACA,MAA0B,OAAc,IACtC,WAAe,MACjB,UACA,kBACA,IAEA,EAEA,OADA,gCAA+D,WAAe,EAC9E,uCAA+E,WAAe,CAC9F,CAAG,OACH,EC4CoB,IACpB,sBAEA,OACA,yBACA,mBACA,KAEA,CAAK,IACD,WAAe,MACnB,KAUA,OATA,IACA,oDACA,6BACA,mCAEA,iDAEA,gBACA,IACA,KACA,sDACA,8BAEA,CACA,CAAK,YACD,WAAe,KACnB,KACA,IACA,mBACA,mDACA,IACA,EACK,OACD,WAAe,MACnB,cAAyC,EAEzC,OADA,+BACA,qCACA,CAAK,KACsB,SAAG,CACxB,IAAS,KACf,CACA,KACA,MACA,OACA,uCACA,WACS,CACT,eAAwB,OAAoB,oCAC5C,cAAuB,OAAoB,kCAC3C,qBAA8B,OAAoB,CAClD,uBACA,uBA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AlCM,YAAgB,QACzB,SACA,EACG,IAgGH,OAhEE,WAAgB,MAClB,kBACA,iCACA,CAAG,MACD,OAAe,MACjB,gBACA,YAEA,GADA,MACA,CACA,gBACA,OACA,EACA,WACQ,gCACR,aAGA,GADA,MAEA,mBAEA,aAGA,WACA,CACA,CAAG,QACD,OAAe,MACjB,UACA,EACA,0CACA,MAEA,QADA,WACA,0BACA,qBACA,mBACA,aACA,gCACA,qCACA,oBACA,wCACA,6BAEA,CAAa,CACb,CAEA,EACA,MACA,cACA,wBAEA,EAIA,OAHA,uCACA,wCACA,qCACA,KACA,kBACA,0CACA,2CACA,uCACA,CACA,CACA,CADM,CACN,gBAEA,CAAG,QACH,CACA,qDACA,IAAS,aAAkB,KAC3B,mCACA,IACA,CAAK,IACL,CACA,EAjGA,GACA,0BAA4D,oBAA6B,EAAI,UAAe,SAC5G,EAAc,OAAe,gBAmG7B,GACA,0DACA,mDACA,EACA,MAGA,GADA,mDACA,wCAEA,YAEA,oBA9G6B,IAE7B,kBADA,UACA,YAA4C,cAAmB,QAAU,EAAK,MAC9E,EA6FA,cACA,+BACA,CA9FA,kICFA,EAlBA,CACA,IACA,SACA,MACA,OACA,KACA,KACA,MACA,QACA,QACA,KACA,MACA,KACA,IACA,OACA,MACA,KACA,CACA,eACA,MAAe,YAAgB,SAC/B,YAAY,QAA6B,EACzC,IAA2B,IAAI,GAI/B,MAHA,4BACA,oCAE2B,SAAG,IAAS,WAAsC,CAC7E,CAAG,EAEH,OADA,2BAAkC,EAAK,EACvC,CAAW,WACX,CAAC,GAAI,EACL,gBACA,GAAc,WAAkB,wBAChC,uFCjCA,EAAW,YAAgB,SAC3B,aAAU,QAAyB,EACnC,EAAwB,UAAc,YACtC,YACA,MACA,uBACA,WACA,MAIA,EAHA,EAAY,QAAc,YAA+B,UAAc,YACxD,gBAAoB,2BAKnC,MAA2B,SAAG,IAAc,oBAA2C,gBAAoB,IAAe,cAAkB,kBAA0C,CACtL,CACA,MAAyB,SAAG,IAAc,sBAA2C,CACrF,CAAC,EACD,qBACA,MAAgB,YAAgB,SAChC,aAAU,QAAyB,EACnC,GAAM,gBAAoB,KAC1B,eAuCA,GACA,0DACA,mDACA,EACA,MAGA,GADA,mDACA,wCAEA,YAEA,kBACA,EAnDA,GACA,WAeA,KACA,OAA0B,MAC1B,gBACA,WACA,OACA,mBAEA,KACA,cACA,QACA,OACA,EACQ,GACR,SAEM,YACN,MAAkC,WAC5B,iBACN,sCAEA,CACA,OAAW,UACX,EArCA,WAIA,OAHA,SAA0B,UAAc,EACxC,SAAkC,OAAW,SAElC,cAAkB,KAC7B,CACA,OAAS,UAAc,YAAuB,UAAc,gBAC5D,CAAC,EACD,0BACA,iBAAmB,EAAU,GACJ,SAAG,CAAC,UAAS,WAAI,EAAU,EAEpD,cACA,OAAS,gBAAoB,eAC7B,gECvCA,cACA,MAAsB,QAAY,IAIlC,OAHE,WAAe,MACjB,WACA,CAAG,EACM,SAAa,kCACtB,0ECLA,YACA,OACA,cACA,gBACA,EACC,EACD,kBAkBA,CACA,cACA,WACC,EACD,MAA4B,UAAc,IAC1C,MACA,EAAuB,QAAY,IACnC,EAAuB,OAAc,IAOrC,OANE,WAAe,MACjB,gBACA,KACA,YAEA,CAAG,UACH,CACA,EAjCA,aAAyE,aAAuB,EAChG,aACA,QACA,EAAuB,OAAc,IAarC,SAZmB,aAAiB,CACpC,IACA,MAEA,2BADA,EACA,KACA,WACA,EAAQ,IACR,IAEA,CAAK,CACL,WAGA,gECxBA,uBAAuD,iBAAqB,MAC5E,2ECAA,cACA,SAA0B,UAAc,SA+BxC,MA9BE,OAAe,MACjB,MACA,GAAgB,0CAA0D,EAC1E,iCAQA,EACA,EARA,sBAGA,UAFA,OAKA,WAGA,wBACA,sBACA,0BACA,eACA,eACU,IACV,gBACA,iBAEA,SAAkB,WAAe,CACjC,CAAO,EAEP,OADA,aAAwC,iBAAmB,EAC3D,kBACA,CACA,CADM,CACN,OAEA,CAAG,MACH,CACA,2EC0BA,MA3DA,cAAiC,GAAY,CAC7C,EACA,GACA,iBACA,CACA,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,GACA,cACA,GACA,QACA,6BACA,wBACA,WACA,wBACA,2BACA,iBACA,CACA,cACA,eACA,sCACA,CACA,WACA,wBACA,CACA,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,iBA3EA,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,KACA,KACA,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,cACA,CACA,yGCxCA,gBAA0B,GAAS,CACnC,IACA,GACA,GACA,CACA,KACA,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,0BACA,CACA,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,CACA,CACA,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,CACA,CACA,iGCnWA,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,mBACA,EACA,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,IAAyB,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,eACA,YACA,eACA,CACA,cACA,wBAAsC,4BAAqC,SAE3E,cACA,wBAAyC,sBAA+B,SAExE,gBACA,gCAA+C,WAAU,EACzD,2CACA,CACA,mBACA,oCACA,cACA,yBACA,EACA,kCACA,wBAIA,OAHA,qCAA2D,QAAgB,kBAC3E,sBAEA,kBACA,CACA,CACA,kBACA,yCAAoD,UAAiB,GAErE,GADA,OACA,CAEA,CACA,oBACA,yCAAwD,EAAU,EAClE,cACA,aAEA,gBACA,EAAiB,QAAgB,MACjC,cAGA,wCAA0E,eAA0B,CACpG,CACA,sBACA,OAAW,GAAa,OACxB,sCAAqD,EAAU,IAC/D,EACA,yBACA,EAEA,CACA,iBACA,yCAA+C,EAAU,EACzD,sCACA,CACA,iBACA,cACI,GAAa,YACjB,yBACA,WACA,CAAO,CACP,CAAK,CACL,CACA,kBACA,cACA,GACA,cACA,MAEA,OAAW,GAAa,YACxB,yBACA,SACA,CAAO,EACP,0BAEA,CACA,kBAA4B,KAAoB,EAChD,OAAqC,gBAIrC,mBAHqB,GAAa,OAClC,6CAEA,KAAsC,IAAI,QAAQ,IAAI,CACtD,CACA,sBAAgC,KAAc,EAC9C,OAAW,GAAa,YAIxB,GAHA,+BACA,cACA,CAAO,EACP,uBACA,yBAEA,OACA,KACA,oCACA,EACA,+BACA,CAAK,CACL,CACA,mBAA6B,IAC7B,OACA,KACA,kCACA,EAUA,mBATqB,GAAa,OAClC,0DACA,wBAIA,OAHA,gBACA,WAAkC,KAAI,EAEtC,kDACA,CAAO,IAEP,KAAsC,IAAI,CAC1C,CACA,cACA,iCACA,mBACA,aAEA,4BACA,uBACM,QAAgB,iBACtB,wCACA,CACA,iBACA,+BAAyC,IAAI,QAAQ,IAAI,CACzD,CACA,sBAEA,OADA,WAAuB,EAAqB,SAC5C,UAD4C,KAC5C,GACA,CACA,yBACA,uCAAiD,IAAI,QAAQ,IAAI,CACjE,CACA,2BAEA,OADA,WAAuB,EAAqB,SAC5C,UAD4C,UAC5C,GACA,CACA,+BACA,EAAQ,CAAa,YACrB,gCAEA,iBACA,CACA,gBACA,eAEA,mBACA,eAEA,oBACA,eAEA,qBACA,SACA,CACA,sBACA,YAA4B,QAAO,KACnC,WACA,gBACA,CAAK,CACL,CACA,oBACA,4BACA,KAMA,OALA,cACU,QAAe,gBACzB,IAAmB,0BAEnB,CAAK,EACL,CACA,CACA,yBACA,YAA+B,QAAO,KACtC,cACA,gBACA,CAAK,CACL,CACA,uBACA,4BACA,KAMA,OALA,cACU,QAAe,mBACzB,IAAmB,0BAEnB,CAAK,EACL,CACA,CACA,uBACA,gBACA,SAEA,OACA,mBACA,qCACA,KACA,aACA,EAmBA,OAlBA,aACA,aAAmC,QAAqB,CACxD,WACA,EACA,EAEA,+BACA,gDAEA,yBACA,8BAEA,6BACA,+BAEA,4BAA0E,IAAS,EACnF,eAEA,CACA,CACA,iCACA,cACA,EAEA,CACA,qBACA,2DACA,KACA,aACA,CACA,CACA,QACA,gBACA,eACA,CACA,4GCnRA,gBAAkC,GAAY,CAC9C,iBACA,QACA,eACA,UACA,aACA,mBACA,kBACA,CACA,IACA,UACA,UACA,UACA,GACA,GACA,GACA,GACA,GAGA,GACA,GACA,GACA,GACA,UACA,cACA,oCACA,CACA,cACA,0BACA,0BACA,wBACA,UAEA,oBAEA,UAEA,CACA,gBACA,qBACA,cAEA,CACA,yBACA,SACA,QACA,aACA,gCAEA,CACA,2BACA,SACA,QACA,aACA,kCAEA,CACA,UACA,uBACA,UACA,UACA,4BACA,CACA,gBACA,mBACA,UAEA,GADA,4CACA,iIAA6I,QAAc,+BAC3J,YACA,yEAGA,UACA,iCACA,eAAmC,QAAmB,kBACtD,gCACA,8BACA,cACA,cACO,EAEP,0BACA,KACA,QACA,EACA,aACA,IAEA,UAEA,qBACA,iBAAwD,QAAc,iCAA+C,QAAc,qBAA6C,QAAgB,mCAAiD,QAAgB,wBACjQ,UAEA,gBACA,iBAAwD,QAAc,iCAA+C,QAAc,mCACnI,UAEA,CACA,uBACA,+CACA,yBAMA,MAoTO,QAAmB,CAzT1B,KAyT0B,mBAzT1B,KACA,UACA,qBACA,uBAEA,CACA,CACA,mBACA,eAEA,iBACA,SAYA,OAXA,2BACA,2BACA,gBACA,cACA,SACA,kBACA,OACA,KAEA,CAAO,CACP,CAAK,EACL,CACA,CACA,aACA,cACA,CACA,kBACA,eAEA,SAAY,MAAa,EAAI,EAC7B,mBACA,KACK,CACL,CACA,mBACA,qCACA,2CAEA,OADA,0BACA,0CACA,CACA,SACA,gBACA,KACA,iCACA,CAAK,YACL,oBACA,SAEA,CACA,MACA,UACA,oBACA,aACA,GAKA,OAHA,iBACA,WAA8B,IAAI,GAElC,CACA,CACA,KACA,UACA,MAAsB,QAAgB,CACtC,uBACA,SAEA,GAAQ,IAAQ,oBAAoC,QAAc,IAClE,OAEA,MAAiB,QAAc,yBAE/B,yBACA,iBACA,mBAEA,CAAK,CALL,IAMA,CACA,KACA,8HACA,CACA,MACA,UACA,WACQ,IAAQ,EAAkB,KAAd,QAAc,gCAAyD,QAAc,wBAGzG,0BACA,2CAAsD,GAAY,eAClE,SAEA,CAAK,UACL,CACA,KACA,UACA,kBACA,CACA,KACA,UACA,sBACA,eAEA,CACA,KACA,UACA,uBACA,eAEA,CACA,sBAWA,EAVA,cACA,eACA,UACA,UACA,UAEA,EADA,MACA,gBACA,CAAY,SAAQ,EACpB,GAAqB,MACrB,KAEA,yBACA,0BACA,aACA,gBACA,QACA,IACA,KACA,GAAa,OAAU,mBACvB,EAEA,sCACA,sBAEA,CACA,UAAU,6BAAgC,EAC1C,8BACA,2CACA,eAEA,IACA,iBACA,mBACA,EAAiB,QAAW,cAC5B,UACA,YACA,CAAU,SACV,SACA,OAGA,SAEA,0DACA,MACA,gEACA,cAMA,GAJA,yDACA,oBACA,SACA,kBACA,qBACA,IACA,cACA,YACA,CAAY,SACZ,SACA,CAGA,aACA,YACA,EAAe,QAAW,CAC1B,QACA,EACA,GAEA,KAEA,CACA,UACA,UACA,UACA,aACA,WAEA,iCACA,gBACA,cACA,OACA,aA2BA,MA1BA,CACA,SACA,0BACA,YACA,wBACA,UACA,mBACA,YACA,OACA,8BACA,QACA,iBACA,iCACA,mCACA,oCACA,oDACA,+FACA,aACA,mBACA,qBACA,kCACA,oBACA,oBACA,eACA,qBAGA,CACA,gBACA,cACA,0CAMA,GALA,sBACA,qBACA,uBACA,kBAEQ,QAAmB,MAC3B,MAEA,WACA,SAsBA,oBArBA,KACA,MACA,SAEA,wBAAc,GAAsB,aACpC,6BACA,gCACA,SAEA,cACA,YAKA,OAHA,2BACA,eAEA,6BAGA,IADA,IADA,EACA,KADA,EACA,EACA,MAFA,GAIA,MAEA,iBAEA,SAAmB,UAA2C,CAC9D,CACA,KACA,0DACA,eACA,OAEA,aACA,WACA,gBACA,sBACA,wBACA,oBAEA,CACA,gBACA,oBACA,qBACA,SAEA,CACA,MACI,GAAa,YACjB,aACA,2BACA,UACA,CAAS,EAET,gCACA,cACA,6BACA,CAAO,CACP,CAAK,CACL,CACA,EAIA,gBACA,MAHuB,KAAd,QAAc,WAGvB,IAHuB,mCAGvB,EAHuB,oCAGvB,8CACA,CACA,kBACA,GAAoB,KAAd,QAAc,eACpB,kCACA,kCACA,CACA,QACA,CACA,oBACA,cAA+C,KAAd,QAAc,+DAC/C,CACA,gBACA,MAAuB,KAAd,QAAc,+BAA0D,QAAgB,gBACjG,gEC3aA,QACA,GACA,UACA,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,gBAAqC,IAAQ,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,UAAU,sCAAwC,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,yBAzEJ,gBACA,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,qFCtNA,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,oFCvBrF,aACA,SACA,OACA,gBACA,IACA,CAAK,CACL,WACA,IACA,CAAK,CACL,YACA,CAEA,CACA,CACA,MAAqC,eAAmB,MACxD,MAAuC,YAAgB,IACvD,IACA,WACC,IACD,OAAkB,UAAc,UAChC,MAAyB,SAAG,mBAA4C,uCAA8E,CACtJ,6ECzBA,mCACA,MACA,aACA,8BACA,kBAEA,2BACA,kCAGA,EAEA,kCACA,2CACA,cACA,CAAC,iGCZD,EAAyB,eAAmB,KAC5C,MAA2B,YAAgB,GAC3C,2BCDA,UACA,8BACA,cACA,mBAGA,EACA,MACE,WAAe,MACjB,cACA,CAAG,KACH,EACA,IACA,SACA,qBACA,eACA,QACC,GACD,2CAA2F,OAAgB,2BCL3G,kBAQA,MAAiB,QAAc,IAC/B,EAAsB,IACtB,EAA6B,OAA0B,CADnB,EAEpC,0BACA,4DACA,GAEA,kDACE,QAAoB,IACpB,EAA+B,KAC/B,EAA0B,GAC5B,OAAqB,UAAc,CACnC,CAHiC,EACL,CAE5B,MACA,EACA,IAGA,2BAgBA,GAfE,sBAA0B,CACxB,aAAiB,CACrB,IACA,+BAA4E,GAAa,gBAEzF,OADA,iBACA,CACA,CAAO,CACP,OAEA,yBACA,0BAEE,WAAe,MACjB,gBAA4C,aAAkB,CAC9D,CAAG,QACG,QAAa,MACnB,KAAU,QAAe,QAEzB,GAAM,EAAW,CACjB,QADiB,CAEjB,qBACA,4BACA,wCACA,CAAG,EACH,cAOA,OAJA,0DACA,EACA,GAEA,wCACA,2ECvEA,gBACA,MAAS,OAAY,GAAU,GAAa,GAC5C,gCCNA,sBACA,qBACA,QAEA,GACA,CACA,aACA,uwBCLO,gBAKA,GACP,OANO,UAOP,OAPO,UAQP,wBACA,wBACA,uBACA,uBACA,qBACA,qBACA,wBACA,6BACA,0BACA,MAjBO,UAiBP,OACA,qBACA,UACA,wBACA,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,YAUO,cACP,8CAGA,SADA,IACA,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,iDC5uBA,IAAIznH,EAAiB,CAAC,EAEf,SAAS2qD,IACd,OAAO3qD,CACT,2ECFO,SAAS0vB,EAAe/0B,CAAO,EAAE,0DAAG1sD,CAAAA,CAAH,iBAAQ,CAC9C,IAAMm9K,EAAYprL,EAAAA,CAAaA,CAACtO,IAAI,CAClC,KACAipE,GAAW1sD,EAAMkwC,IAAI,CAAC,SAACt+C,CAAAA,QAAS,MAAOA,IAAAA,EAAAA,YAAP,QAAOA,EAAAA,CAAG,GAAM,YAElD,OAAOoO,EAAMpZ,GAAG,CAAC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EAAM92B,OAAO,IAFd,CAEmBE,EAFZu1B,EAAe,GAAI,EAAKvjH,EAAMujH,CAAAA,GAGlDqB,EAAMxiH,QAAQ,CAAC,EAAG,EAAG,EAAG,GACjBwiH,CACT,gECVO,SAAS5iH,EAAOvE,CAAQ,CAAE+6D,CAAO,EAEtC,MAAO36D,CAAAA,EAAAA,EAAAA,CAAAA,CAAaA,CAAC26D,GAAW/6D,EAAUA,EAC5C,kICzCA,yBAEA,uBAEA,aAEA,4BACA,gBACA,mBACA,MACA,MAEA,oBACA,YACA,iBACA,eACA,EAEA,+CAEA,qBAEA,MACA,6CACA,8CACA,EAEA,8BACA,6BACA,6BAEA,kBACA,EACA,uBACA,sDACA,qBACA,mBAEA,oBACA,kBAEA,mCACA,WAcA,cAZA,GADA,UACA,QAIA,eACA,qBACA,oBALA,IAaA,QACA,CAEA,+CAEA,gBAEA,YACA,aACA,SAEA,2DACA,mBACA,QACA,EACA,KACA,CACA,EAEA,yBAEA,qBAEA,iDAEA,YACA,SACA,gBACA,WACA,MACA,aACA,WACA,IACA,UACA,WACA,EACA,uBACA,EACA,eAEA,GADA,GAGA,uDACA,MAEA,QACA,OAEA,QACA,EAEA,OACA,YACA,qBACA,eACA,EACA,GACA,gBACA,oBACA,oBACA,sBACA,SACA,EACA,GACA,UACA,UACA,sBACA,sBACA,kBACA,oBACA,mBACA,EAEA,EAAwB,eAAmB,OA+B3C,MAA6B,YAAgB,IA+B7C,MACA,aAAY,QAAoB,EAChC,OAAY,eAAmB,aAA6B,QAAa,GACzE,EAEA,qBACA,OACA,8BACA,EACA,eACA,2BACA,SAEA,kBADA,EACA,UACA,mBAFA,EAEA,YAEA,MAJA,EAIA,KACA,EALA,EAKA,CAEA,CAAS,EAET,QACA,EAEA,kCAEA,cACA,KACA,SAAY,QAAqB,EACjC,aACA,8CACA,8BACA,YACA,EAEA,4BAEA,eACA,IACA,OACA,gBACA,GACA,MACA,iBACA,kBAEA,cACA,MAAmB,QAAY,GAC/B,aACI,WAAe,MACnB,mBACA,mBACA,6BACA,oBACa,EACb,WACA,kBACA,CACA,CAAK,cACL,CAgCA,cACA,UACA,CAAY,+CAAmD,MAC/D,MAAyC,UAAc,eACvD,EAAqB,QAAY,KACjC,EAAiC,QAAY,EAC7C,WACA,aACA,eACA,iBACA,oBACA,gBACA,WACA,SACA,CAAK,EACL,EAAkB,QAAY,IAoB9B,OAnBA,YACA,GACA,WACA,mBACA,uBACA,mCACA,GACA,gBACA,KACa,EACb,0BACK,EACD,WAAe,MACnB,aACA,sCACA,KACA,YACA,GACK,KACM,SAAa,+BACxB,CAEA,4BAEA,eACA,MACA,kBACA,UAEA,iBACA,sCAEA,mBACA,GAmBA,cACA,UACA,SAAY,sDAAkE,MAC9E,EAAkB,QAAY,GAC9B,aACA,GACA,WACA,2BACA,SACA,uBACA,wDAEA,CAAS,CACJ,EACL,SAAiC,UAAc,mBAE/C,OADI,WAAe,2BACnB,CACA,CA4LA,kBAlKA,YACA,UACA,MAAY,qDAA8D,EAC1E,sBACA,KACA,UACA,OACA,qEACA,QACA,CAAK,EACL,KACA,UACA,OACA,QACA,CAAK,EACL,EAA2B,QAAY,eACvC,WACA,QACA,kBAA0C,qBAA2B,EAAI,CACpE,GACL,EAAuB,SAAa,+BAAiC,EACrE,SACA,cACA,uBACA,CAAS,CACT,SACA,cACA,4BACA,CAAS,CACT,WACA,cACA,8BACA,CAAS,CACT,cACA,cACA,iCACA,CAAS,CACT,OACA,cACA,qBACA,CAAS,CACJ,SACL,EAAkB,SAAa,OAC/B,OACA,QACA,oBACA,CAAgB,wBAChB,EAAgB,CAChB,gCACA,QACA,WACA,MACA,CAAa,CACb,cACS,EACT,6BACA,QACA,yBACA,MACA,CAAa,CACb,YACS,EACT,QACA,qBACA,MACA,WACA,oBACA,sBACA,4CACA,qCACA,EAEA,CAAS,CACT,CAAK,EACL,EACA,cACA,EACA,WACA,EACA,UACA,EAiCA,OAhCI,WAAe,MACnB,qCACA,UACA,qBACA,SACA,cAEA,EAEA,GADA,QACA,GACA,uCACA,wBACA,uBACA,oBAEA,CAEA,OADA,iBACA,KACA,GACA,oBACA,GACA,gBACA,OACA,CACA,CAAK,YACD,WAAe,MACnB,wBACA,WACA,iBACA,MACA,CAAS,CACT,CAAK,UACM,SAAa,OACxB,QACA,YACA,YACA,EAAK,SACL,EA4CA,IAqHA,qBACA,CACA,QACA,OACA,iCAA4E,CAC5E,SACA,CAAS,EAET,GAEA,OACA,uEACA,iEACA,gCACA,mCACA,CAAK,CACL,EAEA,WAAkD,mCAClD,aACA,GAAW,EAAK,GAAG,+BAA6D,GAChF,GAEA,OACA,8BACA,sBACA,0BACA,kBACA,0BACA,CAAC,CAED,eACA,aACA,gBACA,sCACA,mCAEA,kBACA,gCACA,aACA,MACA,OAAoB,QAAsB,EAC1C,MACA,0CAGA,2BAFA,SAMA,UACA,KAGA,MACA,SACA,OACA,KAGA,CACA,CAEA,EAEA,gBACA,gBAGA,OAFA,iBACA,SACA,CACA,EAEA,qBAEA,0BAEA,MACA,MACA,SAEA,0BACA,mBACA,wDACA,EAEA,UAEA,sBAEA,yBAEA,OACA,SACA,UACA,EACA,GAAsB,qBACtB,WACA,qBACA,eACA,QACA,qCACA,gBACA,OAAqB,2BACrB,CACA,oCAEA,2CACA,+BACA,EACA,CAA4B,6BAC5B,EACA,CACA,CACA,QACA,EAEA,QACA,WACA,UACA,EACA,2BACA,0CACA,CACA,WACA,aACA,EACA,MACA,GAEA,8BACA,SACA,8BACA,SACA,OACA,OACA,kBACA,KACA,CAEA,CAEA,sBACA,EACA,CACA,QACA,UACA,EAEA,wBACA,QAAY,6GAAsG,KAClH,SACA,gBACA,SAEA,eACA,MACA,sBACA,mCACA,mBAEA,EACA,KACA,OACA,OAEA,aACA,YACA,MACA,oBACA,QACA,4BACA,qBACA,wCACA,WACA,OACA,WACA,UACA,MACA,cAEA,EACA,KACA,6BACA,GACA,EApBA,QAoBA,WACA,UACA,mBACA,oBACA,UAAgB,aAAiB,KACjC,CAAgB,qBAChB,MACA,OACA,MACA,gBACA,UACA,MACA,kBACA,EACA,IAEA,OADA,KACA,CAGA,CACA,2BACA,EACA,EACA,YACA,QACA,kBAUA,CACA,iCACA,+CACA,iBACA,iBACA,eACA,KACA,gBACA,EACA,UACA,qBAEA,eACA,KACA,gBACA,EACA,UACA,oBAEA,KA7BA,CACA,uBACA,SACA,YACA,cAEA,YACA,aAEA,CAqBA,YACA,uCACA,IAEA,OADA,gBACA,CAGA,CACA,WACA,IACA,6BACA,YACA,QACA,eACA,kBACA,eACA,kBACA,YACA,yBACA,IAEA,OADA,gBACA,CAGA,CACA,gBACA,IAAgB,mBAA+B,MAC/C,uBACA,MACA,eACA,UACA,MACA,mBAEA,IAEA,OADA,KACA,CAGA,CACA,MACA,SAEA,SADA,aACA,GACA,OACA,MACA,KACA,4BAEA,IAEA,OADA,aACA,CAGA,MACA,SACA,SACA,gBACA,aACA,MAEA,8BACA,IACA,GACA,KACA,iBACA,EACA,aACA,GACA,SAGA,CACA,WACA,MACA,MACA,MAEA,IACA,QAGA,EAGA,OADA,MACA,CACA,EAEA,cACA,KACA,KACA,CAEA,gDAEA,mBACA,UACA,gBACA,QACA,WACA,CAGA,gBACA,kBAGA,SACA,cAEA,+BACA,GANA,GASA,cACA,QACA,KACA,CAWA,eACA,GACA,SAXA,KACA,QACA,SACA,eACA,gBACA,IAEA,yBAIA,yBAEA,aACA,yBAmBA,iBACA,uBACA,EACA,KACA,IACA,KACA,iBAtBA,cACA,2BACA,IACA,UACA,qBAEA,QACA,EAeA,KACA,aACA,OASA,OARA,GACA,YAEA,OACA,aACA,kBAtBA,YACA,eACA,iCACA,SAGA,QACA,EAeA,KACA,oBAEA,CACA,CAEA,iBACA,OACA,GAwCA,eACA,UACA,SAAY,8DAA4E,EACxF,MAAgC,UAAc,sBAC9C,EAAgB,QAAY,6BAC5B,EAAsB,QAAY,IAClC,EAAkB,QAAY,IAC9B,EAAsB,QAAY,IAClC,aACA,YACA,sBACA,GACA,gBACA,GACA,cAAiB,SAA+B,IAChD,sBACA,qBACA,mBACA,KACA,mBAEA,CACA,CAAS,CACT,0BACK,EACL,MAAyB,aAAiB,KAC1C,aACA,wBACA,CAAK,QAwJL,OAlEI,WAAe,MAMnB,GALA,mBACA,eACA,wBACA,gBACa,EACb,WACA,iCACA,2BACA,uBACA,+BACA,oBACA,2BACA,GACA,YACA,GACA,kBACA,uBACA,aACA,EACA,2BACA,0BACA,wBACA,2BACyB,EAEzB,CAAiB,MAEjB,CACA,qBACA,GACA,MACA,2CACA,gCACA,6HACA,wBACA,iCACA,CAAyB,EAEzB,EAEA,yBACA,OACA,QAAsB,iBAAwB,CACrC,EACT,gBACA,oBACA,mBACA,8BACA,QAEA,OADA,UACA,CAGA,CAAa,EACb,kBACA,iBACA,YACA,CAAK,UACD,WAAe,MACnB,2CACA,KACA,kCACA,eACA,GACK,WACL,CACA,KAAc,aAAiB,CA3G/B,QACA,0BACA,UACA,kBACA,KACA,KACA,4BACA,OACA,MACA,CAAS,IACT,EAiG+B,SAC/B,KAAc,aAAiB,CAjG/B,QACA,0BACA,UACA,kBACA,KACA,KACA,4BACA,OACA,MACA,CAAS,IACT,EAuF+B,SAC/B,QAAiB,aAAiB,CA/IlC,QACA,cACA,2BACA,yBACA,iCACA,KACA,KACA,4BACA,UACA,CAAS,CACT,EAqIkC,SAClC,OAAgB,aAAiB,CA3JjC,QACA,cACA,2BACA,kCACA,iCACA,KACA,KACA,4BACA,UACA,CAAS,CACT,EAiJiC,SACjC,OAAgB,aAAiB,CAtIjC,IACA,+BACA,2BACA,KACA,KACA,+BACA,sBACA,4BACA,MACA,CAAS,CACT,EA4HiC,SACjC,OAAgB,aAAiB,CA5HjC,UACA,cACA,6BACA,yBACA,mCACA,KACA,KACA,4BACA,OACA,UACA,CAAS,CACT,EAiHiC,SACjC,OAAgB,aAAiB,CA3FjC,QACA,WACA,6BACA,wDACA,KACA,UACA,4BACA,OACA,MACA,CAAS,OACT,EAiFiC,SACjC,QAAiB,aAAiB,CAjFlC,IACA,aACA,oBACA,UACA,UACA,oCAAwF,OACxF,EA2EkC,SAClC,OAAgB,SAAa,oBAC7B,KACA,qBACA,IAAS,MACT,CACA,CAEA,YACA,SAiBA,OACA,gBACA,QACA,CAAS,CACT,KApBA,IACA,eACA,iBAEA,EAiBA,UAhBA,IACA,UACA,CACA,iBACA,oBACA,CAAa,GAYb,YATA,KACA,KASA,CACA,EAEA,kBAEA,iBACA,gBACA,aAEA,cACA,iCAEA,qBACA,iBACA,uBACA,SAEA,gBACA,WACA,kBACA,SAEA,cACA,WACA,eACA,YACA,mCACA,SACA,MACA,QAEA,CACA,CACA,QACA,CAEA,qCAEA,iBAEA,0BAEA,OACA,eACA,WACA,SAGA,QACA,EAEA,kBAA0C,EAC1C,uBACA,WACA,eACA,qBACA,oBACA,+BACA,eAEA,SACA,UAIA,QACA,CAwBA,wBAvBA,SACA,uBACA,WACA,eACA,qBACA,mBACA,MACA,SACA,yBACA,YACA,CAA4B,aAG5B,eAAkG,WAIlG,oBAIA,SACA,EACA,WAEA,qBAAgC,6BAAwC,QACxE,EACA,EACA,OACA,IACA,EACA,GACA,EACA,QACA,YACA,EACA,KACA,EAEA,eACA,mBACA,KACA,QAEA,KACA,iBAEA,MACA,mCAA+C,EAAO,MAEtD,KACA,iBAEA,oCACA,CAEA,mBACA,SACA,gBACA,YACA,eACA,CACA,OACA,eACA,aACA,SACA,2BACA,CACA,EAEA,WACA,EACA,KACA,SACA,KACA,WACA,eACA,QACA,EAEA,uBACA,eACA,cACA,kBACA,kCACA,eACA,4DAEA,eACA,aACA,OACA,OACA,aACA,aACA,WACA,YAEA,mBACA,aACA,WACA,OACA,QACA,MACA,EAEA,mBACA,gBACA,kBACA,SACA,SACA,+BACA,MAEA,GAFqB,GAErB,OACA,OACA,OACA,OACA,EAEA,OACA,CACA,OACA,MACA,CACA,CAEA,oBACA,aAGA,gBACA,QAEA,0BACA,GAEA,iCACA,GAKA,qCAEA,QACA,gBACA,0BACA,mBACA,EA2/BA,gBAA2B,EAC3B,MAAyB,QAAY,SACrC,EAAoB,QAAY,SAChC,MAAyC,UAAc,EACvD,WACA,gBACA,6BACA,eACA,gBACA,sBACA,WACA,cACA,cAAuB,CACvB,gBAAyB,CACzB,mBAA4B,CAC5B,mBAAkC,CAClC,wBACA,iCACA,OACA,gBACK,CACL,YACA,YACA,GAjhCA,aAAqC,EACrC,IAsCA,EAtCA,GACA,MACA,MAEA,GACA,cACA,WACA,6BACA,gBACA,eACA,gBACA,sBACA,WACA,gBAAyB,CACzB,cAAuB,CACvB,mBAA4B,CAC5B,mBAAqC,CACrC,uBACA,EACA,KACA,qCACA,iCAEA,qBACA,GACA,KACA,GACA,UACA,SACA,QACA,EACA,GACA,cACA,iBACA,gBACA,cACA,aACA,EAEA,IACA,GACA,WACA,eACA,oBACA,iBACA,gBACA,WACA,SACA,EACA,GACA,YACA,WACA,UACA,EACA,YACA,sBACA,yBACA,SACA,gBACA,iBACA,EACA,YACA,gCACA,iBACA,sBACA,cACA,eACA,cACA,SACA,CAAiB,CAEjB,CACA,EACA,UACA,aACA,uCACA,qCACA,GACA,GACA,0BACA,yBAEA,CAAa,EACb,cACA,oCACA,mCACA,CAAa,EAEb,EAmCA,UACA,gBACA,cACA,eACA,CAAS,CACT,EAQA,cACA,aACA,MACA,0BACA,OACA,qBACA,EACA,oBACA,OACA,YACA,CACA,EACA,gBACA,SACA,KACA,GACA,MACA,EACA,gBACA,iBACA,WACA,oBACA,UACA,YACA,YACA,wBACA,iBAEA,sBACA,6BACA,KACA,oBACA,sBACA,4BACA,EACA,GACA,eACA,MACA,CACA,MACA,2BACA,IACA,uBACA,gCACA,EACA,GACA,iBACA,MAEA,CACA,qBACA,CACA,aACA,EACA,cACA,oBACA,aACA,MACA,cAYA,GAXA,gBACA,kBACA,eAGA,gBACA,OACA,EACA,gBACA,gBAEA,gBACA,OACA,GACA,OACA,KACA,oBAAgE,GAAU,EAAI,CAC9E,gBACA,MACA,EACA,GACA,KACA,MAEA,eACA,CACA,EACA,YACA,QACA,gGAEA,OADA,KACA,CACA,EACA,YACA,WAAgB,GAAS,WACzB,KACA,gBACA,YACA,GACA,gBACA,cACA,MAGA,WAEA,QACA,EACA,eACA,QACA,CAAK,IACL,gBACA,WACA,MACA,OAAwB,QAAoB,EAC5C,MACA,0BACA,iBACA,uBACA,UAEA,mEAIA,GAHA,uBACA,OAEA,YACA,WACA,GACA,KAGA,IACA,aACA,EACA,qBACA,6BACA,oBACA,CACA,MACA,cACA,CACA,CACA,cACA,EAYA,sBACA,gBACA,aACA,kBACA,WACA,EACA,KACA,EACA,KACA,CAAwB,OACxB,EACK,MAEL,WAAoD,IACpD,aACA,IACA,MACA,WACA,IACA,YACA,eACA,EACA,eACA,GACA,EACA,UACA,8DAEA,OACA,SACA,gBACA,oDACA,4BACA,yBACA,cACA,WACA,wBAGA,yCAGA,SACA,gBAGA,cACA,YACA,eACA,OACA,QAAsC,KAAgB,CAC7B,GAIzB,CACA,gCACA,sCACA,uBACA,EACA,aACA,gBACA,WACA,KAAiC,EAAK,GAAG,EAAS,EAClD,QACA,kBACA,MACA,WACA,MACA,UACA,QACA,CACA,EACA,YAA+C,IAC/C,aACA,iBACA,OACA,SACA,GACA,cACA,OACA,QAA0B,KAAgB,CAC7B,EACb,4BACA,eACA,cACA,OACA,oBACA,cACA,CAAiB,GAIjB,eAEA,SADA,UAGA,sBAA0D,KAAe,EACzE,eACA,sBACA,QAAsB,KAAgB,CAC7B,CACT,EACA,aACA,WACA,eACA,SACA,KACA,SAEA,MACA,EACA,iBACA,0BACA,cACA,EACA,UACA,EACA,EACA,MAVA,qBAWA,wCACA,aACA,aACA,gBACA,YACA,6CACA,WACA,SACA,GACA,4BACA,SAEA,eACA,iBAEA,kBACA,WAOA,GANA,GACA,eACA,OACA,YACA,QAA8B,KAAgB,CAC7B,EACjB,EASA,OARA,YACA,qBACA,IAEA,GACA,KAGA,GACA,mBAA2C,UAAuB,EAAe,EAGjF,GADA,qBAA8D,KAAe,EAC7E,YACA,WAAwB,GAAS,aAEjC,GADA,KACA,GACA,uBACA,oBACA,UACA,SACA,MACA,CACA,MAEA,UACA,8DACA,OACA,KACA,IACA,EACA,KAEA,WACA,mBAIA,IACA,WACA,cACA,WAEA,CACA,EACA,WACA,0BAEA,OADA,UACA,CAGA,EACA,eAA6C,QAC7C,EACA,EACA,WACA,eACA,wBACA,OACA,IACA,mBACA,CACA,MACA,EAKA,CAJA,sCACA,aACA,wBAA4E,OAAqB,EACjG,CAAa,qBACb,gBAGA,eAaA,OAXA,cACA,UACA,yBACA,GACA,MAAoB,EAAM,CAC1B,2BAA+C,GAAU,EAAI,CAC7D,gBACS,EACT,eACA,IACA,oBACA,CACA,EACA,OACA,OACA,cACA,EACA,YACA,EACA,KACA,OACA,gBACA,EACA,YACA,6BACA,kCACA,yBACA,uCACA,qCACA,EAAK,CAQL,aACA,cAA0C,MAAQ,SAAU,KAG5D,CAAgB,6BAFhB,kBAGA,cACA,KACA,KACA,KACA,CAAS,EACT,cACA,OACA,gBACA,UACA,CAAS,EACT,uCACA,EAMA,UAA0C,IAC1C,4BACA,kBACA,kBACA,cACA,QACA,SAEA,4BACA,iCACA,qCACA,oBACA,yBACA,oBACA,oBACA,QAEA,eACA,QAAsB,KAAgB,CAC7B,EACT,cACA,KACA,eAAwC,CAAI,aAA5C,EAAkE,CAA1B,EAExC,kBACA,EACA,KAAoC,mCAAgC,IACpE,gBACA,GACA,qBACA,yCACA,mCAEA,EACA,UAAwC,IACxC,aACA,+BAuBA,OAtBA,OACA,QAA2B,CAC3B,IACA,iBAAqD,UAAO,GAAQ,CACpE,OACA,SACA,KACa,CACJ,EACT,eACA,EACA,IACA,QACA,uBACA,WACA,WACA,MACA,CAAa,EAGb,gBAEA,CACA,KACA,CAAoB,iCACpB,EAAoB,CACpB,iBACA,CACA,sBACA,cACA,cACA,0BACA,0BACA,qBACA,EACA,EAAoB,CACpB,OACA,YACA,UACA,QACA,MACA,QACA,SACA,kBACA,oBACA,kDAGA,QACA,gBACA,GACA,iBACA,gBAGA,OACA,IACA,QACA,KACA,CACA,SACA,aACA,KACA,yBAA0F,KAC1F,CACA,KAA2C,mBAC3C,EACA,CAAoC,MAAe,CAEnD,CAAqB,EACrB,iBACA,KAGA,CADA,WAAiD,EACjD,IACA,gBAEA,0CACA,2BACA,gBAEA,CAAa,CAEb,EACA,2BACA,gBAiBA,wBACA,EACA,IACA,qCACA,wBAEA,WACA,mBACA,wBACA,cAMA,GAHA,cACA,eACA,CAAS,EACT,YACA,WAAoB,YAAiB,SACrC,YACA,GACA,MAEA,WAGA,GADA,oBACA,aACA,cACA,SAA0B,CACb,EACb,IACA,YACA,CACA,SACA,GACA,CACA,MAEA,GACA,SAAkC,YAAsB,IAExD,KACA,eASA,GAPA,cACA,eACA,gBACA,mCACA,4BACA,gBACS,EACT,EACA,OAEA,EA0BA,UAAqD,IACrD,eACA,OACA,OACA,QAIA,GAHA,qBACA,MAEA,eACA,qBAKA,wBAJA,YACA,WACA,qBACA,GAEA,mBACA,cACA,iBAGA,CACA,WACA,sBACA,aACA,YACA,+BACA,aACA,SACA,SACA,wBACA,MACA,UACA,KACA,CACA,CACA,CACA,CAEA,IACA,CACA,qBACA,oBACA,KACA,GACA,KACA,cACA,QAA0B,KAAW,CACxB,EACb,eACA,QAA0B,KAAW,CACxB,CACb,CACA,GACA,wCACA,gBACA,cACA,iBACA,cACA,YACA,QACA,EACA,QACA,YACA,iBACA,oBACA,6BACA,cACA,8BACA,cACA,EACA,YAEA,aACA,UACA,wBACA,WACA,iCACA,cAEA,cACA,GACA,kBACA,uBACA,QACA,cACA,uBACA,QACA,YACA,cACA,EAAgC,CAChC,4BACA,gBACA,EAAoB,CACpB,+BAAwE,CACxE,+CACA,qBAEA,eACA,CAAS,CACT,EACA,kBACA,KACA,KA6BA,OACA,SACA,YACA,cACA,iBACA,gBACA,YACA,iBACA,YACA,YACA,eACA,iBAroBA,KACA,wBACA,YACA,IACA,WACA,2BACA,gBACA,KACA,CACA,iBACA,EA4nBA,kBAp0BA,yBACA,sBAEA,GADA,YACA,0BACA,6BACA,YACA,CACA,MACA,8BACA,oCACA,oBACA,cACA,CACA,oBACA,GACA,qCACA,2CACA,0BACA,CACA,eACA,wBAEA,cACA,OACA,eACA,0BACA,gBACA,kBACa,CACb,MAEA,QAEA,EAoyBA,wBACA,eAjnBA,uDAknBA,UACA,oBAvBA,wBACA,2BACA,qBACA,cACA,YACA,CAAa,CACb,CAAS,EAkBT,iBA9BA,IACA,GACA,KACA,IACA,CACA,EA0BA,aAnPA,IACA,OACA,uBAAmC,EAAU,EAC7C,YACA,aACA,IACA,4BACA,0BACA,sBACA,2BACA,CAAyB,EAGzB,CAAa,OAEb,EAqOA,YACA,kBACA,WAryBA,IACA,WACA,cACA,gBACA,UACA,CAAS,CACT,EAgyBA,cACA,QACA,CAAa,CACb,kBACA,QACA,CAAa,CACb,aACA,QACA,CAAa,CACb,kBACA,OACA,CAAa,CACb,qBACA,QACA,CAAa,CACb,aACA,QACA,CAAa,CACb,kBACA,OACA,CAAa,CACb,iBACA,QACA,CAAa,CACb,sBACA,OACA,CAAa,CACb,eACA,QACA,CAAa,CACb,oBACA,GACA,KACA,SAEA,CAAa,CACJ,CACT,WACA,YACA,gBACA,MA/ZA,YACA,oBACA,wBACA,CAAS,EACT,UA4ZA,YACA,aACA,SACA,WA9NA,OAA0C,IAC1C,SACA,kBACA,iBAGA,qBACA,0BAEA,eACA,sBAEA,cACA,oBACA,yBACA,eACA,KAEA,eACA,eACA,gBAEA,cAAmC,KAAe,EAElD,EAuMA,YA5bA,IACA,GACA,gCACA,cACA,oBAAiD,CACxC,CACT,EAubA,cACA,YACA,SAlGA,OAAwC,IACxC,aACA,UACA,MACA,aACA,UACA,MACA,UACA,UACA,gBACA,aACA,WAEA,CACA,EAqFA,gBACA,CACA,EAsDA,GACA,WACA,GAEA,wBAsDA,OArDA,aACA,GACA,0BACA,SACA,8CACA,GAAkC,gBAAuB,CAEzD,CAAS,CACJ,EACD,WAAe,gDACf,WAAe,MACnB,8BACA,oBACA,eACA,wBACA,SACA,CAAiB,CAEjB,CACA,CAAK,gBACD,WAAe,MACnB,mCACA,2CACA,mBACA,OAA0C,MAAU,GAGpD,uBAEA,CAAK,eACD,WAAe,MACnB,UACA,sBAEA,CAAK,eACD,WAAe,MACnB,iBACA,iBACA,mBAEA,iBACA,kBACA,wBAA2C,gBAAuB,GAElE,oBACA,CAAK,EACD,WAAe,MACnB,oBACA,yBACA,oBACA,CAAa,CACb,CAAK,yBACL,2BACA,6ECzlFA,IAeO,aAQP,MAPA,8BACA,iCAA+C,IAAO,IAEtD,aADA,eACA,uDAEA,QACA,GACA,qBACA,EAEO,gBACP,SACA,0EACA,YACA,4DACA,8CAA2D,WAAc,IACzE,uEACA,kBAEA,QACA,CAiKO,kBACP,mDAA2E,IAAO,KAClF,YACA,yCACA,WAGA,iDACA,CArEO,cA0GP,cAyDA,0OCvTA,iBACA,uBACA,sDAEA,SAA4B,cAAQ,IACpC,EAAkB,iBAAW,MAC7B,KACA,CAAG,KACH,EAAmB,iBAAW,MAC9B,KACA,CAAG,KACH,EAAiB,iBAAW,MAC5B,QACA,CAAG,KACH,aAAW,2CACX,CACA,iCAAgE,iBAAe,CAAG,WAAS,CAG3F,oBACA,MAAuB,YAAM,IAC7B,OACA,WACA,CAAG,MACD,eAAS,MACX,yCACA,4BACA,OACA,UACA,YACA,EAEA,OADA,0BACA,KACA,4BACA,CACA,CAAG,SACH,CAoGA,cACA,MAAc,YAAM,MACpB,4DACA,CAAG,EAIH,OAHA,OACA,WACA,CAAG,MACM,iBAAW,UACpB,MACA,gDACA,CAAG,KACH,CAGA,iCACA,mBAAwD,EACxD,wBAAU,MAA6B,EACvC,EAAqB,iBAAW,CAChC,GACA,aACA,gBAEA,kBAEA,KAEA,EAAuB,iBAAW,CAClC,QAQA,EAPA,kBACA,yBAEA,mBACA,OAEA,kCAEA,IACA,eACA,CAAQ,SAER,OADA,uCACA,CACA,CACA,QACA,CAAK,CACL,OAEA,EAAoB,iBAAW,MAC/B,kCACA,KACA,SAEA,IACA,qCACA,eACA,CAAM,SAEN,OADA,qDAA2D,EAAI,YAC/D,CACA,CACA,CAAG,UACH,MAAwC,cAAQ,KAChD,EACA,IAEA,6BAEA,QACA,GACA,aACA,wCAAgD,EAAI,iDAGpD,IACA,qCACA,oCACA,KACA,2DAA+D,EAAK,EACpE,CAAM,SACN,qDAA2D,EAAI,WAC/D,CACA,CAAG,EACH,SACA,GACA,aACA,yCAAiD,EAAI,iDAGrD,kCACA,kCACA,KACA,2DAA6D,EAAK,EAClE,CAAG,EACD,eAAS,MACX,MACA,CAAG,MACH,MAA8B,iBAAW,CACzC,IACA,kBAGA,MACA,CAAK,CACL,OAIA,OAFA,eACA,qBACA,QAEA,iCACA,cACA,kBACA,yBACA,CAAE,EAAI,EACN,SACA,EACA,EAEA,6BAEA,MAAgC,cAAQ,KACxC,EACA,KAEA,GAEA,aACA,OACA,CAiBA,OAhBA,OACA,2BAOA,OANA,IACA,cACA,iBAEA,+BAEA,KACA,iBACA,oBAEA,iCAEA,CACA,CAAG,MACH,CACA,CAqDA,sBACA,MAAwB,YAAM,IAb9B,YACA,MAAkB,YAAM,GACxB,aACE,eAAS,CACX,SACA,WACA,CAAK,CACL,GAEA,EAKA,KACA,WACA,kBAEA,CAAG,EACH,MAAoB,aAAO,MAC3B,MAAkC,EAAQ,OAC1C,UACA,QAWA,OATA,UAJ0C,IAK1C,UACA,EACA,gBACA,YAEA,YACA,UAEA,CACA,CAAG,UAIH,MAHE,eAAS,MACX,UAA4B,EAAQ,MACpC,CAAG,UACH,CACA,CACA,kBACA,KALoC,CAKpC,8CACA,8BACA,MAA8C,cAAQ,IACtD,EAA2B,YAAM,IACjC,IACA,EACA,EACA,GAMA,OAJA,iBACA,KACA,aAEA,MA6BA,YACA,cACA,YACA,kBACA,uBACA,2BACA,WACA,CAAE,EAAI,EACN,MACA,SAAwB,cAAQ,OAChC,MAA4B,cAAQ,OACpC,iBACA,YACA,EAAG,EACH,EAAsB,YAAM,EAC5B,aACA,qDACE,eAAS,UAOX,EANA,OAEA,oCAEA,EAHA,OAMA,+BACA,IACA,8DACA,cACA,0DACA,kBAAqB,UAAuB,EAC5C,WACA,eAEA,UACA,IACA,SAEA,CAAS,CACT,CAAO,CACP,WAAQ,wBAGR,OADA,aACA,KACA,cACA,CACA,CAAG,EACH,EAEA,kBACA,EACA,EACA,EACA,EACA,EACA,MAAkB,YAAM,OACtB,eAAS,MACX,MACA,oEACA,yBACA,GAAiB,8BAAsD,EAEvE,CAAG,oBACH,OACA,EACA,mBACA,QACA,CAIA,OAHA,WACA,sBACA,aACA,CACA,CACA,aACA,SAAgC,cAAQ,KAIxC,MAHE,eAAS,MACX,KACA,CAAG,KACH,CACA,CAuCA,iCAA2F,EAC3F,EACA,EACA,IACA,eACA,kBAGA,2HAEA,IAEA,CAAK,CACL,OACA,EAEA,CACA,IA2DA,GACA,aACA,aACA,EACA,cACA,QAAU,uBAA2B,EACrC,QAAW,WAAe,IAAa,cAAQ,IAC/C,aAxHA,MAAoB,YAAM,KAO1B,MANE,eAAS,MACX,aACA,KACA,YACA,GACG,IACM,iBAAW,kBACpB,IAiHA,EAAuB,YAAM,EAAG,KAAgB,EAChD,EAAmB,YAAM,SA8BzB,OA7BA,qBACE,eAAS,MACX,eAEA,yDADA,OAGA,iCACA,mHACA,sBACA,qBAEA,GADA,0CACA,CACA,OAA0B,iBAC1B,mBACA,mBACA,UACA,aAEA,KACA,IAGA,CACA,CAAK,EAEL,OADA,yBAAoC,EAAK,EACzC,KACA,cACA,CACA,CAAG,UACH,CAAW,iBACX,CACA,yBACA,KAMA,+BAEA,QAPA,qBACA,iDAEA,MAMA,CA4VA,cACA,SAA4B,cAAQ,MAIpC,SAHiB,iBAAW,MAC5B,QACA,CAAG,KACH,GAEA,iCACA,eAAmC,EACnC,wBAAQ,MAA6B,EACrC,GACA,OAEA,SAAsC,cAAQ,KAC9C,EACA,CACA,wBACA,yBACA,EAEA,CACA,aACA,aACA,GAEA,IACA,EACA,iBAEA,aACA,sBACA,CACA,wBACA,0BACK,CACL,CAKA,OAJA,cACA,OACA,GACA,CAAG,KACH,CACA","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/aria-hidden@1.2.4/node_modules/aria-hidden/dist/es2015/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/bezier-easing@2.1.0/node_modules/bezier-easing/src/index.js","webpack://_N_E/../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/card-number.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/cardholder-name.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/cvv.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/expiration-date.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/expiration-month.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/expiration-year.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/index.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/lib/is-array.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/lib/parse-date.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/luhn-10.js","webpack://_N_E/../../node_modules/.pnpm/card-validator@8.1.1/node_modules/card-validator/dist/postal-code.js","webpack://_N_E/../../node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js","webpack://_N_E/../../node_modules/.pnpm/cookie@0.4.2/node_modules/cookie/index.js","webpack://_N_E/../../node_modules/.pnpm/credit-card-type@9.1.0/node_modules/credit-card-type/dist/index.js","webpack://_N_E/../../node_modules/.pnpm/credit-card-type@9.1.0/node_modules/credit-card-type/dist/lib/add-matching-cards-to-results.js","webpack://_N_E/../../node_modules/.pnpm/credit-card-type@9.1.0/node_modules/credit-card-type/dist/lib/card-types.js","webpack://_N_E/../../node_modules/.pnpm/credit-card-type@9.1.0/node_modules/credit-card-type/dist/lib/clone.js","webpack://_N_E/../../node_modules/.pnpm/credit-card-type@9.1.0/node_modules/credit-card-type/dist/lib/find-best-match.js","webpack://_N_E/../../node_modules/.pnpm/credit-card-type@9.1.0/node_modules/credit-card-type/dist/lib/is-valid-input-type.js","webpack://_N_E/../../node_modules/.pnpm/credit-card-type@9.1.0/node_modules/credit-card-type/dist/lib/matches.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/eventemitter3@4.0.7/node_modules/eventemitter3/index.js","webpack://_N_E/../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","webpack://_N_E/../../node_modules/.pnpm/fbjs@0.8.18/node_modules/fbjs/lib/EventListener.js","webpack://_N_E/../../node_modules/.pnpm/fbjs@0.8.18/node_modules/fbjs/lib/ExecutionEnvironment.js","webpack://_N_E/../../node_modules/.pnpm/fbjs@0.8.18/node_modules/fbjs/lib/emptyFunction.js","webpack://_N_E/../../node_modules/.pnpm/fbjs@0.8.18/node_modules/fbjs/lib/invariant.js","webpack://_N_E/../../node_modules/.pnpm/fbjs@0.8.18/node_modules/fbjs/lib/warning.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/lodash.debounce@4.0.8/node_modules/lodash.debounce/index.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_DataView.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Hash.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_ListCache.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Map.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_MapCache.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Promise.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Set.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_SetCache.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Stack.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Uint8Array.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_WeakMap.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_apply.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayAggregator.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayEach.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayFilter.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayLikeKeys.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayMap.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayPush.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arraySome.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_asciiToArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignMergeValue.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignValue.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assocIndexOf.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAggregator.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssign.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignValue.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseClone.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseCreate.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseEach.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFlatten.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFor.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseForOwn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetAllKeys.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseHasIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsArguments.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqual.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqualDeep.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMap.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMatch.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsNative.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsSet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsTypedArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIteratee.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeys.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeysIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatches.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatchesProperty.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMerge.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMergeDeep.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseProperty.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePropertyDeep.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseRest.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSetToString.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSlice.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTimes.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseToString.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUnary.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUnset.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cacheHas.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castPath.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castSlice.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneArrayBuffer.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneBuffer.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneDataView.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneRegExp.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneSymbol.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneTypedArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyObject.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbols.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbolsIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_coreJsData.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createAggregator.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createAssigner.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseEach.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseFor.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createCaseFirst.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_customOmitClone.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_defineProperty.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalArrays.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalByTag.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalObjects.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_flatRest.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeys.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeysIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMapData.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMatchData.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getNative.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getPrototype.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbols.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbolsIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getTag.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getValue.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hasPath.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hasUnicode.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashClear.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashDelete.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashGet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashHas.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashSet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneByTag.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneObject.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isFlattenable.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIndex.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIterateeCall.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKey.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKeyable.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isMasked.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isPrototype.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isStrictComparable.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheClear.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheDelete.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheGet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheHas.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheSet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheClear.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheDelete.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheGet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheHas.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheSet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapToArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_matchesStrictComparable.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_memoizeCapped.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeCreate.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeys.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeysIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nodeUtil.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overArg.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overRest.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_parent.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_safeGet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheAdd.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheHas.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToString.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_shortOut.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackClear.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackDelete.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackGet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackHas.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackSet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stringToArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stringToPath.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toKey.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toSource.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_unicodeToArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/capitalize.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/cloneDeep.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/constant.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/eq.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/flatten.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/get.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/groupBy.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/hasIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/identity.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArguments.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLike.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLikeObject.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isBuffer.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEmpty.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEqual.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isFunction.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isLength.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isMap.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isPlainObject.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSet.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isTypedArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keys.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keysIn.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/last.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/memoize.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/merge.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/omit.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/property.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/set.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubArray.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubFalse.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toPlainObject.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toString.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/unset.js","webpack://_N_E/../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/upperFirst.js","webpack://_N_E/../../node_modules/.pnpm/markdown-to-jsx@7.1.5_react@18.3.1/node_modules/markdown-to-jsx/dist/index.modern.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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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-native@0.75.4__c9d41bbc273279ec4a31f8e1dad0c110/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_2b4f27cada069c2c6ec5f77c52173754/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_2b4f27cada069c2c6ec5f77c52173754/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_2b4f27cada069c2c6ec5f77c52173754/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_2b4f27cada069c2c6ec5f77c52173754/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_2b4f27cada069c2c6ec5f77c52173754/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_2b4f27cada069c2c6ec5f77c52173754/node_modules/next-i18next/dist/esm/index.js","webpack://_N_E/?61fe","webpack://_N_E/./pages/_app.tsx","webpack://_N_E/../../libs/config/metrics/src/react-metrics/core/ActionTypes.js","webpack://_N_E/../../libs/config/metrics/src/react-metrics/core/utils/extractApis.js","webpack://_N_E/../../libs/config/metrics/src/react-metrics/core/createService.js","webpack://_N_E/../../libs/config/metrics/src/react-metrics/core/utils/isPromise.js","webpack://_N_E/../../libs/config/metrics/src/react-metrics/core/utils/attr2obj.js","webpack://_N_E/../../libs/config/metrics/src/react-metrics/core/useTrackBindingPlugin.js","webpack://_N_E/../../libs/config/metrics/src/react-metrics/core/createMetrics.js","webpack://_N_E/../../libs/config/metrics/src/react-metrics/index.js","webpack://_N_E/../../libs/config/metrics/src/AdobeTagManager/AdobeTagManager.ts","webpack://_N_E/../../libs/config/metrics/src/config/metricsConfig.ts","webpack://_N_E/../../libs/config/metrics/src/types/imageMetrics.ts","webpack://_N_E/../../libs/config/metrics/src/utils/clearImageAnalyticsData.ts","webpack://_N_E/../../libs/config/metrics/src/utils/trackEvent.ts","webpack://_N_E/../../libs/config/metrics/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/utils/constants.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/metrics/constants.ts","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parseISO.js","webpack://_N_E/../../libs/osc/brands-metrics/src/utils.ts","webpack://_N_E/../../libs/osc/brands-metrics/src/extendAdobeTagManager.ts","webpack://_N_E/../../libs/osc/brands-metrics/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/metrics/ExtendedAdobeTagManager.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/metrics/metrics.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/mapping/Footer/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/mapping/Header/index.tsx","webpack://_N_E/../../libs/utilities/use-sticky-layout/src/lib/use-sticky-layout.ts","webpack://_N_E/../../libs/utilities/use-sticky-layout/src/lib/index.ts","webpack://_N_E/../../libs/utilities/use-sticky-layout/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/mapping/SearchWidget/Cpm.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/mapping/SearchWidget/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/generatedCpmInterface.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/utils/get-brand-tagging-values.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/utils/assets.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/components/CpmPage.tsx","webpack://_N_E/../../libs/osc/error-page/src/lib/utils/error-page-utils.ts","webpack://_N_E/../../libs/osc/error-page/src/lib/error-page.tsx","webpack://_N_E/../../libs/osc/error-page/src/lib/phone-number.tsx","webpack://_N_E/../../libs/osc/error-page/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/components/Error/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/utils/get-query-provider-props.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/utils/fetch-server-cpm-page.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-brands/src/index.ts","webpack://_N_E/../../libs/osc/alert/src/lib/alert.tsx","webpack://_N_E/../../libs/osc/alert/src/lib/alert.dialog.tsx","webpack://_N_E/../../libs/osc/alert/src/lib/alerts.content.tsx","webpack://_N_E/../../libs/osc/alert/src/lib/alerts.controls.tsx","webpack://_N_E/../../libs/osc/alert/src/lib/alerts.tsx","webpack://_N_E/../../libs/osc/alert/src/lib/index.ts","webpack://_N_E/../../libs/osc/alert/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/generated/queries.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandAlerts/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandAlerts/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandCarousel/BrandCarouselAttachedContent.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/utils/media-query.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandCarousel/BrandCarousel.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/utils/id-transformer.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandCarousel/BrandCarouselEditorButtons.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandCarousel/ForTheStayOverlay.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/Context.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandCarousel/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandCarousel/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandShowcase/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandShowcase/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/BrandVideo/index.tsx","webpack://_N_E/../../libs/utilities/images/src/lib/get-aspect-ratio-url.ts","webpack://_N_E/../../libs/utilities/images/src/index.ts","webpack://_N_E/../../libs/osc/collage/src/lib/utils/collage-analytics.ts","webpack://_N_E/../../libs/osc/collage/src/lib/collage-content.tsx","webpack://_N_E/../../libs/osc/collage/src/lib/collage-desktop-image.tsx","webpack://_N_E/../../libs/osc/collage/src/lib/collage.tsx","webpack://_N_E/../../libs/osc/collage/src/lib/index.ts","webpack://_N_E/../../libs/osc/collage/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Collage/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Collage/index.tsx","webpack://_N_E/../../libs/osc/editorial-snippet/src/lib/editorial-snippet.tsx","webpack://_N_E/../../libs/osc/editorial-snippet/src/lib/index.ts","webpack://_N_E/../../libs/osc/editorial-snippet/src/index.ts","webpack://_N_E/../../libs/osc/card-carousel/src/lib/utils/card-carousel-analytics.ts","webpack://_N_E/../../libs/osc/card-carousel/src/lib/card-carousel-item.tsx","webpack://_N_E/../../libs/osc/card-carousel/src/lib/card-carousel.tsx","webpack://_N_E/../../libs/osc/card-carousel/src/index.ts","webpack://_N_E/../../libs/osc/editorial-carousel/src/lib/editorial-carousel.tsx","webpack://_N_E/../../libs/osc/editorial-carousel/src/lib/components/pullquote.tsx","webpack://_N_E/../../libs/osc/editorial-carousel/src/lib/components/stats.tsx","webpack://_N_E/../../libs/osc/editorial-carousel/src/lib/components/timeline.tsx","webpack://_N_E/../../libs/osc/editorial-carousel/src/index.ts","webpack://_N_E/../../libs/osc/chip/src/lib/osc-chip.tsx","webpack://_N_E/../../libs/osc/chip/src/lib/osc-action-chip.tsx","webpack://_N_E/../../libs/osc/chip/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Editorial/BrandEditorialCarousel.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Editorial/EditorialHamptonHexVisual.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Editorial/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Editorial/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Experimentation/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Experimentation/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FourXGrid/HamptonHexVisual.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FourXGrid/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FourXGrid/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FullWidthImage/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FullWidthImage/index.tsx","webpack://_N_E/../../libs/osc/gallery/src/lib/utils/gallery-analytics.ts","webpack://_N_E/../../libs/osc/gallery/src/lib/gallery-image.tsx","webpack://_N_E/../../libs/osc/gallery/src/lib/gallery.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/tabs.context.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/tabs.utils.ts","webpack://_N_E/../../libs/osc/tabs/src/lib/tab.button.tsx","webpack://_N_E/../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","webpack://_N_E/../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_object_destructuring_empty.js","webpack://_N_E/../../libs/osc/tabs/src/lib/tab.list.button.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/tab.list.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/scrollable/tab.list.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/tab.panel.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/tab.panels.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/tabs.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/util/icon-mapper.tsx","webpack://_N_E/../../libs/osc/tabs/src/lib/index.ts","webpack://_N_E/../../libs/osc/tabs/src/index.ts","webpack://_N_E/../../libs/osc/gallery/src/lib/tabbed-gallery.tsx","webpack://_N_E/../../libs/osc/gallery/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Gallery/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Gallery/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Grid369/HamptonHexVisual.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Grid369/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Grid369/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/HalfAndHalf/HamptonHexVisual.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/HalfAndHalf/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/HalfAndHalf/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/ImageHeadliner/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/ImageHeadliner/index.tsx","webpack://_N_E/../../libs/osc/hero-video/src/lib/hero-video.tsx","webpack://_N_E/../../libs/osc/hero-video/src/index.ts","webpack://_N_E/../../libs/osc/hero-text-overlay/src/lib/hero-text-overlay.tsx","webpack://_N_E/../../libs/osc/hero-text-overlay/src/index.ts","webpack://_N_E/../../libs/osc/scroll-animation/src/lib/get-prefers-reduced-motion.ts","webpack://_N_E/../../libs/osc/scroll-animation/src/lib/ScrollAnimation.tsx","webpack://_N_E/../../libs/osc/scroll-animation/src/lib/index.ts","webpack://_N_E/../../libs/osc/scroll-animation/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/MastheadImage/Masthead-overlay-image.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/MastheadImage/ForTheStayOverlay.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/MastheadImage/utils/masthead-analytics.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/MastheadImage/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/MastheadImage/index.tsx","webpack://_N_E/../../libs/osc/brand-horizontal-tabbed-section/src/lib/brand-horizontal-tabbed-section-content.tsx","webpack://_N_E/../../libs/osc/brand-horizontal-tabbed-section/src/lib/brand-horizontal-tabbed-section.tsx","webpack://_N_E/../../libs/osc/brand-horizontal-tabbed-section/src/lib/index.ts","webpack://_N_E/../../libs/osc/brand-horizontal-tabbed-section/src/index.ts","webpack://_N_E/../../libs/osc/vertical-tabs/src/lib/vertical-tab-button.tsx","webpack://_N_E/../../libs/osc/vertical-tabs/src/lib/vertical-tab.tsx","webpack://_N_E/../../libs/osc/vertical-tabs/src/lib/vertical-tab-panel.tsx","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.3_@types+react-dom@18.3.1_@types+react@18.3.18_react-do_b573f2f14753c843b813a0cea82ea3f0/node_modules/@radix-ui/react-collapsible/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-accordion@1.2.3_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-accordion/dist/index.mjs","webpack://_N_E/../../libs/osc/accordion/src/lib/accordion.tsx","webpack://_N_E/../../libs/osc/accordion/src/index.ts","webpack://_N_E/../../libs/osc/vertical-tabs/src/lib/vertical-tabs.tsx","webpack://_N_E/../../libs/osc/vertical-tabs/src/lib/index.ts","webpack://_N_E/../../libs/osc/vertical-tabs/src/index.ts","webpack://_N_E/../../libs/osc/brand-vertical-tabbed-section/src/lib/brand-vertical-tabbed-section-content.tsx","webpack://_N_E/../../libs/osc/brand-vertical-tabbed-section/src/lib/brand-vertical-tabbed-section.tsx","webpack://_N_E/../../libs/osc/brand-vertical-tabbed-section/src/lib/index.ts","webpack://_N_E/../../libs/osc/brand-vertical-tabbed-section/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TabbedSection/HamptonHexVisual.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TabbedSection/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TabbedSection/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TextBlock/MarkdownBlock.tsx","webpack://_N_E/../../libs/osc/curved-heading/src/lib/curved-heading.tsx","webpack://_N_E/../../libs/osc/curved-heading/src/lib/index.ts","webpack://_N_E/../../libs/osc/curved-heading/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TextBlock/svg/by-hilton.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TextBlock/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TextBlock/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TextHighlight/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/TextHighlight/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/VideoPoster/AttachedContent.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/VideoPoster/VideoPoster.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/VideoPoster/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/VideoPoster/index.tsx","webpack://_N_E/../../libs/osc/patchwork-grid/src/lib/utils/patchwork-grid-analytics.ts","webpack://_N_E/../../libs/osc/patchwork-grid/src/lib/patchwork-grid-row.tsx","webpack://_N_E/../../libs/osc/patchwork-grid/src/lib/patchwork-grid.tsx","webpack://_N_E/../../libs/osc/patchwork-grid/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/PatchworkGrid/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/PatchworkGrid/index.tsx","webpack://_N_E/../../libs/osc/filmstrip/src/lib/image-control-button.tsx","webpack://_N_E/../../libs/osc/filmstrip/src/lib/utils.tsx","webpack://_N_E/../../libs/osc/filmstrip/src/lib/utils/filmstrip-analytics.ts","webpack://_N_E/../../libs/osc/filmstrip/src/lib/filmstrip.tsx","webpack://_N_E/../../libs/osc/filmstrip/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Filmstrip/BrandFilmstrip.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Filmstrip/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Filmstrip/index.tsx","webpack://_N_E/../../libs/osc/full-width-media/src/lib/utils/full-width-media-analytics.ts","webpack://_N_E/../../libs/osc/full-width-media/src/lib/full-width-media.tsx","webpack://_N_E/../../libs/osc/full-width-media/src/lib/hampton-hex-block.tsx","webpack://_N_E/../../libs/osc/full-width-media/src/lib/index.ts","webpack://_N_E/../../libs/osc/full-width-media/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/components/brand/full-width-media-copy-overlay/definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FullWidthMediaAndCopy/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FullWidthMediaAndCopy/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FullWidthMediaAndCopyOverlay/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/FullWidthMediaAndCopyOverlay/index.tsx","webpack://_N_E/../../libs/osc/offset/src/lib/utils.tsx","webpack://_N_E/../../libs/osc/offset/src/lib/utils/offset-analytics.ts","webpack://_N_E/../../libs/utilities/get-react-node-inner-text/src/lib/get-react-node-inner-text.ts","webpack://_N_E/../../libs/utilities/get-react-node-inner-text/src/lib/index.ts","webpack://_N_E/../../libs/utilities/get-react-node-inner-text/src/index.ts","webpack://_N_E/../../libs/osc/offset/src/lib/offset.tsx","webpack://_N_E/../../libs/osc/offset/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Offset/BrandOffset.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Offset/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Offset/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Accordion/Accordion.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Accordion/AccordionContent.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Accordion/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/Accordion/index.tsx","webpack://_N_E/../../libs/osc/spacer/src/lib/spacer.tsx","webpack://_N_E/../../libs/osc/spacer/src/lib/index.ts","webpack://_N_E/../../libs/osc/spacer/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/IllustrationBlock/illustrations/livsmart-accent.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/IllustrationBlock/illustrations/livsmart-furniture.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/IllustrationBlock/illustrations/enterprise-filigree.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/IllustrationBlock/illustrations/hampton-signature.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/IllustrationBlock/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/IllustrationBlock/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/DynamicGrid/cpm-component-definition.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/mapping/DynamicGrid/index.tsx","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/utils/constants.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/hooks/use-preview-segments-from-url.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/utils/conductrics.ts","webpack://_N_E/../../libs/cpm/cpm-mapping-shared/src/index.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/generated/queries.tsx","webpack://_N_E/external assign \"window\"","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/validators.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/parseComponentParams.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/unknown-object-helpers.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/schema.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/adapters/getters.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/helpers.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/transformers/transform-links.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/transformers/compound-image-breakpoint-sizes.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/getBrandCodeFromPage.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/remove-nully-from-array.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/transformers/enhancers.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/add-campaign-id-to-url.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/register-experiment-item.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/mapCpmData.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/fetching/get-page-seo-data.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/has-page-got-h1.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/cpmMappedPage.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/fetchServerCpmPage.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/ErrorBlock.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/CpmMappingError.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/ErrorBoundary.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/context.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/adapters/hooks.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/hooks/use-issues.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/context/CpmMergedBrPageContext.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/hooks/use-data.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/hooks/use-hide-manage-content-button.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/EditorIssues.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/NewContentBanner.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/NullDocumentBanner.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/context/EditorPageSegmentationContext.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/SegmentationWrapper.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/EditWrapper.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/Fallback.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/adapters/components.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/context/CookiesContext.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/get-is-reduced-motion.ts","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/DataWrapper.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/ConductricsWrapper.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/context/ConductricsAgents.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/context/PreviewConductricsAgents.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/segments.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/constants.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/context/PreviewSegmentsContext.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/hooks/use-segments.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/filter-experimentation-items.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/hooks/use-sync-br-page.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/validate-component-effects.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/CpmRenderer.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/generateCpmAppInterface.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/fetching/make-client-br-configuration.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/useClientCpmPage.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/mappingEngine/createCpmComponentDefinition.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/GenericError.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/hooks/use-manage-content-button.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/utils/select-asset-with-aspect-ratio.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/HeadingAnalyzer/HeadingAnalyzer.tsx","webpack://_N_E/../../libs/cpm/cpm-sdk/src/hooks/use-heading-analyzer.ts","webpack://_N_E/../../libs/cpm/cpm-sdk/src/index.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/guest-utils.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/conductrics/src/lib/conductrics.ts","webpack://_N_E/../../libs/framework/conductrics/src/lib/conductrics-hooks.tsx","webpack://_N_E/../../libs/framework/conductrics/src/lib/util/should-render-experiment.ts","webpack://_N_E/../../libs/framework/conductrics/src/lib/util/use-should-render-experiment.ts","webpack://_N_E/../../libs/framework/conductrics/src/lib/index.ts","webpack://_N_E/../../libs/framework/conductrics/src/index.ts","webpack://_N_E/../../libs/framework/env/src/lib/default-public-vars.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/date-time-utils.ts","webpack://_N_E/../../libs/framework/i18n/src/lib/number-utils.ts","webpack://_N_E/../../libs/framework/i18n/src/generated/queries.ts","webpack://_N_E/../../libs/framework/i18n/src/lib/onelink-utils.ts","webpack://_N_E/../../libs/framework/i18n/src/lib/string-utils.ts","webpack://_N_E/../../libs/framework/i18n/src/lib/translated-url.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/location-provider/src/lib/utils/constants.ts","webpack://_N_E/../../libs/framework/location-provider/src/lib/location-context.ts","webpack://_N_E/../../libs/framework/location-provider/src/lib/utils/session.ts","webpack://_N_E/../../libs/framework/location-provider/src/lib/location-util.ts","webpack://_N_E/../../libs/framework/location-provider/src/lib/location-provider.tsx","webpack://_N_E/../../libs/framework/location-provider/src/lib/index.ts","webpack://_N_E/../../libs/framework/location-provider/src/index.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/../../libs/utilities/cookies/src/lib/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/framework/react-query/src/lib/cookie-forward.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/framework/uri-builder/src/lib/constants.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/types.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/uri-builder-utils/uri-builder.utils.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/search-uri-builder/search-uri-builder.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/search-uri-builder/index.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/location-uri-builder/location-uri-builder.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/location-uri-builder/index.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/book-uri-builder/index.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/property-uri-builder/property-uri-builder.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/property-uri-builder/index.ts","webpack://_N_E/../../libs/framework/uri-builder/src/lib/index.ts","webpack://_N_E/../../libs/framework/uri-builder/src/index.ts","webpack://_N_E/../../libs/osc/animate-reveal-item/src/lib/animate-reveal-item.tsx","webpack://_N_E/../../libs/osc/animate-reveal-item/src/lib/index.ts","webpack://_N_E/../../libs/osc/animate-reveal-item/src/index.ts","webpack://_N_E/../../libs/osc/brand-buttons/src/lib/brand-icon.tsx","webpack://_N_E/../../libs/osc/brand-buttons/src/lib/util/button.ts","webpack://_N_E/../../libs/osc/brand-buttons/src/lib/brand-link.tsx","webpack://_N_E/../../libs/osc/brand-buttons/src/lib/brand-button.tsx","webpack://_N_E/../../libs/osc/brand-buttons/src/lib/index.ts","webpack://_N_E/../../libs/osc/brand-buttons/src/index.ts","webpack://_N_E/../../libs/osc/brand-text-body/src/lib/brand-text-body.tsx","webpack://_N_E/../../libs/osc/brand-text-body/src/lib/index.ts","webpack://_N_E/../../libs/osc/brand-text-body/src/index.ts","webpack://_N_E/../../libs/osc/brand-text-header/src/lib/brand-text-header.tsx","webpack://_N_E/../../libs/osc/brand-text-header/src/lib/index.ts","webpack://_N_E/../../libs/osc/brand-text-header/src/index.ts","webpack://_N_E/../../libs/osc/brands-data/src/generated/queries.tsx","webpack://_N_E/../../libs/osc/brands-data/src/lib/constants.ts","webpack://_N_E/../../libs/osc/brands-data/src/lib/env-constants.ts","webpack://_N_E/../../libs/osc/brands-data/src/lib/is-portfolio-redirect.ts","webpack://_N_E/../../libs/osc/brands-data/src/lib/get-brand-route-params.ts","webpack://_N_E/../../libs/osc/brands-data/src/lib/is-brand-home-page-url-format.ts","webpack://_N_E/../../libs/osc/brands-data/src/lib/query-strings.ts","webpack://_N_E/../../libs/osc/brands-data/src/lib/index.ts","webpack://_N_E/../../libs/osc/brands-data/src/index.ts","webpack://_N_E/../../libs/osc/brands-header/src/lib/utils.ts","webpack://_N_E/../../libs/osc/brands-header/src/lib/brands-header.tsx","webpack://_N_E/../../libs/osc/brands-header/src/lib/index.ts","webpack://_N_E/../../libs/osc/brands-header/src/index.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.constants.ts","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInDays.js","webpack://_N_E/../../libs/osc/special-rates/src/lib/utils.ts","webpack://_N_E/../../libs/utilities/use-smb-context-local-storage/src/lib/use-smb-context-local-storage.tsx","webpack://_N_E/../../libs/utilities/use-smb-context-local-storage/src/index.ts","webpack://_N_E/../../libs/osc/special-rates/src/lib/special-rates.tsx","webpack://_N_E/../../libs/osc/special-rates/src/index.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/gql/queries.ts","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/disabled.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/micro-task.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/disposables.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-disposables.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/form.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/class-names.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/match.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/render.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/hidden.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/form-fields.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/id.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/env.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-latest-value.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-event.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/components/description/description.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/components/label/label.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/components/field/field.js","webpack://_N_E/../../node_modules/.pnpm/@react-aria+utils@3.27.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/utils/dist/platform.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+utils@3.27.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/utils/dist/isVirtualEvent.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+utils@3.27.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/utils/dist/domHelpers.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+interactions@3.23.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/interactions/dist/useFocusVisible.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+utils@3.27.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/utils/dist/useLayoutEffect.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+utils@3.27.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/utils/dist/useEffectEvent.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+interactions@3.23.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/interactions/dist/utils.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+interactions@3.23.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/interactions/dist/useFocus.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+interactions@3.23.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/interactions/dist/useFocusWithin.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+focus@3.19.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/focus/dist/useFocusRing.mjs","webpack://_N_E/../../node_modules/.pnpm/@react-aria+interactions@3.23.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@react-aria/interactions/dist/useHover.mjs","webpack://_N_E/../../node_modules/.pnpm/@tanstack+virtual-core@3.13.0/node_modules/@tanstack/virtual-core/dist/esm/utils.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+virtual-core@3.13.0/node_modules/@tanstack/virtual-core/dist/esm/index.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-virtual@3.13.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-virtual/dist/esm/index.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/owner.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-active-press.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-by-comparator.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-controllable.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-default-value.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-element-size.js","webpack://_N_E/../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_super_prop_base.js","webpack://_N_E/../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/default-map.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/store.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-store.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-inert-others.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/focus-management.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/platform.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-document-event.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-window-event.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-outside-click.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-owner.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-event-listener.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-refocusable-input.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-flags.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-transition.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-watch.js","webpack://_N_E/../../node_modules/.pnpm/@floating-ui+react@0.26.28_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","webpack://_N_E/../../node_modules/.pnpm/@floating-ui+react@0.26.28_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@floating-ui/react/dist/floating-ui.react.mjs","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/floating.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/frozen.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/open-closed.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/document-ready.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/active-element-history.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/bugs.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/utils/calculate-active-index.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/components/keyboard.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/components/mouse.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/internal/portal-force-root.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/components/portal/portal.js","webpack://_N_E/../../node_modules/.pnpm/@headlessui+react@2.2.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@headlessui/react/dist/components/combobox/combobox.js","webpack://_N_E/../../libs/framework/places-autocomplete/src/lib/use-places-autocomplete.tsx","webpack://_N_E/../../libs/framework/places-autocomplete/src/lib/use-suggestions.tsx","webpack://_N_E/../../libs/framework/places-autocomplete/src/lib/index.ts","webpack://_N_E/../../libs/framework/places-autocomplete/src/index.ts","webpack://_N_E/../../libs/osc/location/src/lib/location-options/hotels-near-me-option.tsx","webpack://_N_E/../../libs/osc/location/src/lib/location-options/location-options-utils.ts","webpack://_N_E/../../libs/osc/location/src/lib/icons.constant.ts","webpack://_N_E/../../libs/osc/location/src/lib/autoComplete-suggestion-options.tsx","webpack://_N_E/../../libs/osc/location/src/lib/location-options/popular-destinations.tsx","webpack://_N_E/../../libs/osc/location/src/lib/location-options/recent-searches.tsx","webpack://_N_E/../../libs/osc/location/src/lib/gql/queries.ts","webpack://_N_E/../../libs/osc/location/src/lib/location.input.tsx","webpack://_N_E/../../libs/osc/location/src/lib/location.tsx","webpack://_N_E/../../libs/osc/location/src/index.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/constants/featureToggles.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.utils.ts","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameYear.js","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.summary.utils.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.summary.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/hooks/use-shop-form-speedbump.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.geocode-fail-modal.tsx","webpack://_N_E/../../libs/utilities/feature-toggles-configs/src/lib/getFeatureToggleConfig.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/hooks/use-aarp-toggle.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.tsx","webpack://_N_E/../../libs/utilities/use-previous-value/src/lib/use-previous-value.tsx","webpack://_N_E/../../libs/utilities/use-previous-value/src/lib/index.ts","webpack://_N_E/../../libs/utilities/use-previous-value/src/index.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.provider.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.location.tsx","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeInterval.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachDayOfInterval.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subDays.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfMonth.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDay.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDaysInMonth.js","webpack://_N_E/../../libs/utilities/dates/src/lib/utils.tsx","webpack://_N_E/../../libs/utilities/dates/src/lib/use-days-of-week.tsx","webpack://_N_E/../../libs/utilities/dates/src/lib/use-date-format.tsx","webpack://_N_E/../../libs/utilities/dates/src/lib/use-locale.tsx","webpack://_N_E/../../libs/utilities/dates/src/lib/index.ts","webpack://_N_E/../../libs/utilities/dates/src/index.ts","webpack://_N_E/../../libs/osc/date-picker/src/lib/date-picker.dates-button.tsx","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfMonth.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameMonth.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameDay.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isAfter.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isBefore.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addMonths.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subMonths.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isFirstDayOfMonth.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isWithinInterval.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastDayOfWeek.js","webpack://_N_E/../../libs/osc/calendar/src/lib/calendar.day.tsx","webpack://_N_E/../../libs/osc/calendar/src/lib/calendar.month.tsx","webpack://_N_E/../../libs/osc/calendar/src/lib/calendar.tsx","webpack://_N_E/../../libs/osc/calendar/src/index.ts","webpack://_N_E/../../libs/osc/date-picker/src/lib/date-picker.calendar.tsx","webpack://_N_E/../../libs/osc/date-picker/src/lib/date-picker.tsx","webpack://_N_E/../../libs/osc/date-picker/src/lib/date-picker.screenreader.tsx","webpack://_N_E/../../libs/osc/date-picker/src/index.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.dates.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.info-container.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/use-shop-form-context.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.button.tsx","webpack://_N_E/../../libs/osc/tooltip/src/lib/tooltip.tsx","webpack://_N_E/../../libs/osc/tooltip/src/index.ts","webpack://_N_E/../../libs/osc/stepper/src/lib/stepper.tsx","webpack://_N_E/../../libs/osc/stepper/src/lib/index.ts","webpack://_N_E/../../libs/osc/stepper/src/index.ts","webpack://_N_E/../../libs/osc/rooms/src/lib/rooms.room.tsx","webpack://_N_E/../../libs/osc/rooms/src/lib/rooms.tsx","webpack://_N_E/../../libs/osc/rooms/src/lib/rooms.modal.tsx","webpack://_N_E/../../libs/osc/rooms/src/index.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.rooms.tsx","webpack://_N_E/../../libs/osc/info-popup/src/lib/info-popup.tsx","webpack://_N_E/../../libs/osc/info-popup/src/index.ts","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.group.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.special-rates.tsx","webpack://_N_E/../../libs/osc/shop-form/src/lib/shop-form.nights.tsx","webpack://_N_E/../../libs/osc/shop-form/src/index.ts","webpack://_N_E/../../libs/osc/brands-search/src/generated/queries.tsx","webpack://_N_E/../../libs/osc/brands-search/src/lib/use-location-options-data.ts","webpack://_N_E/../../libs/osc/brands-search/src/lib/use-get-mvt-selections.ts","webpack://_N_E/../../libs/osc/brands-search/src/lib/brands-search.tsx","webpack://_N_E/../../libs/osc/brands-search/src/lib/generate-url.ts","webpack://_N_E/../../libs/osc/brands-search/src/lib/map-data-to-special-rates.ts","webpack://_N_E/../../libs/osc/brands-search/src/lib/index.ts","webpack://_N_E/../../libs/osc/brands-search/src/index.ts","webpack://_N_E/../../libs/osc/brands-wrappers/src/lib/parallax-illustrations.tsx","webpack://_N_E/../../libs/osc/brands-wrappers/src/lib/brand-component-theme-inline.tsx","webpack://_N_E/../../libs/osc/brands-wrappers/src/lib/OneLinkWrapper.tsx","webpack://_N_E/../../libs/osc/brands-wrappers/src/lib/use-initialize-conductrics.ts","webpack://_N_E/../../libs/osc/brands-wrappers/src/lib/index.ts","webpack://_N_E/../../libs/osc/brands-wrappers/src/index.ts","webpack://_N_E/../../libs/osc/caption/src/lib/caption.tsx","webpack://_N_E/../../libs/osc/caption/src/lib/index.ts","webpack://_N_E/../../libs/osc/caption/src/index.ts","webpack://_N_E/../../libs/osc/carousel/src/lib/carousel-no-image.tsx","webpack://_N_E/../../libs/osc/carousel/src/lib/carousel-image.tsx","webpack://_N_E/../../libs/osc/carousel/src/lib/utils/carousel-analytics.ts","webpack://_N_E/../../libs/osc/carousel/src/lib/carousel-single.tsx","webpack://_N_E/../../libs/osc/carousel/src/index.ts","webpack://_N_E/../../libs/osc/controls/src/lib/control-back.tsx","webpack://_N_E/../../libs/osc/controls/src/lib/control-close.tsx","webpack://_N_E/../../libs/osc/controls/src/lib/control-next.tsx","webpack://_N_E/../../libs/osc/controls/src/index.ts","webpack://_N_E/../../libs/osc/custom-markdown/src/lib/custom-markdown.tsx","webpack://_N_E/../../libs/osc/custom-markdown/src/index.ts","webpack://_N_E/../../libs/osc/cycle/src/lib/cycle.context.tsx","webpack://_N_E/../../libs/osc/cycle/src/lib/cycle.tsx","webpack://_N_E/../../libs/osc/cycle/src/index.ts","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.6_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-dialog/dist/index.mjs","webpack://_N_E/../../libs/osc/dialog-v2/src/lib/dialog.base.tsx","webpack://_N_E/../../libs/osc/dialog-v2/src/lib/dialog.tsx","webpack://_N_E/../../libs/osc/dialog-v2/src/lib/dialog-alert.tsx","webpack://_N_E/../../libs/osc/dialog-v2/src/lib/dialog-action-buttons.tsx","webpack://_N_E/../../libs/osc/dialog-v2/src/lib/dialog-action.tsx","webpack://_N_E/../../libs/osc/dialog-v2/src/lib/index.ts","webpack://_N_E/../../libs/osc/dialog-v2/src/index.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-image.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/utils/dynamic-grid-analytics.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-item.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/utils/dynamic-grid-column-count.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-item-wom.tsx","webpack://_N_E/../../libs/utilities/use-has-overflow/src/lib/use-has-overflow.ts","webpack://_N_E/../../libs/utilities/use-has-overflow/src/lib/index.ts","webpack://_N_E/../../libs/utilities/use-has-overflow/src/index.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/dynamic-grid-wom.tsx","webpack://_N_E/../../libs/osc/dynamic-grids/src/lib/index.ts","webpack://_N_E/../../libs/osc/dynamic-grids/src/index.ts","webpack://_N_E/../../node_modules/.pnpm/react-error-boundary@5.0.0_react@18.3.1/node_modules/react-error-boundary/dist/react-error-boundary.esm.js","webpack://_N_E/../../libs/osc/error-boundary/src/lib/error-boundary.tsx","webpack://_N_E/../../libs/osc/error-boundary/src/index.ts","webpack://_N_E/../../libs/osc/footer/src/lib/footer.tsx","webpack://_N_E/../../libs/osc/footer/src/lib/index.ts","webpack://_N_E/../../libs/osc/footer/src/index.ts","webpack://_N_E/../../libs/osc/form/src/lib/form.error-icon.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.error.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.connector.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.help-message.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.label-helper.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.label.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.input.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.legend.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.card-number-input.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.select.tsx","webpack://_N_E/../../libs/osc/form/src/lib/form.textarea.tsx","webpack://_N_E/../../libs/osc/form/src/index.ts","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-arrow@1.1.2_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-arrow/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-popper@1.2.2_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-popper/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.2_@types+react-dom@18.3.1_@types+react@18.3.18_react-d_02dc9a4e12418433f081a293d26a1b8b/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-menu@2.1.6_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-menu/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-dropdown-menu@2.1.6_@types+react-dom@18.3.1_@types+react@18.3.18_react-_a3eca0ae8a030d3fe2cb3bb8954216c2/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","webpack://_N_E/../../libs/osc/login/src/lib/login.types.ts","webpack://_N_E/../../libs/osc/login/src/lib/frame.tsx","webpack://_N_E/../../libs/osc/login/src/lib/login.icon.tsx","webpack://_N_E/../../libs/osc/login/src/lib/login.tsx","webpack://_N_E/../../libs/osc/login/src/index.ts","webpack://_N_E/../../libs/queries/osc-language-selector/src/generated/queries.ts","webpack://_N_E/../../libs/queries/osc-language-selector/src/index.ts","webpack://_N_E/../../libs/osc/language-selector/src/lib/osc-language-code-names.tsx","webpack://_N_E/../../libs/osc/language-selector/src/lib/hooks/useLanguageSelectorLanguages.ts","webpack://_N_E/../../libs/osc/language-selector/src/lib/osc-language-selector.tsx","webpack://_N_E/../../libs/osc/language-selector/src/index.ts","webpack://_N_E/../../libs/osc/drawer/src/lib/drawer.tsx","webpack://_N_E/../../libs/osc/drawer/src/index.ts","webpack://_N_E/../../libs/osc/header/src/lib/gql/queries.ts","webpack://_N_E/../../libs/osc/header/src/lib/header.utilities.tsx","webpack://_N_E/../../libs/osc/header/src/lib/header.logo.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/nav-items.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mvtest-nhcbp-5758/nav-item-glow.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/popup-contents.tsx","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-popover@1.1.6_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-popover/dist/index.mjs","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mvtest-nhcbp-5758/speech-bubble.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mvtest-nhcbp-5758/nav-item-speech-bubble.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/mega-menu.tsx","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/nav-drawer-list.tsx","webpack://_N_E/../../libs/osc/header/src/lib/hooks/useActiveUserLinks.ts","webpack://_N_E/../../libs/osc/header/src/lib/brand-header-body/brand-header-body.tsx","webpack://_N_E/../../libs/osc/banner-notification/src/lib/banner-notification.tsx","webpack://_N_E/../../libs/osc/banner-notification/src/index.ts","webpack://_N_E/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/useMutation.js","webpack://_N_E/../../libs/osc/join-form/src/lib/queries/generated/queries.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/auto-complete.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/address-fields.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/password-fields.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/form-validation-regex.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/phone-fields.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/marketing-content-css.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/marketing-content.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/utils/join-form-analytics.ts","webpack://_N_E/../../libs/osc/join-form/src/lib/join-form.tsx","webpack://_N_E/../../libs/osc/join-form/src/lib/index.ts","webpack://_N_E/../../libs/osc/join-form/src/index.ts","webpack://_N_E/../../libs/osc/join-modal-button/src/lib/osc-join-modal-button.tsx","webpack://_N_E/../../libs/osc/join-modal-button/src/index.ts","webpack://_N_E/../../libs/osc/header/src/lib/header.tsx","webpack://_N_E/../../libs/osc/header/src/lib/util/filter-mega-nav-experiments.ts","webpack://_N_E/../../libs/osc/header/src/lib/hooks/use-filter-mega-nav-experiments.ts","webpack://_N_E/../../libs/osc/header/src/index.ts","webpack://_N_E/../../libs/osc/heading-level/src/lib/heading-level.tsx","webpack://_N_E/../../libs/osc/heading-level/src/lib/index.ts","webpack://_N_E/../../libs/osc/heading-level/src/index.ts","webpack://_N_E/../../libs/osc/hero-image/src/lib/hero-image.tsx","webpack://_N_E/../../libs/osc/hero-image/src/index.ts","webpack://_N_E/../../libs/osc/icon/src/lib/osc-icon-map.tsx","webpack://_N_E/../../libs/osc/icon/src/lib/osc-brand-icon-map.tsx","webpack://_N_E/../../libs/osc/icon/src/lib/osc-icon.tsx","webpack://_N_E/../../libs/osc/icon/src/lib/osc-amenity-icon-map.tsx","webpack://_N_E/../../libs/osc/icon/src/index.ts","webpack://_N_E/../../libs/osc/link/src/lib/link.ad-choices.tsx","webpack://_N_E/../../libs/osc/link/src/lib/link.new-window.tsx","webpack://_N_E/../../libs/osc/link/src/lib/link.utils.ts","webpack://_N_E/../../libs/osc/link/src/lib/link.tsx","webpack://_N_E/../../libs/osc/link/src/index.ts","webpack://_N_E/../../libs/osc/markdown/src/lib/markdown.tsx","webpack://_N_E/../../libs/osc/markdown/src/index.ts","webpack://_N_E/../../libs/osc/back-to-top/src/lib/back-to-top.tsx","webpack://_N_E/../../libs/osc/back-to-top/src/index.ts","webpack://_N_E/../../libs/osc/marketing-layout/src/lib/custom-head/custom-head.tsx","webpack://_N_E/../../libs/osc/marketing-layout/src/lib/custom-head/index.ts","webpack://_N_E/../../libs/osc/marketing-layout/src/lib/layout/layout.tsx","webpack://_N_E/../../libs/osc/marketing-layout/src/lib/layout/index.ts","webpack://_N_E/../../libs/osc/marketing-layout/src/lib/index.ts","webpack://_N_E/../../libs/osc/marketing-layout/src/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/utils/get-prefers-reduced-motion.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/brand-showcase/brand-showcase.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/brand-showcase/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/dialog-with-content/dialog-with-content.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/dialog-with-content/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/full-width-image.types.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/libs/utils/full-width-image-analytics.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/full-width-image.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/libs/utils/half-and-half-analytics.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/half-and-half-content.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/half-and-half.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/half-and-half-carousel.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner-content.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/utils/image-headliner-analytics.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner-controls.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner-item.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/security-dialog/security-dialog.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/security-dialog/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/index.ts","webpack://_N_E/../../libs/osc/marketing/src/index.ts","webpack://_N_E/../../libs/osc/pagination/src/lib/pagination.tsx","webpack://_N_E/../../libs/osc/pagination/src/index.ts","webpack://_N_E/../../libs/osc/popup/src/lib/popup.context.tsx","webpack://_N_E/../../libs/osc/popup/src/lib/popup.utils.ts","webpack://_N_E/../../libs/osc/popup/src/lib/popup.tsx","webpack://_N_E/../../libs/osc/popup/src/lib/popup.button.tsx","webpack://_N_E/../../libs/osc/popup/src/lib/popup.content.tsx","webpack://_N_E/../../libs/osc/popup/src/index.ts","webpack://_N_E/../../libs/osc/responsive-image/src/lib/utils/element-selector.tsx","webpack://_N_E/../../libs/osc/responsive-image/src/lib/responsive-image.tsx","webpack://_N_E/../../libs/osc/responsive-image/src/lib/responsive-picture.tsx","webpack://_N_E/../../libs/osc/responsive-image/src/lib/utils/get-current-aspect-ratio-and-url.ts","webpack://_N_E/../../libs/osc/responsive-image/src/lib/index.ts","webpack://_N_E/../../libs/osc/responsive-image/src/index.ts","webpack://_N_E/../../libs/osc/speedbump/src/lib/gql/queries.ts","webpack://_N_E/../../libs/osc/speedbump/src/lib/hooks/useFeatureConfigs.ts","webpack://_N_E/../../libs/osc/speedbump/src/lib/use-speedbump.tsx","webpack://_N_E/../../libs/osc/speedbump/src/lib/speedbump.tsx","webpack://_N_E/../../libs/osc/speedbump/src/lib/index.ts","webpack://_N_E/../../libs/osc/speedbump/src/index.ts","webpack://_N_E/../../libs/osc/spinner/src/lib/spinner.tsx","webpack://_N_E/../../libs/osc/spinner/src/lib/spinner-dialog.tsx","webpack://_N_E/../../libs/osc/spinner/src/lib/index.ts","webpack://_N_E/../../libs/osc/spinner/src/index.ts","webpack://_N_E/../../libs/osc/text-block/src/lib/blocks/text-block-cta.tsx","webpack://_N_E/../../libs/osc/text-block/src/lib/blocks/text-block-description.tsx","webpack://_N_E/../../libs/osc/text-block/src/lib/blocks/text-block-heading.tsx","webpack://_N_E/../../libs/osc/text-block/src/lib/blocks/text-block-ordered-list.tsx","webpack://_N_E/../../libs/osc/text-block/src/lib/blocks/text-block-unordered-list.tsx","webpack://_N_E/../../libs/osc/text-block/src/lib/blocks/index.ts","webpack://_N_E/../../libs/osc/text-block/src/lib/text-block.tsx","webpack://_N_E/../../libs/osc/text-block/src/index.ts","webpack://_N_E/../../libs/osc/textual-block/src/lib/textual-block.tsx","webpack://_N_E/../../libs/osc/textual-block/src/lib/index.ts","webpack://_N_E/../../libs/osc/textual-block/src/index.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/hooks/use-autoplay.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/util/add-track.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/hooks/use-track-query.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/hooks/use-fade-controls.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/util/matchers.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/util/metrics.ts","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+number@1.1.0/node_modules/@radix-ui/number/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-previous/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-slider@1.2.3_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-slider/dist/index.mjs","webpack://_N_E/../../libs/osc/slider/src/lib/use-inline-gradient.tsx","webpack://_N_E/../../libs/osc/slider/src/lib/use-resize-observer.tsx","webpack://_N_E/../../libs/osc/slider/src/lib/thumb-labels.tsx","webpack://_N_E/../../libs/osc/slider/src/lib/slider.tsx","webpack://_N_E/../../libs/osc/slider/src/lib/index.ts","webpack://_N_E/../../libs/osc/slider/src/index.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/util/classes.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.volume-slider.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/hooks/use-control-menu.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/util/cue.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/util/event-emitter.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/hooks/use-video-player.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.player.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.control-button.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.control-icon.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.control-menu.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.control-list.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.control-item.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.settings-menu.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.controls.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.captions.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.transcripts.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/hooks/use-video-player-classnames.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.markup.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.mapper.ts","webpack://_N_E/../../libs/osc/video-player/src/lib/index.ts","webpack://_N_E/../../libs/osc/video-player/src/index.ts","webpack://_N_E/../../libs/utilities/get-video-src/src/lib/get-video-src.ts","webpack://_N_E/../../libs/utilities/get-video-src/src/lib/index.ts","webpack://_N_E/../../libs/utilities/get-video-src/src/index.ts","webpack://_N_E/../../libs/osc/youtube-video/src/lib/youtube-video.tsx","webpack://_N_E/../../libs/osc/youtube-video/src/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/utilities/accessibility/src/lib/use-has-user-modified-font-defaults.ts","webpack://_N_E/../../libs/utilities/accessibility/src/lib/index.ts","webpack://_N_E/../../libs/utilities/accessibility/src/index.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/utilities/get-language-direction/src/lib/get-language-direction.ts","webpack://_N_E/../../libs/utilities/is-browser/src/lib/is-browser.ts","webpack://_N_E/../../libs/utilities/url-config/src/lib/url-config.ts","webpack://_N_E/../../libs/utilities/url-config/src/lib/index.ts","webpack://_N_E/../../libs/utilities/url-config/src/index.ts","webpack://_N_E/../../libs/utilities/use-forked-ref/src/lib/use-forked-ref.tsx","webpack://_N_E/../../libs/utilities/use-forked-ref/src/index.ts","webpack://_N_E/../../libs/utilities/use-rect/src/lib/oberserve-rect.tsx","webpack://_N_E/../../libs/utilities/use-rect/src/lib/use-rect.tsx","webpack://_N_E/../../libs/utilities/use-rect/src/lib/index.ts","webpack://_N_E/../../libs/utilities/use-rect/src/index.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/../../src/client/get-domain-locale.ts","webpack://_N_E/../../src/client/image-component.tsx","webpack://_N_E/../../../src/client/legacy/image.tsx","webpack://_N_E/../../src/client/link.tsx","webpack://_N_E/../../src/client/normalize-locale-path.ts","webpack://_N_E/../../src/client/use-intersection.tsx","webpack://_N_E/../../src/client/use-merged-ref.ts","webpack://_N_E/../../../src/shared/lib/dynamic.tsx","webpack://_N_E/../../../src/shared/lib/get-img-props.ts","webpack://_N_E/../../../src/shared/lib/image-blur-svg.ts","webpack://_N_E/../../../src/shared/lib/image-external.tsx","webpack://_N_E/../../../src/shared/lib/image-loader.ts","webpack://_N_E/../../../src/shared/lib/loadable-context.shared-runtime.ts","webpack://_N_E/../../../src/shared/lib/loadable.shared-runtime.tsx","webpack://_N_E/../../libs/osc/video-player/src/lib/video-player.css","webpack://_N_E/./styles/global.css","webpack://_N_E/../../libs/cpm/cpm-sdk/src/components/HeadingAnalyzer/HeadingAnalyzer.module.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.85.1/node_modules/next/dynamic.js","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.85.1/node_modules/next/head.js","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.85.1/node_modules/next/image.js","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.85.1/node_modules/next/legacy/image.js","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.85.1/node_modules/next/link.js","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.85.1/node_modules/next/router.js","webpack://_N_E/../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","webpack://_N_E/../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js","webpack://_N_E/../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/constants.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/FocusGuard.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/medium.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/scope.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/Lock.js","webpack://_N_E/../../node_modules/.pnpm/react-clientside-effect@1.2.7_react@18.3.1/node_modules/react-clientside-effect/lib/index.es.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/array.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/is.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/tabOrder.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/tabbables.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/tabUtils.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/DOMutils.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/safe.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/focusIsHidden.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/all-affected.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/focusInside.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/commands.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/correctFocus.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/firstFocus.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/solver.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/auto-focus.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/utils/parenting.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/focusSolver.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/moveFocusInside.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/return-focus.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/focusables.js","webpack://_N_E/../../node_modules/.pnpm/focus-lock@1.3.6/node_modules/focus-lock/dist/es2015/sibling.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/util.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/Trap.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/Combination.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.6_@types+react@18.3.18_react@18.3.1/node_modules/react-focus-lock/dist/es2015/index.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/react-remove-scroll-bar@2.3.8_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/medium.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/UI.js","webpack://_N_E/../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.18_react@18.3.1/node_modules/use-sidecar/dist/es2015/exports.js","webpack://_N_E/../../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","webpack://_N_E/../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.18_react@18.3.1/node_modules/react-style-singleton/dist/es2015/singleton.js","webpack://_N_E/../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.18_react@18.3.1/node_modules/react-style-singleton/dist/es2015/hook.js","webpack://_N_E/../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.18_react@18.3.1/node_modules/react-style-singleton/dist/es2015/component.js","webpack://_N_E/../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.18_react@18.3.1/node_modules/react-style-singleton/dist/es2015/index.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/component.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/index.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/sidecar.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.18_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/Combination.js","webpack://_N_E/../../node_modules/.pnpm/parallax-controller@1.7.1/node_modules/parallax-controller/dist/parallax-controller.esm.js","webpack://_N_E/../../node_modules/.pnpm/react-scroll-parallax@3.4.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-scroll-parallax/dist/react-scroll-parallax.esm.js","webpack://_N_E/../../node_modules/.pnpm/@tanem+svg-injector@10.1.68/node_modules/@tanem/svg-injector/dist/svg-injector.esm.js","webpack://_N_E/../../node_modules/.pnpm/react-svg@16.3.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-svg/dist/react-svg.esm.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/use-callback-ref@1.3.3_@types+react@18.3.18_react@18.3.1/node_modules/use-callback-ref/dist/es2015/assignRef.js","webpack://_N_E/../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.18_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useRef.js","webpack://_N_E/../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.18_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","webpack://_N_E/../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.18_react@18.3.1/node_modules/use-sidecar/dist/es2015/medium.js","webpack://_N_E/../../node_modules/.pnpm/void-elements@3.1.0/node_modules/void-elements/index.js","webpack://_N_E/../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/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/setPrototypeOf.js","webpack://_N_E/../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/inheritsLoose.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/@floating-ui+core@1.6.9/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://_N_E/../../node_modules/.pnpm/@floating-ui+dom@1.6.13/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://_N_E/../../node_modules/.pnpm/@floating-ui+react-dom@2.1.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://_N_E/../../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://_N_E/../../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+primitive@1.1.1/node_modules/@radix-ui/primitive/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-collection@1.1.2_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom_60bb3e7f45950e429728cefacc549341/node_modules/@radix-ui/react-collection/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.1_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-context@1.1.1_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-context/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-direction@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-direction/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.5_@types+react-dom@18.3.1_@types+react@18.3.18_re_bd781bc14648a6d15f1c145f415e39bc/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.1_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.2_patch_hash=07e1fd26a62db1cdbcd60041e806c1e67bc20996d8_4bcca18067b3b2b21c78bc6e68b91f9b/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-id@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-id/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-portal@1.1.4_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-portal/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-presence@1.1.2_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-presence/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-primitive@2.0.2_@types+react-dom@18.3.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-primitive/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-slot@1.1.2_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-slot/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-use-size@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-size/dist/index.mjs","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/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/../../node_modules/.pnpm/@tanstack+query-core@5.56.2/node_modules/@tanstack/query-core/build/modern/queryObserver.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@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/suspense.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/isRestoring.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/useQuery.js","webpack://_N_E/../../node_modules/.pnpm/@tanstack+react-query@5.56.2_react@18.3.1/node_modules/@tanstack/react-query/build/modern/utils.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/_lib/defaultOptions.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","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/_lib/getTimezoneOffsetInMilliseconds.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.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/startOfWeek.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","webpack://_N_E/../../node_modules/.pnpm/react-hook-form@7.54.2_react@18.3.1/node_modules/react-hook-form/dist/index.esm.mjs","webpack://_N_E/../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","webpack://_N_E/../../node_modules/.pnpm/usehooks-ts@3.1.1_react@18.3.1/node_modules/usehooks-ts/dist/index.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","var getDefaultParent = function (originalTarget) {\n    if (typeof document === 'undefined') {\n        return null;\n    }\n    var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n    return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n    return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n    return targets\n        .map(function (target) {\n        if (parent.contains(target)) {\n            return target;\n        }\n        var correctedTarget = unwrapHost(target);\n        if (correctedTarget && parent.contains(correctedTarget)) {\n            return correctedTarget;\n        }\n        console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n        return null;\n    })\n        .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n    var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    if (!markerMap[markerName]) {\n        markerMap[markerName] = new WeakMap();\n    }\n    var markerCounter = markerMap[markerName];\n    var hiddenNodes = [];\n    var elementsToKeep = new Set();\n    var elementsToStop = new Set(targets);\n    var keep = function (el) {\n        if (!el || elementsToKeep.has(el)) {\n            return;\n        }\n        elementsToKeep.add(el);\n        keep(el.parentNode);\n    };\n    targets.forEach(keep);\n    var deep = function (parent) {\n        if (!parent || elementsToStop.has(parent)) {\n            return;\n        }\n        Array.prototype.forEach.call(parent.children, function (node) {\n            if (elementsToKeep.has(node)) {\n                deep(node);\n            }\n            else {\n                try {\n                    var attr = node.getAttribute(controlAttribute);\n                    var alreadyHidden = attr !== null && attr !== 'false';\n                    var counterValue = (counterMap.get(node) || 0) + 1;\n                    var markerValue = (markerCounter.get(node) || 0) + 1;\n                    counterMap.set(node, counterValue);\n                    markerCounter.set(node, markerValue);\n                    hiddenNodes.push(node);\n                    if (counterValue === 1 && alreadyHidden) {\n                        uncontrolledNodes.set(node, true);\n                    }\n                    if (markerValue === 1) {\n                        node.setAttribute(markerName, 'true');\n                    }\n                    if (!alreadyHidden) {\n                        node.setAttribute(controlAttribute, 'true');\n                    }\n                }\n                catch (e) {\n                    console.error('aria-hidden: cannot operate on ', node, e);\n                }\n            }\n        });\n    };\n    deep(parentNode);\n    elementsToKeep.clear();\n    lockCount++;\n    return function () {\n        hiddenNodes.forEach(function (node) {\n            var counterValue = counterMap.get(node) - 1;\n            var markerValue = markerCounter.get(node) - 1;\n            counterMap.set(node, counterValue);\n            markerCounter.set(node, markerValue);\n            if (!counterValue) {\n                if (!uncontrolledNodes.has(node)) {\n                    node.removeAttribute(controlAttribute);\n                }\n                uncontrolledNodes.delete(node);\n            }\n            if (!markerValue) {\n                node.removeAttribute(markerName);\n            }\n        });\n        lockCount--;\n        if (!lockCount) {\n            // clear\n            counterMap = new WeakMap();\n            counterMap = new WeakMap();\n            uncontrolledNodes = new WeakMap();\n            markerMap = {};\n        }\n    };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n    var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10\n    targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));\n    return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-inert-ed'; }\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n    return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-suppressed'; }\n    return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1)      { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n  var currentX, currentT, i = 0;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n  return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n   var currentSlope = getSlope(aGuessT, mX1, mX2);\n   if (currentSlope === 0.0) {\n     return aGuessT;\n   }\n   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n   aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n  return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n    throw new Error('bezier x values must be in [0, 1] range');\n  }\n\n  if (mX1 === mY1 && mX2 === mY2) {\n    return LinearEasing;\n  }\n\n  // Precompute samples table\n  var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n  for (var i = 0; i < kSplineTableSize; ++i) {\n    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n  }\n\n  function getTForX (aX) {\n    var intervalStart = 0.0;\n    var currentSample = 1;\n    var lastSample = kSplineTableSize - 1;\n\n    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    var guessForT = intervalStart + dist * kSampleStepSize;\n\n    var initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  return function BezierEasing (x) {\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0) {\n      return 0;\n    }\n    if (x === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cardNumber = void 0;\nvar luhn10 = require(\"./luhn-10\");\nvar getCardTypes = require(\"credit-card-type\");\nfunction verification(card, isPotentiallyValid, isValid) {\n    return {\n        card: card,\n        isPotentiallyValid: isPotentiallyValid,\n        isValid: isValid,\n    };\n}\nfunction cardNumber(value, options) {\n    if (options === void 0) { options = {}; }\n    var isPotentiallyValid, isValid, maxLength;\n    if (typeof value !== \"string\" && typeof value !== \"number\") {\n        return verification(null, false, false);\n    }\n    var testCardValue = String(value).replace(/-|\\s/g, \"\");\n    if (!/^\\d*$/.test(testCardValue)) {\n        return verification(null, false, false);\n    }\n    var potentialTypes = getCardTypes(testCardValue);\n    if (potentialTypes.length === 0) {\n        return verification(null, false, false);\n    }\n    else if (potentialTypes.length !== 1) {\n        return verification(null, true, false);\n    }\n    var cardType = potentialTypes[0];\n    if (options.maxLength && testCardValue.length > options.maxLength) {\n        return verification(cardType, false, false);\n    }\n    if (cardType.type === getCardTypes.types.UNIONPAY &&\n        options.luhnValidateUnionPay !== true) {\n        isValid = true;\n    }\n    else {\n        isValid = luhn10(testCardValue);\n    }\n    maxLength = Math.max.apply(null, cardType.lengths);\n    if (options.maxLength) {\n        maxLength = Math.min(options.maxLength, maxLength);\n    }\n    for (var i = 0; i < cardType.lengths.length; i++) {\n        if (cardType.lengths[i] === testCardValue.length) {\n            isPotentiallyValid = testCardValue.length < maxLength || isValid;\n            return verification(cardType, isPotentiallyValid, isValid);\n        }\n    }\n    return verification(cardType, testCardValue.length < maxLength, false);\n}\nexports.cardNumber = cardNumber;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cardholderName = void 0;\nvar CARD_NUMBER_REGEX = /^[\\d\\s-]*$/;\nvar MAX_LENGTH = 255;\nfunction verification(isValid, isPotentiallyValid) {\n    return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction cardholderName(value) {\n    if (typeof value !== \"string\") {\n        return verification(false, false);\n    }\n    if (value.length === 0) {\n        return verification(false, true);\n    }\n    if (value.length > MAX_LENGTH) {\n        return verification(false, false);\n    }\n    if (CARD_NUMBER_REGEX.test(value)) {\n        return verification(false, true);\n    }\n    return verification(true, true);\n}\nexports.cardholderName = cardholderName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cvv = void 0;\nvar DEFAULT_LENGTH = 3;\nfunction includes(array, thing) {\n    for (var i = 0; i < array.length; i++) {\n        if (thing === array[i]) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction max(array) {\n    var maximum = DEFAULT_LENGTH;\n    var i = 0;\n    for (; i < array.length; i++) {\n        maximum = array[i] > maximum ? array[i] : maximum;\n    }\n    return maximum;\n}\nfunction verification(isValid, isPotentiallyValid) {\n    return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction cvv(value, maxLength) {\n    if (maxLength === void 0) { maxLength = DEFAULT_LENGTH; }\n    maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n    if (typeof value !== \"string\") {\n        return verification(false, false);\n    }\n    if (!/^\\d*$/.test(value)) {\n        return verification(false, false);\n    }\n    if (includes(maxLength, value.length)) {\n        return verification(true, true);\n    }\n    if (value.length < Math.min.apply(null, maxLength)) {\n        return verification(false, true);\n    }\n    if (value.length > max(maxLength)) {\n        return verification(false, false);\n    }\n    return verification(true, true);\n}\nexports.cvv = cvv;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationDate = void 0;\nvar parse_date_1 = require(\"./lib/parse-date\");\nvar expiration_month_1 = require(\"./expiration-month\");\nvar expiration_year_1 = require(\"./expiration-year\");\nfunction verification(isValid, isPotentiallyValid, month, year) {\n    return {\n        isValid: isValid,\n        isPotentiallyValid: isPotentiallyValid,\n        month: month,\n        year: year,\n    };\n}\nfunction expirationDate(value, maxElapsedYear) {\n    var date;\n    if (typeof value === \"string\") {\n        value = value.replace(/^(\\d\\d) (\\d\\d(\\d\\d)?)$/, \"$1/$2\");\n        date = parse_date_1.parseDate(String(value));\n    }\n    else if (value !== null && typeof value === \"object\") {\n        var fullDate = __assign({}, value);\n        date = {\n            month: String(fullDate.month),\n            year: String(fullDate.year),\n        };\n    }\n    else {\n        return verification(false, false, null, null);\n    }\n    var monthValid = expiration_month_1.expirationMonth(date.month);\n    var yearValid = expiration_year_1.expirationYear(date.year, maxElapsedYear);\n    if (monthValid.isValid) {\n        if (yearValid.isCurrentYear) {\n            var isValidForThisYear = monthValid.isValidForThisYear;\n            return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);\n        }\n        if (yearValid.isValid) {\n            return verification(true, true, date.month, date.year);\n        }\n    }\n    if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {\n        return verification(false, true, null, null);\n    }\n    return verification(false, false, null, null);\n}\nexports.expirationDate = expirationDate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationMonth = void 0;\nfunction verification(isValid, isPotentiallyValid, isValidForThisYear) {\n    return {\n        isValid: isValid,\n        isPotentiallyValid: isPotentiallyValid,\n        isValidForThisYear: isValidForThisYear || false,\n    };\n}\nfunction expirationMonth(value) {\n    var currentMonth = new Date().getMonth() + 1;\n    if (typeof value !== \"string\") {\n        return verification(false, false);\n    }\n    if (value.replace(/\\s/g, \"\") === \"\" || value === \"0\") {\n        return verification(false, true);\n    }\n    if (!/^\\d*$/.test(value)) {\n        return verification(false, false);\n    }\n    var month = parseInt(value, 10);\n    if (isNaN(Number(value))) {\n        return verification(false, false);\n    }\n    var result = month > 0 && month < 13;\n    return verification(result, result, result && month >= currentMonth);\n}\nexports.expirationMonth = expirationMonth;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationYear = void 0;\nvar DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;\nfunction verification(isValid, isPotentiallyValid, isCurrentYear) {\n    return {\n        isValid: isValid,\n        isPotentiallyValid: isPotentiallyValid,\n        isCurrentYear: isCurrentYear || false,\n    };\n}\nfunction expirationYear(value, maxElapsedYear) {\n    if (maxElapsedYear === void 0) { maxElapsedYear = DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE; }\n    var isCurrentYear;\n    if (typeof value !== \"string\") {\n        return verification(false, false);\n    }\n    if (value.replace(/\\s/g, \"\") === \"\") {\n        return verification(false, true);\n    }\n    if (!/^\\d*$/.test(value)) {\n        return verification(false, false);\n    }\n    var len = value.length;\n    if (len < 2) {\n        return verification(false, true);\n    }\n    var currentYear = new Date().getFullYear();\n    if (len === 3) {\n        // 20x === 20x\n        var firstTwo = value.slice(0, 2);\n        var currentFirstTwo = String(currentYear).slice(0, 2);\n        return verification(false, firstTwo === currentFirstTwo);\n    }\n    if (len > 4) {\n        return verification(false, false);\n    }\n    var numericValue = parseInt(value, 10);\n    var twoDigitYear = Number(String(currentYear).substr(2, 2));\n    var valid = false;\n    if (len === 2) {\n        if (String(currentYear).substr(0, 2) === value) {\n            return verification(false, true);\n        }\n        isCurrentYear = twoDigitYear === numericValue;\n        valid =\n            numericValue >= twoDigitYear &&\n                numericValue <= twoDigitYear + maxElapsedYear;\n    }\n    else if (len === 4) {\n        isCurrentYear = currentYear === numericValue;\n        valid =\n            numericValue >= currentYear &&\n                numericValue <= currentYear + maxElapsedYear;\n    }\n    return verification(valid, valid, isCurrentYear);\n}\nexports.expirationYear = expirationYear;\n","\"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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar creditCardType = __importStar(require(\"credit-card-type\"));\nvar cardholder_name_1 = require(\"./cardholder-name\");\nvar card_number_1 = require(\"./card-number\");\nvar expiration_date_1 = require(\"./expiration-date\");\nvar expiration_month_1 = require(\"./expiration-month\");\nvar expiration_year_1 = require(\"./expiration-year\");\nvar cvv_1 = require(\"./cvv\");\nvar postal_code_1 = require(\"./postal-code\");\nvar cardValidator = {\n    creditCardType: creditCardType,\n    cardholderName: cardholder_name_1.cardholderName,\n    number: card_number_1.cardNumber,\n    expirationDate: expiration_date_1.expirationDate,\n    expirationMonth: expiration_month_1.expirationMonth,\n    expirationYear: expiration_year_1.expirationYear,\n    cvv: cvv_1.cvv,\n    postalCode: postal_code_1.postalCode,\n};\nmodule.exports = cardValidator;\n","\"use strict\";\n// Polyfill taken from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Polyfill>.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = void 0;\nexports.isArray = Array.isArray ||\n    function (arg) {\n        return Object.prototype.toString.call(arg) === \"[object Array]\";\n    };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseDate = void 0;\nvar expiration_year_1 = require(\"../expiration-year\");\nvar is_array_1 = require(\"./is-array\");\nfunction getNumberOfMonthDigitsInDateString(dateString) {\n    var firstCharacter = Number(dateString[0]);\n    var assumedYear;\n    /*\n      if the first character in the string starts with `0`,\n      we know that the month will be 2 digits.\n  \n      '0122' => {month: '01', year: '22'}\n    */\n    if (firstCharacter === 0) {\n        return 2;\n    }\n    /*\n      if the first character in the string starts with\n      number greater than 1, it must be a 1 digit month\n  \n      '322' => {month: '3', year: '22'}\n    */\n    if (firstCharacter > 1) {\n        return 1;\n    }\n    /*\n      if the first 2 characters make up a number between\n      13-19, we know that the month portion must be 1\n  \n      '139' => {month: '1', year: '39'}\n    */\n    if (firstCharacter === 1 && Number(dateString[1]) > 2) {\n        return 1;\n    }\n    /*\n      if the first 2 characters make up a number between\n      10-12, we check if the year portion would be considered\n      valid if we assumed that the month was 1. If it is\n      not potentially valid, we assume the month must have\n      2 digits.\n  \n      '109' => {month: '10', year: '9'}\n      '120' => {month: '1', year: '20'} // when checked in the year 2019\n      '120' => {month: '12', year: '0'} // when checked in the year 2021\n    */\n    if (firstCharacter === 1) {\n        assumedYear = dateString.substr(1);\n        return expiration_year_1.expirationYear(assumedYear).isPotentiallyValid ? 1 : 2;\n    }\n    /*\n      If the length of the value is exactly 5 characters,\n      we assume a full year was passed in, meaning the remaining\n      single leading digit must be the month value.\n  \n      '12202' => {month: '1', year: '2202'}\n    */\n    if (dateString.length === 5) {\n        return 1;\n    }\n    /*\n      If the length of the value is more than five characters,\n      we assume a full year was passed in addition to the month\n      and therefore the month portion must be 2 digits.\n  \n      '112020' => {month: '11', year: '2020'}\n    */\n    if (dateString.length > 5) {\n        return 2;\n    }\n    /*\n      By default, the month value is the first value\n    */\n    return 1;\n}\nfunction parseDate(datestring) {\n    var date;\n    if (/^\\d{4}-\\d{1,2}$/.test(datestring)) {\n        date = datestring.split(\"-\").reverse();\n    }\n    else if (/\\//.test(datestring)) {\n        date = datestring.split(/\\s*\\/\\s*/g);\n    }\n    else if (/\\s/.test(datestring)) {\n        date = datestring.split(/ +/g);\n    }\n    if (is_array_1.isArray(date)) {\n        return {\n            month: date[0] || \"\",\n            year: date.slice(1).join(),\n        };\n    }\n    var numberOfDigitsInMonth = getNumberOfMonthDigitsInDateString(datestring);\n    var month = datestring.substr(0, numberOfDigitsInMonth);\n    return {\n        month: month,\n        year: datestring.substr(month.length),\n    };\n}\nexports.parseDate = parseDate;\n","/* eslint-disable */\n/*\n * Luhn algorithm implementation in JavaScript\n * Copyright (c) 2009 Nicholas C. Zakas\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\"use strict\";\nfunction luhn10(identifier) {\n    var sum = 0;\n    var alt = false;\n    var i = identifier.length - 1;\n    var num;\n    while (i >= 0) {\n        num = parseInt(identifier.charAt(i), 10);\n        if (alt) {\n            num *= 2;\n            if (num > 9) {\n                num = (num % 10) + 1; // eslint-disable-line no-extra-parens\n            }\n        }\n        alt = !alt;\n        sum += num;\n        i--;\n    }\n    return sum % 10 === 0;\n}\nmodule.exports = luhn10;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postalCode = void 0;\nvar DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;\nfunction verification(isValid, isPotentiallyValid) {\n    return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction postalCode(value, options) {\n    if (options === void 0) { options = {}; }\n    var minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;\n    if (typeof value !== \"string\") {\n        return verification(false, false);\n    }\n    else if (value.length < minLength) {\n        return verification(false, true);\n    }\n    return verification(true, true);\n}\nexports.postalCode = postalCode;\n","/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter     = token \"=\" ( token / quoted-string )\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text      = %x80-FF\n * quoted-pair   = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text    = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type       = token\n * subtype    = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || !TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  var string = type\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!TOKEN_REGEXP.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  var header = typeof string === 'object'\n    ? getcontenttype(string)\n    : string\n\n  if (typeof header !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = header.indexOf(';')\n  var type = index !== -1\n    ? header.slice(0, index).trim()\n    : header.trim()\n\n  if (!TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid media type')\n  }\n\n  var obj = new ContentType(type.toLowerCase())\n\n  // parse parameters\n  if (index !== -1) {\n    var key\n    var match\n    var value\n\n    PARAM_REGEXP.lastIndex = index\n\n    while ((match = PARAM_REGEXP.exec(header))) {\n      if (match.index !== index) {\n        throw new TypeError('invalid parameter format')\n      }\n\n      index += match[0].length\n      key = match[1].toLowerCase()\n      value = match[2]\n\n      if (value.charCodeAt(0) === 0x22 /* \" */) {\n        // remove quotes\n        value = value.slice(1, -1)\n\n        // remove escapes\n        if (value.indexOf('\\\\') !== -1) {\n          value = value.replace(QESC_REGEXP, '$1')\n        }\n      }\n\n      obj.parameters[key] = value\n    }\n\n    if (index !== header.length) {\n      throw new TypeError('invalid parameter format')\n    }\n  }\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n  var header\n\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    header = obj.getHeader('content-type')\n  } else if (typeof obj.headers === 'object') {\n    // req-like\n    header = obj.headers && obj.headers['content-type']\n  }\n\n  if (typeof header !== 'string') {\n    throw new TypeError('content-type header is missing from object')\n  }\n\n  return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (TOKEN_REGEXP.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n  this.parameters = Object.create(null)\n  this.type = type\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","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar cardTypes = require(\"./lib/card-types\");\nvar add_matching_cards_to_results_1 = require(\"./lib/add-matching-cards-to-results\");\nvar is_valid_input_type_1 = require(\"./lib/is-valid-input-type\");\nvar find_best_match_1 = require(\"./lib/find-best-match\");\nvar clone_1 = require(\"./lib/clone\");\nvar customCards = {};\nvar cardNames = {\n    VISA: \"visa\",\n    MASTERCARD: \"mastercard\",\n    AMERICAN_EXPRESS: \"american-express\",\n    DINERS_CLUB: \"diners-club\",\n    DISCOVER: \"discover\",\n    JCB: \"jcb\",\n    UNIONPAY: \"unionpay\",\n    MAESTRO: \"maestro\",\n    ELO: \"elo\",\n    MIR: \"mir\",\n    HIPER: \"hiper\",\n    HIPERCARD: \"hipercard\",\n};\nvar ORIGINAL_TEST_ORDER = [\n    cardNames.VISA,\n    cardNames.MASTERCARD,\n    cardNames.AMERICAN_EXPRESS,\n    cardNames.DINERS_CLUB,\n    cardNames.DISCOVER,\n    cardNames.JCB,\n    cardNames.UNIONPAY,\n    cardNames.MAESTRO,\n    cardNames.ELO,\n    cardNames.MIR,\n    cardNames.HIPER,\n    cardNames.HIPERCARD,\n];\nvar testOrder = clone_1.clone(ORIGINAL_TEST_ORDER);\nfunction findType(cardType) {\n    return customCards[cardType] || cardTypes[cardType];\n}\nfunction getAllCardTypes() {\n    return testOrder.map(function (cardType) { return clone_1.clone(findType(cardType)); });\n}\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n    if (ignoreErrorForNotExisting === void 0) { ignoreErrorForNotExisting = false; }\n    var position = testOrder.indexOf(name);\n    if (!ignoreErrorForNotExisting && position === -1) {\n        throw new Error('\"' + name + '\" is not a supported card type.');\n    }\n    return position;\n}\nfunction creditCardType(cardNumber) {\n    var results = [];\n    if (!is_valid_input_type_1.isValidInputType(cardNumber)) {\n        return results;\n    }\n    if (cardNumber.length === 0) {\n        return getAllCardTypes();\n    }\n    testOrder.forEach(function (cardType) {\n        var cardConfiguration = findType(cardType);\n        add_matching_cards_to_results_1.addMatchingCardsToResults(cardNumber, cardConfiguration, results);\n    });\n    var bestMatch = find_best_match_1.findBestMatch(results);\n    if (bestMatch) {\n        return [bestMatch];\n    }\n    return results;\n}\ncreditCardType.getTypeInfo = function (cardType) {\n    return clone_1.clone(findType(cardType));\n};\ncreditCardType.removeCard = function (name) {\n    var position = getCardPosition(name);\n    testOrder.splice(position, 1);\n};\ncreditCardType.addCard = function (config) {\n    var existingCardPosition = getCardPosition(config.type, true);\n    customCards[config.type] = config;\n    if (existingCardPosition === -1) {\n        testOrder.push(config.type);\n    }\n};\ncreditCardType.updateCard = function (cardType, updates) {\n    var originalObject = customCards[cardType] || cardTypes[cardType];\n    if (!originalObject) {\n        throw new Error(\"\\\"\" + cardType + \"\\\" is not a recognized type. Use `addCard` instead.'\");\n    }\n    if (updates.type && originalObject.type !== updates.type) {\n        throw new Error(\"Cannot overwrite type parameter.\");\n    }\n    var clonedCard = clone_1.clone(originalObject);\n    clonedCard = __assign(__assign({}, clonedCard), updates);\n    customCards[clonedCard.type] = clonedCard;\n};\ncreditCardType.changeOrder = function (name, position) {\n    var currentPosition = getCardPosition(name);\n    testOrder.splice(currentPosition, 1);\n    testOrder.splice(position, 0, name);\n};\ncreditCardType.resetModifications = function () {\n    testOrder = clone_1.clone(ORIGINAL_TEST_ORDER);\n    customCards = {};\n};\ncreditCardType.types = cardNames;\nmodule.exports = creditCardType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addMatchingCardsToResults = void 0;\nvar clone_1 = require(\"./clone\");\nvar matches_1 = require(\"./matches\");\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n    var i, patternLength;\n    for (i = 0; i < cardConfiguration.patterns.length; i++) {\n        var pattern = cardConfiguration.patterns[i];\n        if (!matches_1.matches(cardNumber, pattern)) {\n            continue;\n        }\n        var clonedCardConfiguration = clone_1.clone(cardConfiguration);\n        if (Array.isArray(pattern)) {\n            patternLength = String(pattern[0]).length;\n        }\n        else {\n            patternLength = String(pattern).length;\n        }\n        if (cardNumber.length >= patternLength) {\n            clonedCardConfiguration.matchStrength = patternLength;\n        }\n        results.push(clonedCardConfiguration);\n        break;\n    }\n}\nexports.addMatchingCardsToResults = addMatchingCardsToResults;\n","\"use strict\";\nvar cardTypes = {\n    visa: {\n        niceType: \"Visa\",\n        type: \"visa\",\n        patterns: [4],\n        gaps: [4, 8, 12],\n        lengths: [16, 18, 19],\n        code: {\n            name: \"CVV\",\n            size: 3,\n        },\n    },\n    mastercard: {\n        niceType: \"Mastercard\",\n        type: \"mastercard\",\n        patterns: [[51, 55], [2221, 2229], [223, 229], [23, 26], [270, 271], 2720],\n        gaps: [4, 8, 12],\n        lengths: [16],\n        code: {\n            name: \"CVC\",\n            size: 3,\n        },\n    },\n    \"american-express\": {\n        niceType: \"American Express\",\n        type: \"american-express\",\n        patterns: [34, 37],\n        gaps: [4, 10],\n        lengths: [15],\n        code: {\n            name: \"CID\",\n            size: 4,\n        },\n    },\n    \"diners-club\": {\n        niceType: \"Diners Club\",\n        type: \"diners-club\",\n        patterns: [[300, 305], 36, 38, 39],\n        gaps: [4, 10],\n        lengths: [14, 16, 19],\n        code: {\n            name: \"CVV\",\n            size: 3,\n        },\n    },\n    discover: {\n        niceType: \"Discover\",\n        type: \"discover\",\n        patterns: [6011, [644, 649], 65],\n        gaps: [4, 8, 12],\n        lengths: [16, 19],\n        code: {\n            name: \"CID\",\n            size: 3,\n        },\n    },\n    jcb: {\n        niceType: \"JCB\",\n        type: \"jcb\",\n        patterns: [2131, 1800, [3528, 3589]],\n        gaps: [4, 8, 12],\n        lengths: [16, 17, 18, 19],\n        code: {\n            name: \"CVV\",\n            size: 3,\n        },\n    },\n    unionpay: {\n        niceType: \"UnionPay\",\n        type: \"unionpay\",\n        patterns: [\n            620,\n            [624, 626],\n            [62100, 62182],\n            [62184, 62187],\n            [62185, 62197],\n            [62200, 62205],\n            [622010, 622999],\n            622018,\n            [622019, 622999],\n            [62207, 62209],\n            [622126, 622925],\n            [623, 626],\n            6270,\n            6272,\n            6276,\n            [627700, 627779],\n            [627781, 627799],\n            [6282, 6289],\n            6291,\n            6292,\n            810,\n            [8110, 8131],\n            [8132, 8151],\n            [8152, 8163],\n            [8164, 8171],\n        ],\n        gaps: [4, 8, 12],\n        lengths: [14, 15, 16, 17, 18, 19],\n        code: {\n            name: \"CVN\",\n            size: 3,\n        },\n    },\n    maestro: {\n        niceType: \"Maestro\",\n        type: \"maestro\",\n        patterns: [\n            493698,\n            [500000, 504174],\n            [504176, 506698],\n            [506779, 508999],\n            [56, 59],\n            63,\n            67,\n            6,\n        ],\n        gaps: [4, 8, 12],\n        lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n        code: {\n            name: \"CVC\",\n            size: 3,\n        },\n    },\n    elo: {\n        niceType: \"Elo\",\n        type: \"elo\",\n        patterns: [\n            401178,\n            401179,\n            438935,\n            457631,\n            457632,\n            431274,\n            451416,\n            457393,\n            504175,\n            [506699, 506778],\n            [509000, 509999],\n            627780,\n            636297,\n            636368,\n            [650031, 650033],\n            [650035, 650051],\n            [650405, 650439],\n            [650485, 650538],\n            [650541, 650598],\n            [650700, 650718],\n            [650720, 650727],\n            [650901, 650978],\n            [651652, 651679],\n            [655000, 655019],\n            [655021, 655058],\n        ],\n        gaps: [4, 8, 12],\n        lengths: [16],\n        code: {\n            name: \"CVE\",\n            size: 3,\n        },\n    },\n    mir: {\n        niceType: \"Mir\",\n        type: \"mir\",\n        patterns: [[2200, 2204]],\n        gaps: [4, 8, 12],\n        lengths: [16, 17, 18, 19],\n        code: {\n            name: \"CVP2\",\n            size: 3,\n        },\n    },\n    hiper: {\n        niceType: \"Hiper\",\n        type: \"hiper\",\n        patterns: [637095, 63737423, 63743358, 637568, 637599, 637609, 637612],\n        gaps: [4, 8, 12],\n        lengths: [16],\n        code: {\n            name: \"CVC\",\n            size: 3,\n        },\n    },\n    hipercard: {\n        niceType: \"Hipercard\",\n        type: \"hipercard\",\n        patterns: [606282],\n        gaps: [4, 8, 12],\n        lengths: [16],\n        code: {\n            name: \"CVC\",\n            size: 3,\n        },\n    },\n};\nmodule.exports = cardTypes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(originalObject) {\n    if (!originalObject) {\n        return null;\n    }\n    return JSON.parse(JSON.stringify(originalObject));\n}\nexports.clone = clone;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findBestMatch = void 0;\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n    var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) { return result.matchStrength; }).length;\n    /*\n     * if all possible results have a maxStrength property that means the card\n     * number is sufficiently long enough to determine conclusively what the card\n     * type is\n     * */\n    return (numberOfResultsWithMaxStrengthProperty > 0 &&\n        numberOfResultsWithMaxStrengthProperty === results.length);\n}\nfunction findBestMatch(results) {\n    if (!hasEnoughResultsToDetermineBestMatch(results)) {\n        return null;\n    }\n    return results.reduce(function (bestMatch, result) {\n        if (!bestMatch) {\n            return result;\n        }\n        /*\n         * If the current best match pattern is less specific than this result, set\n         * the result as the new best match\n         * */\n        if (Number(bestMatch.matchStrength) < Number(result.matchStrength)) {\n            return result;\n        }\n        return bestMatch;\n    });\n}\nexports.findBestMatch = findBestMatch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidInputType = void 0;\nfunction isValidInputType(cardNumber) {\n    return typeof cardNumber === \"string\" || cardNumber instanceof String;\n}\nexports.isValidInputType = isValidInputType;\n","\"use strict\";\n/*\n * Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\n * */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matches = void 0;\nfunction matchesRange(cardNumber, min, max) {\n    var maxLengthToCheck = String(min).length;\n    var substr = cardNumber.substr(0, maxLengthToCheck);\n    var integerRepresentationOfCardNumber = parseInt(substr, 10);\n    min = parseInt(String(min).substr(0, substr.length), 10);\n    max = parseInt(String(max).substr(0, substr.length), 10);\n    return (integerRepresentationOfCardNumber >= min &&\n        integerRepresentationOfCardNumber <= max);\n}\nfunction matchesPattern(cardNumber, pattern) {\n    pattern = String(pattern);\n    return (pattern.substring(0, cardNumber.length) ===\n        cardNumber.substring(0, pattern.length));\n}\nfunction matches(cardNumber, pattern) {\n    if (Array.isArray(pattern)) {\n        return matchesRange(cardNumber, pattern[0], pattern[1]);\n    }\n    return matchesPattern(cardNumber, pattern);\n}\nexports.matches = matches;\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","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\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","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n  /**\n   * Listen to DOM events during the bubble phase.\n   *\n   * @param {DOMEventTarget} target DOM element to register listener on.\n   * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n   * @param {function} callback Callback function.\n   * @return {object} Object with a `remove` method.\n   */\n  listen: function listen(target, eventType, callback) {\n    if (target.addEventListener) {\n      target.addEventListener(eventType, callback, false);\n      return {\n        remove: function remove() {\n          target.removeEventListener(eventType, callback, false);\n        }\n      };\n    } else if (target.attachEvent) {\n      target.attachEvent('on' + eventType, callback);\n      return {\n        remove: function remove() {\n          target.detachEvent('on' + eventType, callback);\n        }\n      };\n    }\n  },\n\n  /**\n   * Listen to DOM events during the capture phase.\n   *\n   * @param {DOMEventTarget} target DOM element to register listener on.\n   * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n   * @param {function} callback Callback function.\n   * @return {object} Object with a `remove` method.\n   */\n  capture: function capture(target, eventType, callback) {\n    if (target.addEventListener) {\n      target.addEventListener(eventType, callback, true);\n      return {\n        remove: function remove() {\n          target.removeEventListener(eventType, callback, true);\n        }\n      };\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n      }\n      return {\n        remove: emptyFunction\n      };\n    }\n  },\n\n  registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n  canUseDOM: canUseDOM,\n\n  canUseWorkers: typeof Worker !== 'undefined',\n\n  canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n  canUseViewport: canUseDOM && !!window.screen,\n\n  isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n  var printWarning = function printWarning(format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function warning(condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.indexOf('Failed Composite propType: ') === 0) {\n      return; // Ignore CompositeComponent proptype check.\n    }\n\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;","/* 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","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var arrayPush = require('./_arrayPush'),\n    isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n    castPath = require('./_castPath'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var castPath = require('./_castPath'),\n    last = require('./last'),\n    parent = require('./_parent'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n    baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var toString = require('./toString'),\n    upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n    getTag = require('./_getTag'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLike = require('./isArrayLike'),\n    isBuffer = require('./isBuffer'),\n    isPrototype = require('./_isPrototype'),\n    isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var arrayMap = require('./_arrayMap'),\n    baseClone = require('./_baseClone'),\n    baseUnset = require('./_baseUnset'),\n    castPath = require('./_castPath'),\n    copyObject = require('./_copyObject'),\n    customOmitClone = require('./_customOmitClone'),\n    flatRest = require('./_flatRest'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nmodule.exports = omit;\n","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n  return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseUnset = require('./_baseUnset');\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n  return object == null ? true : baseUnset(object, path);\n}\n\nmodule.exports = unset;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","import t from\"react\";function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var n=/[\\'\\\"]/;const r=[\"children\",\"options\"],o={accesskey:\"accessKey\",allowfullscreen:\"allowFullScreen\",allowtransparency:\"allowTransparency\",autocomplete:\"autoComplete\",autofocus:\"autoFocus\",autoplay:\"autoPlay\",cellpadding:\"cellPadding\",cellspacing:\"cellSpacing\",charset:\"charSet\",class:\"className\",classid:\"classId\",colspan:\"colSpan\",contenteditable:\"contentEditable\",contextmenu:\"contextMenu\",crossorigin:\"crossOrigin\",enctype:\"encType\",for:\"htmlFor\",formaction:\"formAction\",formenctype:\"formEncType\",formmethod:\"formMethod\",formnovalidate:\"formNoValidate\",formtarget:\"formTarget\",frameborder:\"frameBorder\",hreflang:\"hrefLang\",inputmode:\"inputMode\",keyparams:\"keyParams\",keytype:\"keyType\",marginheight:\"marginHeight\",marginwidth:\"marginWidth\",maxlength:\"maxLength\",mediagroup:\"mediaGroup\",minlength:\"minLength\",novalidate:\"noValidate\",radiogroup:\"radioGroup\",readonly:\"readOnly\",rowspan:\"rowSpan\",spellcheck:\"spellCheck\",srcdoc:\"srcDoc\",srclang:\"srcLang\",srcset:\"srcSet\",tabindex:\"tabIndex\",usemap:\"useMap\"},a={amp:\"&\",apos:\"'\",gt:\">\",lt:\"<\",nbsp:\" \",quot:\"“\"},c=[\"style\",\"script\"],s=/([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi,i=/mailto:/i,l=/\\n{2,}$/,u=/^( *>[^\\n]+(\\n[^\\n]+)*\\n*)+\\n{2,}/,_=/^ *> ?/gm,f=/^ {2,}\\n/,d=/^(?:( *[-*_]) *){3,}(?:\\n *)+\\n/,p=/^\\s*(`{3,}|~{3,}) *(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n *)+\\n?/,m=/^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/,g=/^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,y=/^(?:\\n *)*\\n/,h=/\\r\\n?/g,k=/^\\[\\^([^\\]]+)](:.*)\\n/,x=/^\\[\\^([^\\]]+)]/,b=/\\f/g,v=/^\\s*?\\[(x|\\s)\\]/,$=/^ *(#{1,6}) *([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,S=/^([^\\n]+)\\n *(=|-){3,} *(?:\\n *)+\\n/,w=/^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?([^>]*)\\/{0}>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1)[\\s\\S])*?)<\\/\\1>\\n*/i,z=/&([a-z]+);/g,E=/^<!--[\\s\\S]*?(?:-->)/,A=/^(data|aria|x)-[a-z_][a-z\\d_.-]*$/,R=/^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i,I=/^\\{.*\\}$/,M=/^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,O=/^<([^ >]+@[^ >]+)>/,B=/^<([^ >]+:\\/[^ >]+)>/,L=/ *\\n+$/,T=/(?:^|\\n)( *)$/,j=/-([a-z])?/gi,C=/^(.*\\|?.*)\\n *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*)\\n?/,D=/^((?:[^\\n]|\\n(?! *\\n))+)(?:\\n *)+\\n/,N=/^\\[([^\\]]*)\\]:\\s*(\\S+)\\s*(\"([^\"]*)\")?/,Z=/^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,F=/^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,P=/(\\[|\\])/g,G=/(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/,H=/\\t/g,q=/^ *\\| */,U=/(^ *\\||\\| *$)/g,V=/ *$/,W=/^ *:-+: *$/,K=/^ *:-+ *$/,Q=/^ *-+: *$/,X=/^([*_])\\1((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~+.*?~+|.)*?)\\1\\1(?!\\1)/,J=/^([*_])((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~+.*?~+|.)*?)\\1(?!\\1|\\w)/,Y=/^~~((?:\\[.*?\\]|<.*?>(?:.*?<.*?>)?|`.*?`|.)*?)~~/,tt=/^\\\\([^0-9A-Za-z\\s])/,et=/^[\\s\\S]+?(?=[^0-9A-Z\\s\\u00c0-\\uffff&;.()'\"]|\\d+\\.|\\n\\n| {2,}\\n|\\w+:\\S|$)/i,nt=/(^\\n+|\\n+$|\\s+$)/g,rt=/^([ \\t]*)/,ot=/\\\\([^0-9A-Z\\s])/gi,at=new RegExp(\"^( *)((?:[*+-]|\\\\d+\\\\.)) +\"),ct=new RegExp(\"( *)((?:[*+-]|\\\\d+\\\\.)) +[^\\\\n]*(?:\\\\n(?!\\\\1(?:[*+-]|\\\\d+\\\\.) )[^\\\\n]*)*(\\\\n|$)\",\"gm\"),st=new RegExp(\"^( *)((?:[*+-]|\\\\d+\\\\.)) [\\\\s\\\\S]+?(?:\\\\n{2,}(?! )(?!\\\\1(?:[*+-]|\\\\d+\\\\.) (?!(?:[*+-]|\\\\d+\\\\.) ))\\\\n*|\\\\s*\\\\n*$)\"),it=\"(?:\\\\[[^\\\\]]*\\\\]|[^\\\\[\\\\]]|\\\\](?=[^\\\\[]*\\\\]))*\",lt=new RegExp(\"^\\\\[(\"+it+\")\\\\]\\\\(\\\\s*<?((?:[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+['\\\"]([\\\\s\\\\S]*?)['\\\"])?\\\\s*\\\\)\"),ut=new RegExp(\"^!\\\\[(\"+it+\")\\\\]\\\\(\\\\s*<?((?:[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+['\\\"]([\\\\s\\\\S]*?)['\\\"])?\\\\s*\\\\)\"),_t=[u,m,p,$,S,w,E,R,ct,st,C,D];function ft(t){return t.replace(/[ÀÁÂÃÄÅàáâãäåæÆ]/g,\"a\").replace(/[çÇ]/g,\"c\").replace(/[ðÐ]/g,\"d\").replace(/[ÈÉÊËéèêë]/g,\"e\").replace(/[ÏïÎîÍíÌì]/g,\"i\").replace(/[Ññ]/g,\"n\").replace(/[øØœŒÕõÔôÓóÒò]/g,\"o\").replace(/[ÜüÛûÚúÙù]/g,\"u\").replace(/[ŸÿÝý]/g,\"y\").replace(/[^a-z0-9- ]/gi,\"\").replace(/ /gi,\"-\").toLowerCase()}function dt(t){return Q.test(t)?\"right\":W.test(t)?\"center\":K.test(t)?\"left\":null}function pt(t,e,n){const r=n.t;n.t=!0;const o=e(t.trim(),n);n.t=r;let a=[[]];return o.forEach(function(t,e){\"tableSeparator\"===t.type?0!==e&&e!==o.length-1&&a.push([]):(\"text\"!==t.type||null!=o[e+1]&&\"tableSeparator\"!==o[e+1].type||(t.content=t.content.replace(V,\"\")),a[a.length-1].push(t))}),a}function mt(t,e,n){n.o=!0;const r=pt(t[1],e,n),o=t[2].replace(U,\"\").split(\"|\").map(dt),a=function(t,e,n){return t.trim().split(\"\\n\").map(function(t){return pt(t,e,n)})}(t[3],e,n);return n.o=!1,{align:o,cells:a,header:r,type:\"table\"}}function gt(t,e){return null==t.align[e]?{}:{textAlign:t.align[e]}}function yt(t){return function(e,n){return n.o?t.exec(e):null}}function ht(t){return function(e,n){return n.o||n.i?t.exec(e):null}}function kt(t){return function(e,n){return n.o||n.i?null:t.exec(e)}}function xt(t){return function(e){return t.exec(e)}}function bt(t){try{if(decodeURIComponent(t).replace(/[^A-Za-z0-9/:]/g,\"\").match(/^\\s*(javascript|vbscript|data):/i))return null}catch(t){return null}return t}function vt(t){return t.replace(ot,\"$1\")}function $t(t,e,n){const r=n.o||!1,o=n.i||!1;n.o=!0,n.i=!0;const a=t(e,n);return n.o=r,n.i=o,a}function St(t,e,n){const r=n.o||!1,o=n.i||!1;n.o=!1,n.i=!0;const a=t(e,n);return n.o=r,n.i=o,a}function wt(t,e,n){return n.o=!1,t(e+\"\\n\\n\",n)}const zt=(t,e,n)=>({content:$t(e,t[1],n)});function Et(){return{}}function At(){return null}function Rt(...t){return t.filter(Boolean).join(\" \")}function It(t,e,n){let r=t;const o=e.split(\".\");for(;o.length&&(r=r[o[0]],void 0!==r);)o.shift();return r||n}var Mt;function Ot(r,U={}){U.overrides=U.overrides||{},U.slugify=U.slugify||ft,U.namedCodesToUnicode=U.namedCodesToUnicode?e({},a,U.namedCodesToUnicode):a;const V=U.createElement||t.createElement;function W(t,n,...r){const o=It(U.overrides,`${t}.props`,{});return V(function(t,e){const n=It(e,t);return n?\"function\"==typeof n||\"object\"==typeof n&&\"render\"in n?n:It(e,`${t}.component`,t):t}(t,U.overrides),e({},n,o,{className:Rt(null==n?void 0:n.className,o.className)||void 0}),...r)}function K(e){let n=!1;U.forceInline?n=!0:U.forceBlock||(n=!1===G.test(e));const r=Ot(pt(n?e:`${e.replace(nt,\"\")}\\n\\n`,{o:n}));if(null===U.wrapper)return r;const o=U.wrapper||(n?\"span\":\"div\");let a;if(r.length>1||U.forceWrapper)a=r;else{if(1===r.length)return a=r[0],\"string\"==typeof a?W(\"span\",{key:\"outer\"},a):a;a=null}return t.createElement(o,{key:\"outer\"},a)}function Q(e){const r=e.match(s);return r?r.reduce(function(e,r,a){const c=r.indexOf(\"=\");if(-1!==c){const s=function(t){return-1!==t.indexOf(\"-\")&&null===t.match(A)&&(t=t.replace(j,function(t,e){return e.toUpperCase()})),t}(r.slice(0,c)).trim(),i=function(t){return t?(n.test(t.charAt(0))&&(t=t.substr(1)),n.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):\"\"}(r.slice(c+1).trim()),l=o[s]||s,u=e[l]=function(t,e){return\"style\"===t?e.split(/;\\s?/).reduce(function(t,e){const n=e.slice(0,e.indexOf(\":\"));return t[n.replace(/(-[a-z])/g,t=>t[1].toUpperCase())]=e.slice(n.length+1).trim(),t},{}):\"href\"===t?bt(e):(e.match(I)&&(e=e.slice(1,e.length-1)),\"true\"===e||\"false\"!==e&&e)}(s,i);\"string\"==typeof u&&(w.test(u)||R.test(u))&&(e[l]=t.cloneElement(K(u.trim()),{key:a}))}else\"style\"!==r&&(e[o[r]||r]=!0);return e},{}):void 0}const ot=[],it={},dt={blockQuote:{l:kt(u),u:Mt.HIGH,_:(t,e,n)=>({content:e(t[0].replace(_,\"\"),n)}),p:(t,e,n)=>W(\"blockquote\",{key:n.m},e(t.content,n))},breakLine:{l:xt(f),u:Mt.HIGH,_:Et,p:(t,e,n)=>W(\"br\",{key:n.m})},breakThematic:{l:kt(d),u:Mt.HIGH,_:Et,p:(t,e,n)=>W(\"hr\",{key:n.m})},codeBlock:{l:kt(m),u:Mt.MAX,_:t=>({content:t[0].replace(/^ {4}/gm,\"\").replace(/\\n+$/,\"\"),lang:void 0}),p:(t,e,n)=>W(\"pre\",{key:n.m},W(\"code\",{className:t.lang?`lang-${t.lang}`:\"\"},t.content))},codeFenced:{l:kt(p),u:Mt.MAX,_:t=>({content:t[3],lang:t[2]||void 0,type:\"codeBlock\"})},codeInline:{l:ht(g),u:Mt.LOW,_:t=>({content:t[2]}),p:(t,e,n)=>W(\"code\",{key:n.m},t.content)},footnote:{l:kt(k),u:Mt.MAX,_:t=>(ot.push({footnote:t[2],identifier:t[1]}),{}),p:At},footnoteReference:{l:yt(x),u:Mt.HIGH,_:t=>({content:t[1],target:`#${U.slugify(t[1])}`}),p:(t,e,n)=>W(\"a\",{key:n.m,href:bt(t.target)},W(\"sup\",{key:n.m},t.content))},gfmTask:{l:yt(v),u:Mt.HIGH,_:t=>({completed:\"x\"===t[1].toLowerCase()}),p:(t,e,n)=>W(\"input\",{checked:t.completed,key:n.m,readOnly:!0,type:\"checkbox\"})},heading:{l:kt($),u:Mt.HIGH,_:(t,e,n)=>({content:$t(e,t[2],n),id:U.slugify(t[2]),level:t[1].length}),p:(t,e,n)=>(t.tag=`h${t.level}`,W(t.tag,{id:t.id,key:n.m},e(t.content,n)))},headingSetext:{l:kt(S),u:Mt.MAX,_:(t,e,n)=>({content:$t(e,t[1],n),level:\"=\"===t[2]?1:2,type:\"heading\"})},htmlComment:{l:xt(E),u:Mt.HIGH,_:()=>({}),p:At},image:{l:ht(ut),u:Mt.HIGH,_:t=>({alt:t[1],target:vt(t[2]),title:t[3]}),p:(t,e,n)=>W(\"img\",{key:n.m,alt:t.alt||void 0,title:t.title||void 0,src:bt(t.target)})},link:{l:yt(lt),u:Mt.LOW,_:(t,e,n)=>({content:St(e,t[1],n),target:vt(t[2]),title:t[3]}),p:(t,e,n)=>W(\"a\",{key:n.m,href:bt(t.target),title:t.title},e(t.content,n))},linkAngleBraceStyleDetector:{l:yt(B),u:Mt.MAX,_:t=>({content:[{content:t[1],type:\"text\"}],target:t[1],type:\"link\"})},linkBareUrlDetector:{l:(t,e)=>e.g?null:yt(M)(t,e),u:Mt.MAX,_:t=>({content:[{content:t[1],type:\"text\"}],target:t[1],title:void 0,type:\"link\"})},linkMailtoDetector:{l:yt(O),u:Mt.MAX,_(t){let e=t[1],n=t[1];return i.test(n)||(n=\"mailto:\"+n),{content:[{content:e.replace(\"mailto:\",\"\"),type:\"text\"}],target:n,type:\"link\"}}},list:{l(t,e,n){const r=T.exec(n);return!r||!e.h&&e.o?null:st.exec(t=r[1]+t)},u:Mt.HIGH,_(t,e,n){const r=t[2],o=r.length>1,a=o?+r:void 0,c=t[0].replace(l,\"\\n\").match(ct);let s=!1;return{items:c.map(function(t,r){const o=at.exec(t)[0].length,a=new RegExp(\"^ {1,\"+o+\"}\",\"gm\"),i=t.replace(a,\"\").replace(at,\"\"),l=r===c.length-1,u=-1!==i.indexOf(\"\\n\\n\")||l&&s;s=u;const _=n.o,f=n.h;let d;n.h=!0,u?(n.o=!1,d=i.replace(L,\"\\n\\n\")):(n.o=!0,d=i.replace(L,\"\"));const p=e(d,n);return n.o=_,n.h=f,p}),ordered:o,start:a}},p:(t,e,n)=>W(t.ordered?\"ol\":\"ul\",{key:n.m,start:t.start},t.items.map(function(t,r){return W(\"li\",{key:r},e(t,n))}))},newlineCoalescer:{l:kt(y),u:Mt.LOW,_:Et,p:()=>\"\\n\"},paragraph:{l:kt(D),u:Mt.LOW,_:zt,p:(t,e,n)=>W(\"p\",{key:n.m},e(t.content,n))},ref:{l:yt(N),u:Mt.MAX,_:t=>(it[t[1]]={target:t[2],title:t[4]},{}),p:At},refImage:{l:ht(Z),u:Mt.MAX,_:t=>({alt:t[1]||void 0,ref:t[2]}),p:(t,e,n)=>W(\"img\",{key:n.m,alt:t.alt,src:bt(it[t.ref].target),title:it[t.ref].title})},refLink:{l:yt(F),u:Mt.MAX,_:(t,e,n)=>({content:e(t[1],n),fallbackContent:e(t[0].replace(P,\"\\\\$1\"),n),ref:t[2]}),p:(t,e,n)=>it[t.ref]?W(\"a\",{key:n.m,href:bt(it[t.ref].target),title:it[t.ref].title},e(t.content,n)):W(\"span\",{key:n.m},e(t.fallbackContent,n))},table:{l:kt(C),u:Mt.HIGH,_:mt,p:(t,e,n)=>W(\"table\",{key:n.m},W(\"thead\",null,W(\"tr\",null,t.header.map(function(r,o){return W(\"th\",{key:o,style:gt(t,o)},e(r,n))}))),W(\"tbody\",null,t.cells.map(function(r,o){return W(\"tr\",{key:o},r.map(function(r,o){return W(\"td\",{key:o,style:gt(t,o)},e(r,n))}))})))},tableSeparator:{l:function(t,e){return e.t?q.exec(t):null},u:Mt.HIGH,_:function(){return{type:\"tableSeparator\"}},p:()=>\" | \"},text:{l:xt(et),u:Mt.MIN,_:t=>({content:t[0].replace(z,(t,e)=>U.namedCodesToUnicode[e]?U.namedCodesToUnicode[e]:t)}),p:t=>t.content},textBolded:{l:ht(X),u:Mt.MED,_:(t,e,n)=>({content:e(t[2],n)}),p:(t,e,n)=>W(\"strong\",{key:n.m},e(t.content,n))},textEmphasized:{l:ht(J),u:Mt.LOW,_:(t,e,n)=>({content:e(t[2],n)}),p:(t,e,n)=>W(\"em\",{key:n.m},e(t.content,n))},textEscaped:{l:ht(tt),u:Mt.HIGH,_:t=>({content:t[1],type:\"text\"})},textStrikethroughed:{l:ht(Y),u:Mt.LOW,_:zt,p:(t,e,n)=>W(\"del\",{key:n.m},e(t.content,n))}};!0!==U.disableParsingRawHTML&&(dt.htmlBlock={l:xt(w),u:Mt.HIGH,_(t,e,n){const[,r]=t[3].match(rt),o=new RegExp(`^${r}`,\"gm\"),a=t[3].replace(o,\"\"),s=(i=a,_t.some(t=>t.test(i))?wt:$t);var i;const l=t[1].toLowerCase(),u=-1!==c.indexOf(l);n.g=n.g||\"a\"===l;const _=u?t[3]:s(e,a,n);return n.g=!1,{attrs:Q(t[2]),content:_,noInnerParse:u,tag:u?l:t[1]}},p:(t,n,r)=>W(t.tag,e({key:r.m},t.attrs),t.noInnerParse?t.content:n(t.content,r))},dt.htmlSelfClosing={l:xt(R),u:Mt.HIGH,_:t=>({attrs:Q(t[2]||\"\"),tag:t[1]}),p:(t,n,r)=>W(t.tag,e({},t.attrs,{key:r.m}))});const pt=function(t){let e=Object.keys(t);function n(r,o){let a=[],c=\"\";for(;r;){let s=0;for(;s<e.length;){const i=e[s],l=t[i],u=l.l(r,o,c);if(u){const t=u[0];r=r.substring(t.length);const e=l._(u,n,o);null==e.type&&(e.type=i),a.push(e),c=t;break}s++}}return a}return e.sort(function(e,n){let r=t[e].u,o=t[n].u;return r!==o?r-o:e<n?-1:1}),function(t,e){return n(function(t){return t.replace(h,\"\\n\").replace(b,\"\").replace(H,\"    \")}(t),e)}}(dt),Ot=(Bt=function(t){return function(e,n,r){return t[e.type].p(e,n,r)}}(dt),function t(e,n={}){if(Array.isArray(e)){const r=n.m,o=[];let a=!1;for(let r=0;r<e.length;r++){n.m=r;const c=t(e[r],n),s=\"string\"==typeof c;s&&a?o[o.length-1]+=c:o.push(c),a=s}return n.m=r,o}return Bt(e,t,n)});var Bt;const Lt=K(r);return ot.length&&Lt.props.children.push(W(\"footer\",{key:\"footer\"},ot.map(function(t){return W(\"div\",{id:U.slugify(t.identifier),key:t.identifier},t.identifier,Ot(pt(t.footnote,{o:!0})))}))),Lt}!function(t){t[t.MAX=0]=\"MAX\",t[t.HIGH=1]=\"HIGH\",t[t.MED=2]=\"MED\",t[t.LOW=3]=\"LOW\",t[t.MIN=4]=\"MIN\"}(Mt||(Mt={}));export default e=>{let{children:n,options:o}=e,a=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)e.indexOf(n=a[r])>=0||(o[n]=t[n]);return o}(e,r);return t.cloneElement(Ot(n,o),a)};export{Ot as compiler};\n//# sourceMappingURL=index.modern.js.map\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 dynamic from 'next/dynamic';\nimport type { AppProps } from 'next/app';\nimport { ErrorBoundary } from '@dx-ui/osc-error-boundary';\nimport '../styles/global.css';\nimport { appWithTranslation } from '@dx-ui/framework-i18n';\nimport { QueryProvider } from '@dx-ui/framework-react-query';\nimport { useRouter } from 'next/router';\nimport { getQueryProviderProps } from '@dx-ui/cpm-mapping-brands';\nimport { useManualPageLogger } from '@dx-ui/framework-logger';\n\nconst APP_NAME = 'dx-brands-ui';\n\nconst ErrorFallback = dynamic(\n  () => import('../components/ErrorFallback').then((lib) => lib.ErrorFallback),\n  {\n    ssr: false,\n  }\n);\n\nfunction App({ Component, pageProps, router }: AppProps) {\n  const queryProps = getQueryProviderProps();\n  const routerLocale = useRouter().locale || router.locale || 'en';\n  useManualPageLogger(router.pathname, APP_NAME);\n\n  return (\n    <ErrorBoundary FallbackComponent={ErrorFallback}>\n      <QueryProvider\n        {...queryProps}\n        dehydratedQueryState={pageProps.dehydratedQueryState}\n        appName=\"dx-cpm-live\"\n        oneLinkConfig={pageProps.oneLinkConfig}\n        routerLocale={routerLocale}\n      >\n        <Component {...pageProps} />\n      </QueryProvider>\n    </ErrorBoundary>\n  );\n}\n\nexport default appWithTranslation(App);\n","/**\n * Type of default actions supported by metrics\n *\n * @module ActionTypes\n * @internal\n */\nconst ActionTypes = {\n  PAGE_VIEW: 'pageView', // request page view track\n  TRACK: 'track', // request custom link track\n};\n\nexport default ActionTypes;\n","const EXCLUDES = ['constructor'].concat(Object.getOwnPropertyNames(Object.getPrototypeOf({})));\n\nexport function filterKeysByType(obj, total = [], type = 'function') {\n  return Object.getOwnPropertyNames(obj).filter((key) => {\n    return (\n      total.indexOf(key) === -1 &&\n      EXCLUDES.indexOf(key) === -1 &&\n      key.indexOf('_') !== 0 && // consider it's private\n      // eslint-disable-next-line no-prototype-builtins\n      obj.hasOwnProperty(key) &&\n      typeof obj[key] === type\n    );\n  });\n}\n\nexport function aggregateApisByType(obj, total = []) {\n  const keys = [];\n  while (obj !== null) {\n    // eslint-disable-line no-eq-null\n    const arr = filterKeysByType(obj, total);\n    keys.push(...arr);\n    obj = Object.getPrototypeOf(obj);\n  }\n  return keys;\n}\n\n// extracts lists of methods from each service object.\nexport default function extractApis(services) {\n  services = Array.isArray(services) ? services : [services];\n  const apis = services.reduce((total, service) => {\n    const obj = service.constructor === Object ? service : Object.getPrototypeOf(service);\n    const keys = aggregateApisByType(obj, total);\n    total.push(...keys);\n    return total;\n  }, []);\n\n  return apis;\n}\n","/* eslint-disable no-empty */\nimport ActionTypes from './ActionTypes';\nimport { aggregateApisByType } from './utils/extractApis';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = function () {};\n\nfunction isService(obj) {\n  const functionProps = aggregateApisByType(obj);\n  return functionProps.length > 0;\n}\n\nexport const defaultService = {\n  [ActionTypes.PAGE_VIEW]: noop,\n  [ActionTypes.TRACK]: noop,\n};\n\nexport default function createService(options = {}) {\n  const { api } = options;\n  let instance = defaultService;\n  function instantiate() {\n    const ClassType = api;\n    return new ClassType(options);\n  }\n  if (typeof api === 'function') {\n    let inst;\n    try {\n      inst = api(options);\n    } catch {\n    } finally {\n      if (!inst || !isService(inst)) {\n        inst = instantiate();\n      }\n      if (isService(inst)) {\n        instance = inst;\n      }\n    }\n  } else if (api && typeof api === 'object' && isService(api)) {\n    instance = api;\n  }\n  const name = options.name || instance.name;\n  return { name, apis: instance };\n}\n","// to support Promise-like object.\nexport default function isPromise(value) {\n  return value && typeof value.then === 'function';\n}\n","const attr2obj = (elem, prefix = 'data') => {\n  const attrs = elem.attributes;\n  const dataAttrs = {};\n  const rdashAlpha = /-([\\da-z])/gi;\n  const fcamelCase = (all, letter) => {\n    return letter.toUpperCase();\n  };\n  const camelCase = (string) => {\n    return string.replace(rdashAlpha, fcamelCase);\n  };\n\n  if (elem.nodeType === 1) {\n    let i = attrs.length;\n    while (i--) {\n      const name = attrs[i].name;\n      if (name.indexOf(`${prefix}-`) === 0) {\n        const camelName = camelCase(name.slice(prefix.length + 1));\n        dataAttrs[camelName] = elem.getAttribute(name);\n      }\n    }\n  }\n  return dataAttrs;\n};\n\nexport default attr2obj;\n","import EventListener from 'fbjs/lib/EventListener';\nimport attr2obj from './utils/attr2obj';\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport class TrackBindingPlugin {\n  constructor({ attributePrefix = 'data-metrics', traverseParent = false } = {}) {\n    this._attributePrefix = attributePrefix;\n    this._traverseParent = traverseParent;\n  }\n\n  listen(callback, rootElement = document.body) {\n    if (typeof callback !== 'function') {\n      throw new Error('callback needs to be a function.');\n    }\n\n    if (rootElement && rootElement.nodeType !== 1) {\n      throw new Error('rootElement needs to be a valid node element.');\n    }\n\n    if (this._clickHandler) {\n      this.remove();\n    }\n\n    this._rootElement = rootElement;\n    this._clickHandler = EventListener.listen(\n      rootElement,\n      'click',\n      this._handleClick.bind(this, callback)\n    );\n\n    return {\n      target: this,\n      remove: this.remove.bind(this),\n    };\n  }\n\n  remove() {\n    if (this._clickHandler) {\n      this._clickHandler.remove();\n      this._clickHandler = null;\n    }\n  }\n\n  /**\n   * A click handler to perform custom link tracking, any element with 'metrics-*' attribute will be tracked.\n   *\n   * @method _handleClick\n   * @param {Object} event\n   * @private\n   */\n  _handleClick(callback, event) {\n    if (isModifiedEvent(event) || !isLeftClickEvent(event)) {\n      return;\n    }\n\n    let elem = event.target || event.srcElement;\n    let dataset = this._getData(elem);\n\n    if (this._traverseParent) {\n      const rootElement = this._rootElement;\n      while (elem !== rootElement) {\n        elem = elem.parentElement || elem.parentNode;\n        dataset = { ...this._getData(elem), ...dataset };\n      }\n    }\n\n    if (!Object.keys(dataset).length) {\n      return;\n    }\n\n    const eventName = dataset && dataset.eventName;\n    const mergePagedefaults = dataset && dataset.mergePagedefaults;\n    delete dataset.mergePagedefaults;\n\n    if (eventName) {\n      delete dataset.eventName;\n      callback(eventName, dataset, mergePagedefaults === 'true');\n    }\n  }\n\n  _getData(elem) {\n    return attr2obj(elem, this._attributePrefix);\n  }\n}\n\nexport default function useTrackBindingPlugin({\n  callback,\n  rootElement,\n  attributePrefix,\n  traverseParent,\n}) {\n  const trackBindingPlugin = new TrackBindingPlugin({\n    attributePrefix,\n    traverseParent,\n  });\n  return trackBindingPlugin.listen(callback, rootElement);\n}\n","import EventEmitter from 'eventemitter3';\nimport { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\nimport invariant from 'fbjs/lib/invariant';\nimport warning from 'fbjs/lib/warning';\nimport ActionTypes from './ActionTypes';\nimport createService from './createService';\nimport extractApis from './utils/extractApis';\nimport isPromise from './utils/isPromise';\nimport useTrackBindingPlugin from './useTrackBindingPlugin';\n\nlet qs = {};\nif (canUseDOM) {\n  try {\n    qs = Object.fromEntries(new URLSearchParams(window.location.search));\n  } catch (e) {\n    // eslint-disable-next-line no-console\n    console.warn('react-metrics Error - failed to parse query:', e);\n  }\n}\n\nconst defaults = {\n  pageViewEvent: 'pageLoad',\n  pageDefaults: () => ({}),\n  requestTimeout: 15 * 1000,\n};\n\nclass Transaction {\n  constructor() {\n    this.pvTransactions = {};\n    this.transactionId = 0;\n  }\n\n  create() {\n    return ++this.transactionId;\n  }\n\n  current() {\n    return this.transactionId;\n  }\n\n  get(tId) {\n    return this.pvTransactions[tId];\n  }\n\n  set(tId, value) {\n    this.pvTransactions[tId] = value;\n  }\n\n  remove(tId) {\n    if (tId && this.pvTransactions[tId]) {\n      delete this.pvTransactions[tId];\n    }\n  }\n\n  keys() {\n    return Object.keys(this.pvTransactions);\n  }\n}\n\nexport class Metrics extends EventEmitter {\n  constructor(options = {}) {\n    if (!options.vendors) {\n      throw new Error(\"'vendors' option is required.\");\n    }\n    super();\n    this.enabled = options.enabled !== false;\n    // undocumented option for unit test.\n    this.canUseDOM = options.canUseDOM !== undefined ? !!options.canUseDOM : canUseDOM;\n    if (!this.canUseDOM) {\n      this.enabled = false;\n    }\n    this.debug = !!options.debug || qs.metrics_debug === 'true';\n    this.customParams = options.customParams || {};\n    this.pageDefaults = options.pageDefaults || defaults.pageDefaults;\n    this.pageViewEvent = options.pageViewEvent || defaults.pageViewEvent;\n    this.requestTimeout = options.requestTimeout || defaults.requestTimeout;\n    this.cancelOnNext = options.cancelOnNext !== undefined ? !!options.cancelOnNext : true;\n    this.vendors = Array.isArray(options.vendors) ? options.vendors : [options.vendors];\n    this.services = this.vendors.map((vendor) => createService(vendor));\n    this.apiList = extractApis(this.services.map((service) => service.apis));\n    this.transaction = new Transaction();\n    this.routeState = {};\n    this.apiImpl = this.apiList.reduce((impl, api) => {\n      impl[api] = (...args) => this._prepareTrack(api, ...args);\n      return impl;\n    }, {});\n    Object.freeze(this.apiImpl);\n  }\n\n  listen(type, callback) {\n    // if type is not specified, listen for all the apis.\n    if (typeof type === 'function') {\n      callback = type;\n      type = null;\n    }\n\n    if (type) {\n      this.on(type, callback);\n    } else {\n      this.apiList.forEach((api) => {\n        this.on(api, callback);\n      });\n    }\n\n    return () => {\n      if (type) {\n        this.removeListener(type, callback);\n      } else {\n        this.apiList.forEach((api) => {\n          this.removeListener(api, callback);\n        });\n      }\n    };\n  }\n\n  setRouteState(state) {\n    this._cancelPreviousPromiseIfPending();\n    this.routeState = state;\n  }\n\n  /* eslint-disable consistent-return */\n  useTrackBinding(rootElement, attributePrefix) {\n    if (!this.enabled) {\n      return;\n    }\n\n    // if 'false' is passed as first param, detach listeners\n    if (rootElement === false) {\n      this._removeTrackBindingListener();\n      return;\n    }\n\n    invariant(\n      typeof this.api.track === 'function',\n      \"Metrics 'track' method needs to be defined for declarative tracking.\"\n    );\n\n    if (this._trackBindingListener) {\n      this._removeTrackBindingListener();\n    }\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    this._trackBindingListener = useTrackBindingPlugin({\n      callback: this._handleClick.bind(this),\n      rootElement,\n      attributePrefix,\n    });\n\n    return this._removeTrackBindingListener.bind(this);\n  }\n\n  destroy() {\n    this._removeListeners();\n    this._removeTrackBindingListener();\n  }\n\n  get api() {\n    return this.apiImpl;\n  }\n  /**\n   * @method _callServices\n   * @param type\n   * @param promise\n   * @returns {Promise.<T>}\n   * @private\n   */\n  _callServices(type, promise) {\n    return promise.then((params) => {\n      params = params || [];\n      const results = [];\n      const services = this.services;\n      const requestTimeout = this.requestTimeout;\n\n      function isCompleted() {\n        return results.length === services.length;\n      }\n\n      function clearTimer(timer) {\n        if (timer) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      }\n\n      return new Promise((resolve) => {\n        function process(result) {\n          if (this.isTimeout) {\n            return;\n          }\n          this.isTimeout = true;\n          clearTimer(this.timer);\n          results.push(result);\n          if (isCompleted()) {\n            resolve(results);\n          }\n        }\n\n        services.map((service) => {\n          const { apis, name } = service;\n          const apiExists = apis && apis[type];\n          if (apiExists) {\n            warning(\n              typeof apis[type] === 'function',\n              `'${type}'${name ? `(${name} Service)` : ''} is not a function`\n            );\n          }\n          let requestPromise =\n            apiExists && typeof apis[type] === 'function' ? apis[type](...params) : undefined;\n          if (!isPromise(requestPromise)) {\n            requestPromise = Promise.resolve(requestPromise);\n          }\n          requestPromise.isTimeout = false;\n          requestPromise.timer = setTimeout(process.bind(requestPromise), requestTimeout, {\n            name,\n            params,\n            error: new Error(`Request time out after ${requestTimeout} ms.`),\n            status: 'failure',\n          });\n          return requestPromise\n            .then((response) => ({\n              name,\n              params,\n              response,\n              status: 'success',\n            }))\n            .catch((error) => ({\n              name,\n              params,\n              error,\n              status: 'failure',\n            }))\n            .then(process.bind(requestPromise));\n        });\n      });\n    });\n  }\n  /**\n   * Cancels page view promise if it's still pending while the route has changed.\n   *\n   * @method _cancelPreviousPromiseIfPending\n   * @private\n   */\n  _cancelPreviousPromiseIfPending() {\n    this.routeState = {};\n    this.transaction.keys().forEach((tId) => {\n      const entry = this.transaction.get(tId);\n      if (entry && entry.cancelOnNext) {\n        entry.shouldCancel = true;\n      }\n    });\n  }\n\n  /**\n   * @method _createTransaction\n   * @param args\n   * @private\n   */\n  _createTransaction(args) {\n    const tId = this.transaction.current();\n    const cancelOnNext = this.cancelOnNext;\n    this.transaction.set(tId, {\n      promise: args[0],\n      cancelOnNext,\n    });\n    args.push(tId);\n  }\n  /**\n   * @method _clearTransaction\n   * @param tId\n   * @private\n   */\n  _clearTransaction(tId) {\n    this.transaction.remove(tId);\n  }\n  /**\n   * @method _doTrack\n   * @param type\n   * @param promise\n   * @param tId\n   * @private\n   */\n  _doTrack(type, promise, tId) {\n    promise = this._callServices(type, promise);\n    const dispatchEvent = function (status, response, error) {\n      const eventFacade = {\n        type,\n        status,\n      };\n      if (response) {\n        eventFacade.response = response;\n      } else if (error) {\n        eventFacade.error = error;\n      }\n      if (tId) {\n        eventFacade.transactionId = tId;\n        this._clearTransaction(tId);\n      }\n      this.emit(type, eventFacade);\n      if (this.debug) {\n        // eslint-disable-next-line no-console\n        console.log('track result', eventFacade);\n      }\n    }.bind(this);\n\n    promise\n      .then((response) => {\n        dispatchEvent(\n          response.every((item) => item.status === 'success') ? 'success' : 'failure',\n          response\n        );\n      })\n      .catch((error) => {\n        dispatchEvent('failure', null, error);\n      });\n  }\n  /**\n   * Returns the default tracking data provided by a helper object.\n   *\n   * @method __getDefaultData\n   * @return {Object}\n   * @private\n   */\n  _getDefaultData(state) {\n    return this.pageDefaults(state);\n  }\n  /**\n   * Returns a merged data between the host passed object and the default tracking data provided by a helper object.\n   *\n   * @method __mergeWith\n   * @return {Object}\n   * @private\n   */\n  _mergeWith(data, state) {\n    return Object.assign({}, this._getDefaultData(state), this.customParams, data);\n  }\n  /**\n   * Checks if this promise should be cancelled by rejecting it before it's sent to the facade.\n   *\n   * @method __addCancelHook\n   * @param {Promise} promise\n   * @returns {Promise}\n   * @private\n   */\n  _addCancelHook(promise) {\n    const tId = this.transaction.create();\n    return promise.then((data) => {\n      return this.transaction.get(tId).shouldCancel\n        ? Promise.reject(new Error('Page view cancelled'))\n        : data;\n    });\n  }\n  /**\n   * Modify the data to include 'eventName' before it's sent to the facade.\n   *\n   * @method __addEventNameToPromise\n   * @param {String} eventName\n   * @param {Promise} promise\n   * @param {boolean} shouldMerge\n   * @returns {Promise}\n   * @private\n   */\n  _addEventNameToPromise(eventName, promise, shouldMerge) {\n    return promise.then(\n      function (state, data) {\n        data = [shouldMerge ? this._mergeWith(data, state) : data];\n        data.unshift(eventName);\n        return data;\n      }.bind(this, this.routeState)\n    );\n  }\n  /**\n   * Run checks to the arguments passed to 'pageView' and 'track', set default page view eventName if it's not provided.\n   * Also merges the default data with the passed pageView data, and optionally for track data if a flag is set.\n   *\n   * @method __inspectArguments\n   * @param {String} type\n   * @param args\n   * @returns {Array}\n   * @private\n   */\n  _inspectArguments(type, ...args) {\n    let shouldMerge = true;\n    if (type !== ActionTypes.PAGE_VIEW) {\n      // don't merge `pageDefaults` with track params unless it's explicitly requested by the third argument.\n      shouldMerge = false;\n      if (type === ActionTypes.TRACK) {\n        invariant(\n          typeof args[0] === 'string',\n          \"Metrics 'track' method requires 'eventName' string as the first argument and object or promise as the second argument.\"\n        );\n      }\n      // this might be confusing but for now, use the last argument as a flag for merge when it's boolean.\n      if (args.length >= 3 && typeof args[args.length - 1] === 'boolean') {\n        shouldMerge = args[args.length - 1];\n      }\n    }\n\n    // set default page view event name when missing.\n    let [eventName, params] = args;\n    if (!params && typeof eventName !== 'string') {\n      params = eventName;\n      eventName = type === ActionTypes.PAGE_VIEW ? this.pageViewEvent : null;\n    }\n\n    // make sure `params` is a promise.\n    if (!isPromise(params)) {\n      params = Promise.resolve(params);\n    }\n\n    // add cancel hook so that it can be cancelled(rejected) if the promise is still pending when the route changes.\n    if (type === ActionTypes.PAGE_VIEW) {\n      params = this._addCancelHook(params);\n    }\n\n    // PAGE_VIEW or TRACK should always have `eventName`.\n    if (eventName) {\n      params = this._addEventNameToPromise(eventName, params, shouldMerge);\n    }\n    args = [type, params];\n\n    if (type === ActionTypes.PAGE_VIEW) {\n      this._createTransaction(args);\n    }\n\n    return args;\n  }\n  /**\n   * @method _prepareTrack\n   * @param type\n   * @param args\n   * @private\n   */\n  _prepareTrack(type, ...args) {\n    if (!this.enabled) {\n      return;\n    }\n    args = this._inspectArguments(type, ...args);\n    this._doTrack(...args);\n  }\n  /**\n   * A click handler to perform custom link tracking, any element with 'metrics-*' attribute will be tracked.\n   *\n   * @method _handleClick\n   * @param {Object} params\n   * @private\n   */\n  _handleClick(...args) {\n    this.api.track(...args);\n  }\n  _removeListeners() {\n    this.removeAllListeners();\n  }\n  _removeTrackBindingListener() {\n    if (this._trackBindingListener) {\n      this._trackBindingListener.remove();\n      this._trackBindingListener = null;\n    }\n  }\n}\n\nexport function isMetrics(value) {\n  return (\n    value &&\n    typeof value.listen === 'function' &&\n    typeof value.setRouteState === 'function' &&\n    typeof value.useTrackBinding === 'function' &&\n    typeof value.destroy === 'function' &&\n    typeof value.api === 'object'\n  );\n}\n\nexport default function createMetrics(options) {\n  const metrics = new Metrics(options);\n  return {\n    listen: metrics.listen.bind(metrics),\n    setRouteState: metrics.setRouteState.bind(metrics),\n    useTrackBinding: metrics.useTrackBinding.bind(metrics),\n    destroy: metrics.destroy.bind(metrics),\n    get enabled() {\n      return metrics.enabled;\n    },\n    get api() {\n      return metrics.api;\n    },\n  };\n}\n","import createMetrics from './core/createMetrics';\n\nexport { createMetrics };\n","/* eslint-disable no-console */\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport unset from 'lodash/unset';\nimport isEmpty from 'lodash/isEmpty';\nimport type { DigitalData, Satellite } from '../types/types';\nimport { logError } from '@dx-ui/framework-logger';\n\nexport type Options = {\n  digitalData?: DigitalData;\n  server?: boolean;\n  debug?: boolean;\n  seedFile?: string;\n};\n\n/**\n * Performs the tracking calls to Adobe Tag Manager.\n * Pulled from https://github.com/nfl/react-metrics/blob/master/examples/vendors/AdobeTagManager.js\n * @module AdobeTagManager\n * @class\n * @internal\n */\nexport default class AdobeTagManager {\n  options: Options;\n  digitalData: DigitalData;\n  pageName: string;\n  name: string;\n  _promise?: Promise<Satellite | undefined>;\n  _satellite?: Satellite;\n  constructor(options: Options = {}) {\n    this.options = options;\n    this.digitalData = options.digitalData || {};\n    this.pageName = '';\n    this.name = 'Adobe Tag Manager';\n    // TODO - Will reliably turn on onmiture debugging vs (_satellite.setDebug(true))\n    if (!this.options.server) {\n      localStorage.setItem('sdsat_debug', String(this.options.debug));\n    }\n  }\n\n  public setEventInfo(...args: string[]) {\n    this._addEventInfo(...args);\n  }\n\n  public track(eventName: string, params?: unknown, shouldAddEvent?: boolean) {\n    if (shouldAddEvent) {\n      this._addEventInfo(eventName);\n    }\n    if (!this.options.server) {\n      return new Promise((resolve) => {\n        this._load()\n          .then((satellite) => {\n            this._satellite = this._satellite || satellite;\n            this._track(eventName, params);\n            resolve({\n              eventName,\n              params,\n            });\n          })\n          .catch(() => {\n            const error = new Error('Omniture: Failed to load seed file');\n            logError('AdobeTagManager._load.seedScript.onerror', error);\n            resolve(undefined);\n          });\n      });\n    } else {\n      return false;\n    }\n  }\n\n  _track(eventName: string, params: unknown) {\n    const data = isEmpty(params) ? this.digitalData : params;\n    window.digitalData = data as DigitalData;\n    if (this._satellite) {\n      this._satellite.track?.(eventName);\n    }\n  }\n\n  _load() {\n    this._cleanAndSetData();\n    return (\n      this._promise ||\n      (this._promise = new Promise((resolve) => {\n        if (window._satellite && window._satellite.track) {\n          resolve(window._satellite);\n          this.dispatchReady();\n        } else {\n          const seedScript =\n            (document.querySelector('[data-name=\"launch\"]') as HTMLScriptElement) ||\n            document.createElement('script');\n\n          seedScript.onload = () => {\n            resolve(window._satellite);\n            this.dispatchReady();\n          };\n\n          seedScript.onerror = () => {\n            const error = new Error('Adobe analytics script failed to load seed file');\n            logError('AdobeTagManager._load.seedScript.onerror', error);\n            resolve(undefined);\n          };\n\n          seedScript.src = String(this.options.seedFile);\n          seedScript.setAttribute('async', 'true');\n          document.head.appendChild(seedScript);\n        }\n      }))\n    );\n  }\n\n  _addEventInfo(...names: string[]) {\n    names = Array.isArray(names) ? names : [names];\n    const events = names.map((name) => ({ eventInfo: { eventAction: name } }));\n    this.digitalData.event?.push(...events);\n  }\n\n  _resetEvents() {\n    this.digitalData.event = [];\n  }\n\n  _set(path: string, value: unknown) {\n    set(this.digitalData, path, value);\n  }\n\n  _unset(path: string, _value?: string) {\n    unset(this.digitalData, path);\n  }\n\n  /**\n   * Nov 7, 2018: the following fields are what Hilton's custom Adobe Launch script will expect.\n   * Check if the required fields exist and initialize them if they do not.\n   * @method _cleanAndSetData\n   * @private\n   */\n  _cleanAndSetData() {\n    const propertySearchLocationPath = 'page.attributes.propertySearchLocation';\n    const propertySearchLocation = get(this.digitalData, propertySearchLocationPath);\n    if (propertySearchLocation === undefined) {\n      this._set(propertySearchLocationPath, '');\n    }\n\n    const propertySearchDateInfoPath = 'page.attributes.propertySearchDateInfo';\n    const propertySearchDateInfo = get(this.digitalData, propertySearchDateInfoPath);\n    if (propertySearchDateInfo === undefined) {\n      this._set(propertySearchDateInfoPath, '00:00:00:00');\n    }\n\n    const productIDPath = 'product[0].productInfo.productID';\n    const productID = get(this.digitalData, productIDPath);\n    if (productID === undefined) {\n      this._set('product', [{ productInfo: { productId: '' } }]);\n    }\n\n    window.digitalData = this.digitalData;\n  }\n\n  private dispatchReady() {\n    window.dispatchEvent(new CustomEvent('metrics-ready'));\n  }\n}\n","import type { Options } from '../AdobeTagManager/AdobeTagManager';\nimport type AdobeTagManager from '../AdobeTagManager/AdobeTagManager';\n\ntype MetricsConfigOptions = Options & { Interface: typeof AdobeTagManager };\n\nconst metricsConfig = ({\n  debug,\n  digitalData,\n  Interface,\n  seedFile,\n  server,\n}: MetricsConfigOptions) => ({\n  enabled: true,\n  vendors: [\n    {\n      name: 'Adobe Tag Manager',\n      api: new Interface({\n        debug,\n        digitalData,\n        seedFile,\n        server,\n      }),\n    },\n  ],\n  debug,\n});\n\nexport default metricsConfig;\n","export const ImageClickID = {\n  Scroll: 'scroll',\n  Img: 'img',\n} as const;\n\nexport type ImageClickIDType = ValuesOf<typeof ImageClickID>;\n\nexport const ImageFunction = {\n  NoValue: 'no_value',\n  Modal: 'modal',\n  Link: 'link',\n} as const;\n\nexport type ImageFunctionType = ValuesOf<typeof ImageFunction>;\n\nexport const ImageType = {\n  NoValue: 'no_value',\n  Dynamic: 'dynamic',\n  Carousel: 'carousel',\n  Collage: 'collage',\n  Full: 'full',\n  Half: 'half',\n  Headliner: 'headliner',\n  Hero: 'hero',\n  Filmstrip: 'filmstrip',\n  Patchwork: 'patchwork',\n  Offset: 'offset',\n  Gallery: 'gallery',\n  Masthead: 'Masthead',\n  Sticky: 'sticky',\n} as const;\n\nexport type ImageTypeType = ValuesOf<typeof ImageType>;\n\n// Common fields for all Image components\nexport type BaseImageMetrics = {\n  click: {\n    clickID: ImageClickIDType;\n  };\n  osc: {\n    image: {\n      itemTitle?: string;\n      headline?: string;\n      position?: number;\n      count?: number;\n      function?: ImageFunctionType;\n      type?: ImageTypeType;\n    };\n  };\n};\n","import { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { logWarning } from '@dx-ui/framework-logger';\nimport type { DigitalData } from '../types/types';\n\nexport function clearImageAnalyticsData() {\n  if (!isBrowser) return;\n\n  if (!window.digitalData) {\n    logWarning('clearImageAnalyticsData()', new Error('window.digitalData is not defined.'));\n    return;\n  }\n\n  const imageKeysToDelete: (keyof DigitalData)[] = ['click', 'osc'];\n\n  imageKeysToDelete.forEach((key) => {\n    if (window.digitalData && key in window.digitalData) {\n      delete window.digitalData[key];\n    }\n  });\n}\n","import get from 'lodash/get';\nimport set from 'lodash/set';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { env } from '@dx-ui/framework-env';\n\nexport const ANALYTICS_GLOBAL_CLICK_EVENT = 'global_click';\nexport const ANALYTICS_NO_VALUE = 'no_value';\n\nconst isAnalyticsImageTrackingEnabled = env('ANALYTICS_OSC_TRACKING_ENABLED') === 'true';\n\n/**\n * Track an event with the given name and metrics\n */\nexport function trackEvent(eventName: string, metrics: Record<string, unknown>) {\n  if (!isAnalyticsImageTrackingEnabled) return; // Early return if tracking is disabled\n\n  if (isBrowser && window.digitalData && window._satellite?.track) {\n    const { digitalData } = window;\n    const satellite = window._satellite;\n\n    Object.entries(metrics).forEach(([key, value]) => {\n      // Handle array values\n      if (Array.isArray(value)) {\n        const existingValue = get(digitalData, key);\n        if (Array.isArray(existingValue)) {\n          // Merge arrays for exisitng values\n          set(digitalData, key, [...existingValue, ...value]);\n        } else {\n          // Set the array directly\n          set(digitalData, key, value);\n        }\n      } else {\n        // Set the value as usual for non-array values\n        set(digitalData, key, value);\n      }\n    });\n\n    satellite?.track?.(eventName);\n  } else {\n    /* eslint-disable no-console */\n    console.warn('digitalData or _satellite not found');\n  }\n}\n","import { createMetrics } from './react-metrics';\nimport AdobeTagManager from './AdobeTagManager/AdobeTagManager';\nimport metricsConfig from './config/metricsConfig';\nexport * from './types/imageMetrics';\nexport * from './types/types';\nexport * from './utils/clearImageAnalyticsData';\nexport * from './utils/trackEvent';\nexport * from './utils/utils';\n\nexport { AdobeTagManager, createMetrics, metricsConfig };\n","import { env } from '@dx-ui/framework-env';\n\nexport const getBaseUrl = (slug?: string) =>\n  slug ? new URL(slug, env('OHW_BASE_URL'))?.href : new URL(env('OHW_BASE_URL')).origin;\n\nexport const defaultPhoneNumbers = {\n  number: '8556721138',\n  friendlyNumber: '855-672-1138',\n};\n\nexport const disableMetricsCookie = 'OHW_PROP_disable_metrics';\n","import type { DigitalData } from '@dx-ui/config-metrics';\n\nexport const digitalData: DigitalData = {\n  event: [],\n  page: {\n    attributes: {\n      expType: 'New Hilton',\n      siteExperience: 'R',\n    },\n    category: {\n      experience: 'Browser',\n      siteType: 'B',\n    },\n    pageInfo: {},\n  },\n  user: [],\n};\n\nexport const defaultPageData = {\n  brandCode: '',\n  brandName: '',\n  lang: 'en',\n  pageName: 'Home',\n  destinationUrl: '',\n};\n","import {\n  millisecondsInHour,\n  millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid 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 argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('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 * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n  const invalidDate = () => constructFrom(options?.in, NaN);\n\n  const additionalDigits = options?.additionalDigits ?? 2;\n  const dateStrings = splitDateString(argument);\n\n  let date;\n  if (dateStrings.date) {\n    const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n\n  if (!date || isNaN(+date)) return invalidDate();\n\n  const timestamp = +date;\n  let time = 0;\n  let offset;\n\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n    if (isNaN(time)) return invalidDate();\n  }\n\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n    if (isNaN(offset)) return invalidDate();\n  } else {\n    const tmpDate = new Date(timestamp + time);\n    const result = toDate(0, options?.in);\n    result.setFullYear(\n      tmpDate.getUTCFullYear(),\n      tmpDate.getUTCMonth(),\n      tmpDate.getUTCDate(),\n    );\n    result.setHours(\n      tmpDate.getUTCHours(),\n      tmpDate.getUTCMinutes(),\n      tmpDate.getUTCSeconds(),\n      tmpDate.getUTCMilliseconds(),\n    );\n    return result;\n  }\n\n  return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n  /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n  /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n  const dateStrings = {};\n  const array = dateString.split(patterns.dateTimeDelimiter);\n  let timeString;\n\n  // The regex match should only return at maximum two array elements.\n  // [date], [time], or [date, time].\n  if (array.length > 2) {\n    return dateStrings;\n  }\n\n  if (/:/.test(array[0])) {\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n      timeString = dateString.substr(\n        dateStrings.date.length,\n        dateString.length,\n      );\n    }\n  }\n\n  if (timeString) {\n    const 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  const regex = new RegExp(\n    \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n      (4 + additionalDigits) +\n      \"})|(\\\\d{2}|[+-]\\\\d{\" +\n      (2 + additionalDigits) +\n      \"})$)\",\n  );\n\n  const captures = dateString.match(regex);\n  // Invalid ISO-formatted year\n  if (!captures) return { year: NaN, restDateString: \"\" };\n\n  const year = captures[1] ? parseInt(captures[1]) : null;\n  const century = captures[2] ? parseInt(captures[2]) : null;\n\n  // either year or century is null, not both\n  return {\n    year: century === null ? year : century * 100,\n    restDateString: dateString.slice((captures[1] || captures[2]).length),\n  };\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return new Date(NaN);\n\n  const captures = dateString.match(dateRegex);\n  // Invalid ISO-formatted string\n  if (!captures) return new Date(NaN);\n\n  const isWeekDate = !!captures[4];\n  const dayOfYear = parseDateUnit(captures[1]);\n  const month = parseDateUnit(captures[2]) - 1;\n  const day = parseDateUnit(captures[3]);\n  const week = parseDateUnit(captures[4]);\n  const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    const date = new Date(0);\n    if (\n      !validateDate(year, month, day) ||\n      !validateDayOfYearDate(year, dayOfYear)\n    ) {\n      return new Date(NaN);\n    }\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\n\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n  const captures = timeString.match(timeRegex);\n  if (!captures) return NaN; // Invalid ISO-formatted time\n\n  const hours = parseTimeUnit(captures[1]);\n  const minutes = parseTimeUnit(captures[2]);\n  const seconds = parseTimeUnit(captures[3]);\n\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n\n  return (\n    hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n  );\n}\n\nfunction parseTimeUnit(value) {\n  return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === \"Z\") return 0;\n\n  const captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n\n  const sign = captures[1] === \"+\" ? -1 : 1;\n  const hours = parseInt(captures[2]);\n  const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n\n  return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  const date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  const fourthOfJanuaryDay = date.getUTCDay() || 7;\n  const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 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  return (\n    month >= 0 &&\n    month <= 11 &&\n    date >= 1 &&\n    date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n  );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n\n  return (\n    seconds >= 0 &&\n    seconds < 60 &&\n    minutes >= 0 &&\n    minutes < 60 &&\n    hours >= 0 &&\n    hours < 25\n  );\n}\n\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import { differenceInCalendarDays, format, parseISO } from 'date-fns';\nimport { getVisitorId } from '@dx-ui/framework-react-query';\n\nimport { searchUriBuilder } from '@dx-ui/framework-uri-builder';\nimport type { FormDataValues as FormData } from '@dx-ui/osc-shop-form';\n\ntype ValidBrandCodes = [\n  'CH',\n  'DT',\n  'ES',\n  'GI',\n  'GV',\n  'HH',\n  'HI',\n  'HP',\n  'HT',\n  'HW',\n  'OL',\n  'PE',\n  'PY',\n  'QQ',\n  'RU',\n  'SA',\n  'UA',\n  'UP',\n  'WA',\n  'WW'\n];\nexport type BrandCode = ValidBrandCodes[number];\n\nconst validLanguageCodes = [\n  'ar',\n  'cs',\n  'da',\n  'de',\n  'en',\n  'es',\n  'fi',\n  'fr',\n  'it',\n  'ja',\n  'ko',\n  'nl',\n  'no',\n  'pl',\n  'pt',\n  'ro',\n  'ru',\n  'sv',\n  'th',\n  'tr',\n  'zh',\n] as const;\ntype LanguageCode = (typeof validLanguageCodes)[number];\n\nfunction isLanguageCode(str: string): str is LanguageCode {\n  return str in validLanguageCodes;\n}\n\nexport type SearchUrlParameters = {\n  language: LanguageCode;\n  awc: string;\n  cid: string;\n  dclid: string;\n  formData: FormData;\n  gclid: string;\n  isGroupSearch: boolean;\n  baseAppUrl: string;\n  url: string;\n  wtmcid: string;\n  brandCode: BrandCode;\n  baseUrl: string;\n};\n\nexport const GROUP_LIMIT = 10;\nfunction generateGroupSearchUrl({\n  formData,\n  isGroupSearch,\n  brandCode,\n  language,\n  baseUrl,\n}: SearchUrlParameters) {\n  const { numRooms, numAttendees, dates, query } = formData;\n  const { arrivalDate, departureDate } = dates;\n  const queryVal = query;\n\n  // if numAttendees isn't defined, make sure that we are requesting at least 10 rooms\n  const numRoomsVal = Number(numAttendees)\n    ? Number(numRooms)\n    : Math.max(Number(numRooms), GROUP_LIMIT);\n\n  const locale = isLanguageCode(language) ? language : undefined;\n\n  const groupUrl = searchUriBuilder({\n    brandCode,\n    locale,\n    urlParams: {\n      dates: {\n        arrivalDate: arrivalDate ?? undefined,\n        departureDate: departureDate ?? undefined,\n      },\n      placeId: formData.placeId,\n      query: queryVal,\n      numRooms: numRoomsVal,\n      numAttendees: isGroupSearch ? Number(numAttendees) : 0,\n      sessionToken: getVisitorId() ?? undefined,\n    },\n    baseUrl,\n    relative: false,\n  });\n\n  return groupUrl;\n}\n\nfunction generateNormalSearchUrl({ url, baseAppUrl }: SearchUrlParameters) {\n  const origin = baseAppUrl ? new URL(baseAppUrl).origin : null;\n\n  return origin ? `${origin}${url}` : url;\n}\n\nexport function generateUrl(searchUrlParameters: SearchUrlParameters) {\n  if (searchUrlParameters.isGroupSearch) {\n    return generateGroupSearchUrl(searchUrlParameters);\n  }\n\n  if (\n    (!searchUrlParameters.formData?.dates?.arrivalDate &&\n      !searchUrlParameters.formData?.dates?.departureDate) ||\n    //dreamURIBuilder previously generates valid URI\n    (searchUrlParameters.formData?.dates?.datesFlex &&\n      searchUrlParameters?.url?.includes('/locations/'))\n  ) {\n    return searchUrlParameters.url;\n  }\n\n  return generateNormalSearchUrl(searchUrlParameters);\n}\n\nexport type ICreateProperySearchDateInfoString = {\n  arrivalDate: string | null;\n  departureDate: string | null;\n};\nexport const createPropertySearchDateInfoString = (\n  props: ICreateProperySearchDateInfoString\n): string => {\n  const { arrivalDate, departureDate } = props;\n  const currentDate = format(new Date(), 'MMddyyyy');\n  const parsedArrivalDate = arrivalDate && parseISO(new Date(arrivalDate).toISOString());\n  const parsedDepartureDate = departureDate && parseISO(new Date(departureDate).toISOString());\n  const formattedParsedArrivalDate = parsedArrivalDate && format(parsedArrivalDate, 'MMddyyyy');\n  const formattedParsedDepartureDate =\n    parsedDepartureDate && format(parseISO(new Date(departureDate).toISOString()), 'MMddyyyy');\n  const numNights =\n    parsedDepartureDate &&\n    parsedArrivalDate &&\n    differenceInCalendarDays(parsedDepartureDate, parsedArrivalDate);\n  const daysInAdvance =\n    parsedArrivalDate && differenceInCalendarDays(parsedArrivalDate, new Date());\n\n  return `${currentDate}:${formattedParsedArrivalDate}:${formattedParsedDepartureDate}:${numNights}:${daysInAdvance}`;\n};\n\nexport type SearchRateCodeStringProps = {\n  isAarp: boolean | undefined;\n  isGovernment: boolean | undefined;\n  isSenior: boolean | undefined;\n  isTravelAgents: boolean | undefined;\n  isTripleA: boolean | undefined;\n  isUsePoints: boolean | undefined;\n  isEmployee: boolean | undefined;\n  isOwner: boolean | undefined;\n  isFriendsAndFamily: boolean | undefined;\n  groupCode: string | undefined;\n  promoCode: string | undefined;\n  corporateCode: string | undefined;\n};\nexport const createPropertySearchRateCodeString = (props: SearchRateCodeStringProps): string =>\n  `${props?.promoCode || 'N'}:${props?.groupCode || 'N'}:${\n    props?.corporateCode || 'N'\n  }:${convertBoolToYNString(props?.isTravelAgents || false)}:${convertBoolToYNString(\n    props?.isTripleA || false\n  )}:${convertBoolToYNString(props?.isAarp || false)}:${convertBoolToYNString(\n    props?.isSenior || false\n  )}:${convertBoolToYNString(props?.isGovernment || false)}:${convertBoolToYNString(\n    props?.isUsePoints || false\n  )}:N:${convertBoolToYNString(props?.isOwner || false)}:${convertBoolToYNString(\n    props?.isEmployee || false\n  )}:${convertBoolToYNString(props?.isFriendsAndFamily || false)}`;\n\nexport type ICreatePropertySearchCriteriaString = {\n  numRooms: number;\n  numAdults: number;\n  numChildren: number;\n  isFlexDatesEnabled: boolean;\n  isUsePoints: boolean;\n  isSpecialRatesUsed: boolean;\n  distance: number;\n  meetingCapacity?: string;\n  meetingStartDate?: string;\n  meetingEndDate?: string;\n  isMeetingFoodOrBeverage?: boolean;\n  isMeetingAudioVideo?: boolean;\n};\nexport const createPropertySearchCriteriaString = (\n  props: ICreatePropertySearchCriteriaString\n): string => {\n  const {\n    numRooms = 1,\n    numAdults = 1,\n    numChildren = 0,\n    isFlexDatesEnabled = false,\n    isUsePoints = false,\n    isSpecialRatesUsed = false,\n    distance = 0,\n    meetingCapacity = 'X',\n    meetingStartDate = 'X',\n    meetingEndDate = 'X',\n    isMeetingFoodOrBeverage = false,\n    isMeetingAudioVideo = false,\n  } = props;\n\n  return `${numRooms}:${numAdults}:${numChildren}:${convertBoolToYNString(\n    isFlexDatesEnabled\n  )}:${convertBoolToYNString(isUsePoints)}:${convertBoolToYNString(\n    isSpecialRatesUsed\n  )}:${distance}:${meetingCapacity}:${meetingStartDate}:${meetingEndDate}:${convertBoolToYNString(\n    isMeetingFoodOrBeverage\n  )}:${convertBoolToYNString(isMeetingAudioVideo)}`;\n};\n\nexport const parseStringyBool = (convertString: string) => {\n  switch (convertString.toLowerCase().trim()) {\n    case 'true':\n    case 'yes':\n    case '1':\n      return true;\n    case 'false':\n    case 'no':\n    case '0':\n    case null:\n      return false;\n    default:\n      return Boolean(convertString);\n  }\n};\n\nconst booleanYNMap: { [key: string]: string } = {\n  true: 'Y',\n  false: 'N',\n};\n\nexport const convertBoolToYNString = (booleanUrlParam: boolean): string =>\n  booleanYNMap[booleanUrlParam.toString()] || 'X';\n","/* eslint-disable dot-notation */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { AdobeTagManager } from '@dx-ui/config-metrics';\nimport type {\n  DefaultPageDataProps,\n  TErrorPageDataProps,\n  TPageDetailsProps,\n  TTrackGenericAction,\n  TTextHeadlinerProps,\n  TBrandShowcaseProps,\n  TCarouselNavigationProps,\n  TFullWidthImageProps,\n  TGridItemProps,\n  TTabItemProps,\n  AlertDataLinkProps,\n  AlertDataProps,\n  TUserDataProps,\n  TPageName,\n  TSearchPageWidgetSubmissionProps,\n  Metrics,\n} from './types';\nimport {\n  createPropertySearchDateInfoString,\n  createPropertySearchRateCodeString,\n  createPropertySearchCriteriaString,\n  parseStringyBool,\n} from './utils';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nexport const defaultPageData = {\n  brandCode: '',\n  brandName: '',\n  lang: 'en',\n  pageName: 'Home',\n  destinationUrl: '',\n};\n\nconst capitalize = (s: string) => s && s.charAt(0).toUpperCase() + s.slice(1);\n\nconst getBrand = ({ brandCode: receivedBrandCode, brandName: receivedBrandName }: any) => {\n  const hiltonName = 'Hilton';\n  let isHiltonPortfolio = false;\n  let brandCode = receivedBrandCode;\n  let brandName = receivedBrandName;\n  // need to override Hilton Portfolio to use Hilton values for analytics\n  if (brandCode === 'WW') {\n    isHiltonPortfolio = true;\n    brandCode = 'HI';\n    brandName = hiltonName;\n  }\n  brandName = brandName || hiltonName;\n\n  return { brandCode, brandName, isHiltonPortfolio };\n};\n\nexport const getPageDetails = (brandPath: string[]) => {\n  const pageDetails = {\n    pageDetail1: '',\n    pageDetail2: '',\n    pageDetail3: '',\n  };\n  if (!brandPath || !brandPath.length) return pageDetails;\n  brandPath.forEach((pageDetail, index) => {\n    (pageDetails as any)[`pageDetail${index + 1}`] = capitalizeHyphen(pageDetail);\n  });\n  return pageDetails;\n};\n\nexport const getPageType = (contentType: string) => {\n  switch (contentType) {\n    case 'article':\n      return {\n        primaryCategory: 'Content',\n        adobePageType: 'Topic',\n        trackEventType: 'articlePageView',\n      };\n    case 'articleCrawl':\n      return {\n        primaryCategory: 'Content',\n        adobePageType: 'Topic',\n        trackEventType: 'articleCrawlPageView',\n      };\n    case 'articleHub':\n      return {\n        primaryCategory: 'Content',\n        adobePageType: 'Topic',\n        trackEventType: 'articleHubPageView',\n      };\n    case 'eventsLanding':\n      return {\n        primaryCategory: 'Events',\n        adobePageType: 'Landing',\n        trackEventType: 'eventsLandingPageView',\n      };\n    case 'brandLanding':\n      return {\n        primaryCategory: 'Brand',\n        adobePageType: 'Landing',\n        trackEventType: 'brandLandingPageView',\n      };\n    case 'brandHomepage':\n      return {\n        primaryCategory: 'Brand',\n        adobePageType: 'Home',\n        trackEventType: 'brandPageView',\n      };\n    case 'eventsOffer':\n      return {\n        primaryCategory: 'Events',\n        adobePageType: 'Offer',\n        trackEventType: 'eventsOfferPageView',\n      };\n    case 'offerLanding':\n      return {\n        primaryCategory: 'Offers',\n        adobePageType: 'Landing',\n        trackEventType: 'offerLandingPageView',\n      };\n    default:\n      return {\n        primaryCategory: 'Home',\n        adobePageType: 'Other',\n        trackEventType: 'brandPageView',\n      };\n  }\n};\n\nexport const capitalizeHyphen = (input: string): string => {\n  if (!input) return '';\n  return input.replace(/(^|[\\s-])\\S/g, (match: string) => match.toUpperCase());\n};\n\nexport const hyphenize = (input?: string): string => {\n  return (input || '').replace(/\\s+/g, '-');\n};\n\nconst getDynamicTagName = (fullBrandArr: string[], isHiltonPortfolio: boolean) => {\n  let dynamicData = '';\n  if (isHiltonPortfolio && !fullBrandArr.length) {\n    dynamicData = ':Portfolio';\n    return dynamicData;\n  }\n  if (!fullBrandArr || !fullBrandArr.length) return dynamicData;\n  fullBrandArr.forEach((desc) => {\n    if (desc.length) dynamicData += `:${capitalizeHyphen(desc)}`;\n  });\n  return dynamicData;\n};\n\nconst getPageName = ({\n  lang,\n  brandName = 'Multibrand',\n  primaryCategory,\n  adobePageType,\n  splitBrandPath,\n  isHiltonPortfolio,\n  brandCode,\n}: TPageName) => {\n  const dynamicTagName = getDynamicTagName(splitBrandPath, isHiltonPortfolio);\n  return `Browser:${(lang || 'en').toUpperCase()}:${\n    brandCode ? brandCode : brandName\n  }:${primaryCategory}:${adobePageType}${dynamicTagName}`;\n};\n\ntype PageDetail = 'pageDetail1' | 'pageDetail2' | 'pageDetail3';\n\n/**\n * Allow CPM to override the page level detail vales if they are set in the CMS.\n * Note: When CMS provides values, this function will replace spaces with hyphens\n * BUT NOT capitalize the values.\n * This is to support corp advantage/preferred rates pages.\n *\n * The existing implementation remains the same (capitalize + hyphenate).\n */\nconst getDetailsForPage = (\n  pageDetailLevels: (string | undefined)[],\n  originalFullBrandPath: string\n) => {\n  const replacementPageDetails = pageDetailLevels\n    .map((segment) => {\n      if (!segment) {\n        return '';\n      }\n\n      return encodeURIComponent(segment.replace(/\\s+/g, '-'));\n    })\n    .filter((segment) => !!segment);\n\n  if (replacementPageDetails.length > 0) {\n    const details = replacementPageDetails.reduce((_details, value, index) => {\n      return {\n        ..._details,\n        [`pageDetail${index + 1}`]: hyphenize(value),\n      };\n    }, {}) as Record<PageDetail, string>;\n\n    return {\n      splitBrandPath: replacementPageDetails,\n      ...details,\n    };\n  }\n\n  const splitBrandPath = originalFullBrandPath.split('/').filter((item) => item !== '');\n\n  return {\n    splitBrandPath,\n    ...getPageDetails(splitBrandPath),\n  };\n};\n\n/**\n * Allow CPM to override the page tracking type instead of relying on pageType\n */\nconst getTrackingEventType = ({ pageType, analyticsTaggingOverrides }: DefaultPageDataProps) => {\n  const { trackEventType: legacyTrackEventType } = getPageType(pageType ?? '');\n  return analyticsTaggingOverrides?.trackEventType || legacyTrackEventType;\n};\n\ntype Constructor<T> = new (...args: any[]) => T;\ntype AdobeInterface = typeof AdobeTagManager;\nexport interface ExtendedAdobeTagManager extends AdobeInterface, Metrics {}\n\nexport function extendAdobeTagManager<Base extends Constructor<AdobeTagManager>>(\n  Base: Base,\n  appVersion: string\n): ExtendedAdobeTagManager {\n  return class ExtendedAdobeTagManager extends Base {\n    public setDefaultPageData(props: DefaultPageDataProps) {\n      this.mergedProps = {\n        ...defaultPageData,\n        ...(this.mergedProps || {}),\n        ...props,\n      };\n      this.setDataLayer();\n    }\n\n    setPageData() {\n      const trackEventType = getTrackingEventType(this.mergedProps);\n      this['_resetEvents']();\n\n      this.trackEvent(trackEventType, null, false);\n    }\n\n    public trackUserLoggedIn({ hhonorsNumber, tierName, points, goUserTypes }: TUserDataProps) {\n      if (hhonorsNumber) {\n        this['_set']('user[0].profile[0].profileInfo.profileID', hhonorsNumber);\n        this['_set']('user[0].profile[0].profileInfo.pointsBalance', points);\n        this['_set']('user[0].profile[0].profileInfo.rewardsTier', tierName);\n        this['_set']('user[0].profile[0].attributes.loginStatus', 'Logged-in');\n\n        if (goUserTypes && goUserTypes.length) {\n          this['_set']('user[0].profile[0].attributes.goUserType', goUserTypes.join(','));\n        } else {\n          this['_set']('user[0].profile[0].attributes.goUserType', '');\n        }\n      } else {\n        this['_set']('user[0].profile[0].profileInfo.profileID', '');\n        this['_set']('user[0].profile[0].profileInfo.pointsBalance', '');\n        this['_set']('user[0].profile[0].profileInfo.rewardsTier', '');\n        this['_set']('user[0].profile[0].attributes.goUserType', '');\n        this['_set']('user[0].profile[0].attributes.loginStatus', 'Logged-out');\n      }\n      this.trackEvent('trackUserLoggedIn', null, true);\n    }\n\n    public setPageInfo(key: string, value: string[] | string) {\n      this['_set'](`page.pageInfo.${key}`, Array.isArray(value) ? value.join(',') : value);\n    }\n\n    public setPageDetails({ pageDetail, detailIdx = 1 }: TPageDetailsProps) {\n      this['_set'](`page.pageInfo.pageDetail${detailIdx}`, pageDetail);\n    }\n\n    public setAttributes(valuesByAttributes: { [key: string]: string | Record<string, unknown> }) {\n      const attributes = Object.keys(valuesByAttributes);\n      attributes.forEach((attribute) => {\n        this['_set'](attribute, valuesByAttributes[attribute]);\n      });\n    }\n\n    public trackEvent(\n      eventName: string,\n      params: Record<string, unknown> | null = null,\n      shouldAddEvent = false\n    ) {\n      void this['track'](eventName, params, shouldAddEvent);\n      if (!shouldAddEvent) {\n        this['_resetEvents']();\n      }\n    }\n\n    private isBrandPage() {\n      return !this.mergedProps.ctyhocn;\n    }\n\n    public trackPageView() {\n      const trackEventType = getTrackingEventType(this.mergedProps);\n      this['_resetEvents']();\n      this.trackEvent(this.isBrandPage() ? trackEventType : 'propertyPageView', null, true);\n    }\n\n    /* This method would unset the digitalData page attribute `propertySearchDateInfo` which is set by the shared metrics package by default,\n     analytics does not want this property to be set on page load */\n    public removePropertySearchInfo() {\n      return (\n        this.digitalData?.page?.attributes?.propertySearchDateInfo &&\n        this._unset('page.attributes.propertySearchDateInfo')\n      );\n    }\n\n    public trackTextHeadlinerClick({\n      textHeadlinerNumber,\n      itemNumber,\n      totalItems,\n      leftArrow,\n      rightArrow,\n    }: TTextHeadlinerProps) {\n      this['_set'](\n        'page.attributes.actionDetail',\n        `Carousel:${\n          this.isBrandPage() ? 'Brand' : 'Property'\n        }:TextHeadliner:Set:${textHeadlinerNumber}:${\n          leftArrow ? 'Leftarrow' : rightArrow ? 'Rightarrow' : ''\n        }`\n      );\n      this['_set']('page.pageInfo.gridPosition', `${itemNumber}:${totalItems}`);\n      this['_set']('event.eventInfo.eventAction', 'textHeadlinerClick');\n\n      this.trackEvent('textHeadliner', null, true);\n    }\n\n    trackBrandShowcaseClick({\n      brandShowcaseNumber,\n      itemNumber,\n      totalItems,\n      brandName,\n    }: TBrandShowcaseProps) {\n      this.setAttributes({\n        'page.attributes.actionDetail': `Tile:Brand:Brandshowcase:${brandShowcaseNumber}:${brandName}`,\n        'page.pageInfo.gridPosition': `${itemNumber}:${totalItems}`,\n        'event.eventInfo.eventAction': 'BrandShowcaseClick',\n      });\n      this.trackEvent('brandShowcase', null, true);\n    }\n\n    trackCarouselNavigationClick({\n      navigationClick,\n      carouselNumber,\n      index,\n      totalDots,\n    }: TCarouselNavigationProps) {\n      const label = navigationClick;\n      this.setAttributes({\n        'page.attributes.actionDetail': `Carousel:Brand:ImageCarousel:${carouselNumber}:${label}`,\n        'page.attributes.imageCarouselNumber': `${index + 1}:${totalDots}`,\n      });\n    }\n\n    trackFullWidthImageClick({ fullWidthImageNumber, label }: TFullWidthImageProps) {\n      this.setAttributes({\n        'page.attributes.actionDetail': `Tile:Brand:FullWidthImage:${fullWidthImageNumber}:${label}`,\n        'page.pageInfo.gridPosition': '',\n      });\n    }\n\n    trackGridItemClick({ itemNumber, totalItems, label, gridNumber, is4XGrid }: TGridItemProps) {\n      if (is4XGrid) {\n        this.setAttributes({\n          'page.attributes.actionDetail': `Tile:Brand:4XImage:${gridNumber}:${label}`,\n          'page.pageInfo.gridPosition': `${itemNumber}:${totalItems}`,\n        });\n      } else {\n        this.setAttributes({\n          'page.attributes.actionDetail': `Tile:Brand:369Image:${gridNumber}:${label}`,\n          'page.pageInfo.gridPosition': `${itemNumber}:${totalItems}`,\n        });\n      }\n    }\n\n    trackTabItemClick({ label, tabComponentNumber, itemNumber, totalItems }: TTabItemProps) {\n      this.setAttributes({\n        'page.attributes.actionDetail': `Tab:Brand:${tabComponentNumber}:${label}`,\n        'page.pageInfo.gridPosition': `${itemNumber}:${totalItems}`,\n        'event.eventInfo.eventAction': 'brandTabClick',\n      });\n      this.trackEvent('brandTab', null, true);\n    }\n\n    trackAlertLinkClick({ text, linkLabel }: AlertDataLinkProps) {\n      this.setAttributes({\n        'page.attributes.actionDetail': `Modal:Brand:Alert:${text}:${linkLabel}`,\n        'event.eventInfo.eventAction': 'brandAlertModalLink',\n      });\n      this.trackEvent('brandAlertModalLink', null, true);\n    }\n\n    trackAlertClick({ text }: AlertDataProps) {\n      this.setAttributes({\n        'page.attributes.actionDetail': `Modal:Brand:Alert:${text}`,\n        'event.eventInfo.eventAction': 'brandAlertModal',\n      });\n      this.trackEvent('brandAlertModal', null, true);\n    }\n\n    trackSearchPageWidgetSubmission(searchData: TSearchPageWidgetSubmissionProps) {\n      const rooms = searchData?.rooms || [];\n      this.setAttributes({\n        'page.attributes.search': searchData,\n        'page.attributes.propertySearchCountry': searchData?.country,\n        'page.attributes.propertySearchLocation': searchData?.location,\n        'page.attributes.propertySearchType': searchData.searchType,\n        'page.attributes.propertySearchDateInfo': createPropertySearchDateInfoString({\n          arrivalDate: searchData?.dates?.from,\n          departureDate: searchData?.dates?.til,\n        }),\n        'page.attributes.propertySearchRateCode': createPropertySearchRateCodeString({\n          ...searchData?.analyticsSpecialRates,\n          groupCode: searchData?.rates?.groupCode,\n          corporateCode: searchData?.rates?.corpAccount,\n          promoCode: searchData?.rates?.promoCode,\n        }),\n        'page.attributes.propertySearchCriteria': createPropertySearchCriteriaString({\n          numRooms: (Array.isArray(rooms) && rooms.length) || 1,\n          numAdults: (Array.isArray(rooms) && rooms.length > 0 && rooms[0]?.adults.length) || 1,\n          numChildren: (Array.isArray(rooms) && rooms.length > 0 && rooms[0]?.children.length) || 0,\n          isFlexDatesEnabled: parseStringyBool(searchData?.dates.flexDates) || false,\n          isUsePoints: searchData?.analyticsSpecialRates.isUsePoints,\n          isSpecialRatesUsed:\n            Object.values(searchData?.analyticsSpecialRates).some(Boolean) ||\n            !!searchData?.rates?.promoCode ||\n            !!searchData?.rates?.groupCode ||\n            !!searchData?.rates?.corpAccount,\n          distance: searchData?.distance ?? 0,\n        }),\n      });\n      this.trackEvent('portfolioSearchCriteria', null, true);\n    }\n\n    /**\n     * @method trackGenericAction\n     * @param {string} eventName - defines the name of the event given to Adobe Tag Manager.\n     * @param {string} actionDetail - gives more information about the event.\n     *\n     * Available to set common pieces of data used between analytics functions\n     *\n     */\n    public trackGenericAction({ eventName = '', actionDetail = '' }: TTrackGenericAction) {\n      this.setDataLayer();\n      this['_set']('page.attributes.actionDetail', actionDetail);\n      this.trackEvent(eventName, null, true);\n    }\n\n    public setErrorPageData(props: TErrorPageDataProps) {\n      const mergedProps = { ...defaultPageData, ...props };\n      const { brandCode } = mergedProps;\n      const { errorCode } = props;\n      let { errorName } = props;\n\n      errorName = errorName || '';\n\n      this['_set']('event.eventInfo.eventAction', 'error');\n      this['_set']('page.category.primaryCategory', 'error');\n      this['_set']('page.category.subSection', `error:${errorName}`);\n      this['_set']('page.pageInfo.error', errorCode);\n      this['_set']('page.pageInfo.pageName', `${brandCode}:error:${errorName}`);\n\n      this.trackEvent('errorPageView', null, false);\n      this.trackEvent('errorEvent', null, false);\n    }\n\n    /**\n     *\n     * @method _addPageBottom\n     * Overriding _addPageBottom to prevent running server side\n     */\n    public _addPageBottom() {\n      if (isBrowser && document && document.body) {\n        const { body } = document;\n        const script = document.createElement('script');\n        // Lets add to page so Adobe consultant knows we've added the pageBottom() call.\n        const scriptContent = `\n         \"use strict\";\n         var _satellite = window._satellite;\n         if (_satellite) {\n           document.write = document.body.appendChild\n           _satellite.pageBottom();\n         }\n       `;\n        script.text = scriptContent;\n        return body.appendChild(script);\n      }\n    }\n\n    private mergedProps: DefaultPageDataProps = {} as any;\n\n    private setDataLayer = () => {\n      const {\n        ctyhocn = '',\n        country = '',\n        lang,\n        destinationUrl = '',\n        template = '',\n        fullBrandPath,\n        pageType,\n        analyticsTaggingOverrides,\n      } = this.mergedProps;\n      const { pageDetail1, pageDetail2, pageDetail3, splitBrandPath } = getDetailsForPage(\n        [\n          analyticsTaggingOverrides?.pageDetailOne,\n          analyticsTaggingOverrides?.pageDetailTwo,\n          analyticsTaggingOverrides?.pageDetailThree,\n        ],\n        fullBrandPath ?? ''\n      );\n      const { brandCode, brandName, isHiltonPortfolio } = getBrand(this.mergedProps);\n      const { primaryCategory: legacyPrimaryCategory, adobePageType: legacyPageType } = getPageType(\n        pageType ?? ''\n      );\n      const primaryCategory = analyticsTaggingOverrides?.primaryCategory || legacyPrimaryCategory;\n      const adobePageType = analyticsTaggingOverrides?.adobePageType || legacyPageType;\n      // CPM-1583 - use brand code over brand name for ALL page names\n      const brandCodeForPageName = analyticsTaggingOverrides?.brandCode || brandCode;\n\n      this['_set']('page.attributes.expTheme', capitalize(template));\n      this['_set']('page.attributes.propertySearchCountry', country);\n      this['_set']('page.attributes.version', appVersion);\n\n      this['_set']('page.category.brand', brandCode);\n      this['_set']('page.category.siteName', brandName);\n      this['_set']('page.category.primaryCategory', primaryCategory);\n      if (!this.isBrandPage()) {\n        this['_set']('page.category.subSection', primaryCategory);\n        this['_set']('page.category.subSubSection', '');\n        this['_set']('product[0].productInfo.productID', ctyhocn.toUpperCase());\n      } else {\n        this['_set']('page.attributes.expType', 'New Hilton');\n      }\n\n      this['_set']('page.pageInfo.destinationURL', destinationUrl);\n      this['_set']('page.pageInfo.language', lang);\n      this['_set']('page.pageInfo.pageDetail1', pageDetail1);\n      this['_set']('page.pageInfo.pageDetail2', pageDetail2);\n      this['_set']('page.pageInfo.pageDetail3', pageDetail3);\n      this['_set'](\n        'page.pageInfo.pageName',\n        getPageName({\n          lang,\n          brandName,\n          primaryCategory,\n          adobePageType,\n          splitBrandPath,\n          isHiltonPortfolio,\n          brandCode: brandCodeForPageName,\n        })\n      );\n      this['_set']('page.pageInfo.pageTitle', document.title);\n      this['_set']('page.pageInfo.pageType', adobePageType);\n    };\n  } as any;\n}\n","import type { Metrics } from './types';\n\nexport type MetricsInterface = Partial<Metrics>;\nexport {\n  getPageType,\n  getPageDetails,\n  capitalizeHyphen,\n  extendAdobeTagManager,\n  type ExtendedAdobeTagManager,\n} from './extendAdobeTagManager';\n","import { AdobeTagManager } from '@dx-ui/config-metrics';\nimport { extendAdobeTagManager } from '@dx-ui/osc-brands-metrics';\n\nconst extendWithAppVersion = (appVersion: string) =>\n  extendAdobeTagManager(AdobeTagManager, appVersion);\n\nexport default extendWithAppVersion;\n","import { useMemo, useEffect } from 'react';\nimport { env } from '@dx-ui/framework-env';\nimport { createMetrics, metricsConfig } from '@dx-ui/config-metrics';\nimport { defaultPageData, digitalData } from '../metrics/constants';\nimport { disableMetricsCookie } from '../utils/constants';\nimport ExtendedAdobeTagManager from './ExtendedAdobeTagManager';\nimport type { MetricsInterface } from '@dx-ui/osc-brands-metrics';\nimport type { CpmMappedPage } from '@dx-ui/cpm-sdk';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport type { BrandQuery } from '@dx-ui/osc-brands-data';\n\nfunction isMetricsDisabled() {\n  if (!env('TRACKING_SEED_FILE')) {\n    return true;\n  }\n  if (isBrowser) {\n    const localStorageItem = window.localStorage.getItem(disableMetricsCookie);\n    if (localStorageItem) {\n      try {\n        return JSON.parse(localStorageItem);\n      } catch {\n        return false;\n      }\n    }\n  }\n  return false;\n}\n\nfunction useMetricsInstance(isCPMEditor: boolean): MetricsInterface {\n  return useMemo(() => {\n    if (!isCPMEditor) {\n      const { api: metricsInstance } = createMetrics(\n        metricsConfig({\n          debug: /local|test/.test(env('APP_ENV')),\n          Interface: ExtendedAdobeTagManager(env('APP_VER')),\n          seedFile: isMetricsDisabled() ? '' : env('TRACKING_SEED_FILE'),\n          server: !isBrowser,\n          digitalData,\n        })\n      );\n\n      return metricsInstance;\n    } else {\n      return {};\n    }\n  }, [isCPMEditor]);\n}\n\nexport function useMetrics(\n  language: string,\n  fullBrandPath: string,\n  mappedPage: CpmMappedPage,\n  brandData: BrandQuery['brand'],\n  isCPMEditor: boolean\n) {\n  const metricsInstance = useMetricsInstance(isCPMEditor);\n\n  useEffect(() => {\n    const pageData = {\n      ...defaultPageData,\n      ...(brandData?.formalName ? { brandName: brandData.formalName } : {}),\n      ...(brandData?.url ? { destinationUrl: brandData.url } : {}),\n      ...(mappedPage.seo.pageTitle ? { pageName: mappedPage.seo.pageTitle } : {}),\n      brandCode: mappedPage.brandCode,\n      lang: language,\n      pageType: mappedPage.pageType,\n      fullBrandPath,\n      analyticsTaggingOverrides: mappedPage.analyticsTagging,\n    };\n\n    metricsInstance.setDefaultPageData?.([pageData]);\n\n    metricsInstance.removePropertySearchInfo?.();\n    // This loads the Adobe TM scripts\n    metricsInstance.trackPageView?.();\n\n    // We only want to run this effect once on purpose\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return metricsInstance;\n}\n","import type * as React from 'react';\nimport type { CpmNavigationList } from '@dx-ui/cpm-sdk';\nimport { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { Footer as OscFooter } from '@dx-ui/osc-footer';\nimport type { Link as ComponentLink } from '@dx-ui/osc-link';\nimport { useBrandData } from '@dx-ui/cpm-mapping-shared';\n\nimport { defaultPhoneNumbers } from '../../utils/constants';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useShouldRenderExperiment } from '@dx-ui/framework-conductrics';\n\nexport default createCpmComponentDefinition(\n  'Footer',\n\n  ({ data }) => data,\n\n  function Footer({\n    componentParams,\n    navigationList: listData,\n    mappedPage,\n    experimentationAgents,\n  }) {\n    const brandData = useBrandData();\n    const shouldRenderExperiment = useShouldRenderExperiment();\n    const { hidePageFooter: hideFooter, brandCode } = mappedPage;\n\n    // Use `as` to narrow social media channels from `string` to specific channels ('Facebook' | 'Instagram' etc)\n    const socialLinks = brandData?.socialMediaLinks as React.ComponentProps<\n      typeof OscFooter\n    >['socialLinks'];\n\n    const contactPhoneLink = {\n      url: `tel:${brandData?.phone?.number ?? defaultPhoneNumbers.number}`,\n      label: brandData?.phone?.friendlyNumber ?? defaultPhoneNumbers.friendlyNumber,\n    };\n\n    const footerLinks: ComponentLink[] = [];\n\n    if (isNavigationLinks(listData?.items)) {\n      for (const { links } of listData?.items ?? []) {\n        for (const link of links ?? []) {\n          if (\n            link?.url &&\n            link.label &&\n            shouldRenderExperiment(experimentationAgents, link.experimentationConfiguration)\n          ) {\n            footerLinks.push(link);\n          }\n        }\n      }\n    }\n\n    if (hideFooter) {\n      return null;\n    }\n\n    const theme = ['GU', 'ND'].includes(brandCode) ? 'dark' : undefined;\n\n    return (\n      <BrandComponentThemeInline componentParams={componentParams} brandCode={brandCode}>\n        <OscFooter\n          theme={theme}\n          contactPhoneLink={contactPhoneLink}\n          links={footerLinks}\n          socialLinks={socialLinks}\n        />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n\nfunction isNavigationLinks(items: unknown): items is CpmNavigationList['items'] {\n  return Array.isArray(items) && items.length > 0 && 'links' in items[0];\n}\n","import type { OscDomLink, CpmNavigationList, CpmBrandNavigationList } from '@dx-ui/cpm-sdk';\nimport { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport type { TDrawerItem } from '@dx-ui/osc-header';\nimport { useBrandData, useMetrics } from '@dx-ui/cpm-mapping-shared';\nimport { useShouldRenderExperiment } from '@dx-ui/framework-conductrics';\nimport { filterMegaNavExperiments } from '@dx-ui/osc-header';\nimport { getBaseUrl } from '../../utils/constants';\nimport { useRouter } from 'next/router';\nimport { BrandsHeader } from '@dx-ui/osc-brands-header';\nimport { env } from '@dx-ui/framework-env';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\nconst replaceLang = (stringValue: string, lang: string) => stringValue?.replace('__LANG__', lang);\n\nconst getHonorsSignInUrl = (lang: string) => replaceLang(env('DX_AUTH_UI'), lang);\nconst getHonorsJoinUrl = (lang: string) => replaceLang(env('HONORS_JOIN_URL'), lang);\nconst getForgotInfoUrl = (lang: string) => replaceLang(env('PARTNER_FORGET_INFO_LINK'), lang);\nconst getGlobalPrivacyUrl = () => env('GLOBAL_PRIVACY_URL');\nconst getHonorsAccountUrl = (lang: string) => getBaseUrl(`${lang}/hilton-honors/guest/my-account/`);\n\nfunction getIsPortfolioHomePage(path: string): boolean {\n  return new URL(path, 'https://null.com').pathname === '/';\n}\n\nexport default createCpmComponentDefinition(\n  'Header',\n\n  function mapData({ data }) {\n    if (isBrandNavigationLinks(data?.items)) {\n      const megaNavLinks = data.items\n        ?.filter((item) => !!item.primaryNav)\n        .map((navItem) => {\n          const primary = navItem.primaryNav;\n          const item: TDrawerItem = mapMegaNavLink(primary);\n          const secondary = navItem.secondaryNavItems;\n\n          if (secondary && secondary) {\n            item.subMenu = secondary.map((navItem) => mapMegaNavLink(navItem));\n          }\n\n          return item;\n        });\n\n      return {\n        megaNavLinks,\n        type: 'BrandNavigationList',\n        filtered: false,\n      };\n    }\n\n    if (isNavigationLinks(data?.items)) {\n      return {\n        mainNavLinks: data?.items?.[0]?.links ?? [],\n        type: 'NavigationList',\n        filtered: false,\n      };\n    }\n\n    return {\n      type: 'Unmapped',\n      filtered: false,\n    };\n  },\n\n  function Header({\n    navigationList: listData,\n    componentParams,\n    mappedPage: { hidePageHeader: hideHeader, brandCode, languageCode, seo, isHeaderH1 },\n    experimentationAgents,\n  }) {\n    const metrics = useMetrics();\n    const brandData = useBrandData();\n    const router = useRouter();\n    const shouldRenderExperiment = useShouldRenderExperiment();\n    const isPortfolioHomePage = getIsPortfolioHomePage(router.asPath);\n    const showLanguageSelector = isPortfolioHomePage;\n\n    const trackUserLoggedIn: Exclude<typeof metrics.trackUserLoggedIn, undefined> = (data) =>\n      metrics.trackUserLoggedIn?.(data);\n\n    const pageHeading = seo?.pageHeading ?? undefined;\n\n    if (hideHeader) {\n      return null;\n    }\n\n    const megaNavLinks = filterMegaNavExperiments(\n      listData?.megaNavLinks,\n      experimentationAgents,\n      shouldRenderExperiment\n    );\n\n    const mainNavLinks = listData?.mainNavLinks?.filter((link) =>\n      shouldRenderExperiment(experimentationAgents, link.experimentationConfiguration)\n    );\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        componentClassName=\"header\"\n      >\n        <BrandsHeader\n          trackUserLoggedIn={trackUserLoggedIn}\n          megaNavLinks={megaNavLinks}\n          mainNavLinks={mainNavLinks}\n          languageCode={languageCode}\n          brandCode={brandCode}\n          brandFormalName={brandData.formalName ?? undefined}\n          brandUrl={brandData.url ?? undefined}\n          showLanguageSelector={showLanguageSelector}\n          honorsSignInUrl={getHonorsSignInUrl(languageCode)}\n          honorsJoinUrl={getHonorsJoinUrl(languageCode)}\n          forgotInfoUrl={getForgotInfoUrl(languageCode)}\n          globalPrivacyUrl={getGlobalPrivacyUrl()}\n          honorsAccountUrl={getHonorsAccountUrl(languageCode)}\n          ohwBaseUrl={env('OHW_BASE_URL')}\n          heading={isHeaderH1 ? pageHeading : undefined}\n        />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n\nfunction mapMegaNavLink(link?: OscDomLink) {\n  return {\n    label: link?.label || '',\n    link: {\n      url: link?.url || '',\n      isNewWindow: !!link?.isNewWindow,\n      showNewWindowIcon: !!link?.isNewWindow,\n      experimentationConfiguration: link?.experimentationConfiguration,\n    },\n  };\n}\n\nfunction isNavigationLinks(items: unknown): items is CpmNavigationList['items'] {\n  return Array.isArray(items) && items.length > 0 && 'links' in items[0];\n}\n\nfunction isBrandNavigationLinks(items: unknown): items is CpmBrandNavigationList['items'] {\n  return Array.isArray(items) && items.length > 0 && 'primaryNav' in items[0];\n}\n","import type { RefObject } from 'react';\nimport { useState } from 'react';\nimport { useDebounceCallback, useResizeObserver } from 'usehooks-ts';\n\nexport const useStickyLayout = ({\n  ref: stickyWrapperRef,\n  thresholdSticky = 33,\n}: {\n  ref: RefObject<HTMLElement>;\n  thresholdSticky?: number;\n}): { isWrapperSticky: boolean } => {\n  const [isSticky, setIsSticky] = useState(false);\n  const checkForSticky = useDebounceCallback((height: number) => {\n    const windowHeight = window.innerHeight;\n    const wrapperHeight = height ?? stickyWrapperRef.current?.offsetHeight;\n    if (windowHeight > 0 && wrapperHeight) {\n      const heightVh = Math.round((wrapperHeight / windowHeight) * 100);\n      const isSticky = heightVh < thresholdSticky;\n      setIsSticky(isSticky);\n    }\n  }, 200);\n\n  useResizeObserver({\n    ref: stickyWrapperRef,\n    onResize: ({ height = 0 }) => {\n      checkForSticky(height);\n    },\n  });\n\n  return { isWrapperSticky: isSticky };\n};\n","export * from './use-sticky-layout';\n","export * from './lib';\n","import { useRef, useState } from 'react';\nimport { useRouter } from 'next/router';\nimport cx from 'classnames';\nimport type { CpmMappedComponentData } from '@dx-ui/cpm-sdk';\nimport { useCorporateAccount, Goals, useBrandData } from '@dx-ui/cpm-mapping-shared';\nimport { LocationProvider } from '@dx-ui/framework-location-provider';\nimport { sendReward, useConductricsSelection, Status } from '@dx-ui/framework-conductrics';\nimport { getVisitorId } from '@dx-ui/framework-react-query';\nimport {\n  BrandsSearch,\n  generateUrl,\n  mapDataToSpecialRates,\n  type SearchUrlParameters,\n  type FormData,\n} from '@dx-ui/osc-brands-search';\nimport { getBaseUrl } from '../../utils/constants';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { env } from '@dx-ui/framework-env';\nimport { useStickyLayout } from '@dx-ui/utilities-use-sticky-layout';\nimport { getBrandRouteParams, useSingleInstanceQueryStrings } from '@dx-ui/osc-brands-data';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\nconst DEFAULT_LANGUAGE = 'en';\n\nfunction handleSearchRedirect(searchUrlParameters: SearchUrlParameters, newBrowserTab: boolean) {\n  const deepLinkUrl = generateUrl(searchUrlParameters);\n\n  if (isBrowser && deepLinkUrl) {\n    if (newBrowserTab) {\n      window.open(deepLinkUrl, '_blank', 'noopener');\n    } else {\n      window.location.assign(deepLinkUrl);\n    }\n  }\n}\nfunction useStickySearchFormTest() {\n  const { selection, isLoaded } = useConductricsSelection('a-kacI2WL5f0Jp', Status.OK);\n  return {\n    variantB: isLoaded && selection?.choice === 'B',\n  };\n}\n\nfunction useSearchFormNewTabTest(enableTest: boolean) {\n  const { selection, isLoaded } = useConductricsSelection(\n    'a-81bYndwf7bCg',\n    enableTest ? Status.OK : Status.PENDING\n  );\n  return {\n    variantB: isLoaded && selection?.choice === 'B',\n  };\n}\n\nfunction useAmenityIdsFilterTest(enableTest: boolean) {\n  const { selection, isLoaded } = useConductricsSelection(\n    'a-t3EOdlM3heNJ',\n    enableTest ? Status.OK : Status.PENDING\n  );\n  return {\n    variantB: isLoaded && selection?.choice === 'B',\n  };\n}\n/*\n * SearchWidgetCpm is more featureful that most mapping components.\n *\n * As well as connecting CMS data and analytics callbacks it is also responsible\n * for re-writing the search redirect URL on form submission.\n *\n * Currently, there is a specific URL override for\n *\n * - Group Searches\n * - Flex Dates (Conductrics)\n *\n * and this list may grow in the future\n */\nexport default function SearchWidgetCpm({\n  componentParams,\n  mappedPage: { brandCode },\n  isCPMEditor,\n}: CpmMappedComponentData<'Search Widget', null>) {\n  const { displayOption } = componentParams;\n  const isGroupSearch = displayOption === 'group';\n  const router = useRouter();\n  const contentParam = Array.isArray(router.query?.content)\n    ? router.query?.content[0]\n    : router.query?.content;\n  const languageCode = contentParam || router?.locale || DEFAULT_LANGUAGE;\n  const corporateAccount = useCorporateAccount();\n  const baseAppUrl = getBaseUrl(`${languageCode}${router.asPath}`);\n\n  const { brandSlug, brandPath, auxPageSlug } = getBrandRouteParams(router.asPath, languageCode);\n  const isLiveMode = !isCPMEditor;\n\n  const sessionId = getVisitorId();\n  const { isPartnerBrand, shopAvailOptions } = useBrandData();\n  const maxNumRooms = shopAvailOptions?.maxNumRooms ?? 9;\n\n  const {\n    cid = '',\n    awc = '',\n    dclid = '',\n    gclid = '',\n    wtmcid = '',\n  } = useSingleInstanceQueryStrings();\n  const isDayUse = brandPath === 'workspaces-by-hilton';\n  const [isNewTabTest, setIsNewTabTest] = useState(false);\n  const [isAmenityIdsFilterTest, setIsAmenityIdsFilterTest] = useState(false);\n  const newTabTest = useSearchFormNewTabTest(isNewTabTest);\n  const amenityIdsFilterTest = useAmenityIdsFilterTest(isAmenityIdsFilterTest);\n  const { additionalQS, specialRates } = mapDataToSpecialRates(componentParams, corporateAccount);\n  const stickyTest = useStickySearchFormTest();\n  const containerRef = useRef<HTMLDivElement | null>(null);\n  const { isWrapperSticky } = useStickyLayout({ ref: containerRef });\n  const landingPageEx =\n    /^\\/(all-inclusive|resorts|beach|pet-friendly|p\\/spa|p\\/golf|p\\/ski|p\\/hotel-residences)\\//;\n  const isLandingPage = landingPageEx.test(router.asPath);\n  const shouldRemoveAmenityIds =\n    amenityIdsFilterTest.variantB && additionalQS?.f_amenityIds && isLandingPage;\n  const amenityIdsFilterTestQS = shouldRemoveAmenityIds\n    ? {\n        ...additionalQS,\n        f_amenityIds: undefined,\n      }\n    : additionalQS;\n  function onSearchSubmit(formData: FormData, url: string) {\n    setIsNewTabTest(true);\n    if (isLandingPage) {\n      setIsAmenityIdsFilterTest(true);\n    }\n    sendReward(Goals.FindAHotelClick);\n    setTimeout(\n      () =>\n        handleSearchRedirect(\n          {\n            formData,\n            awc,\n            cid,\n            dclid,\n            gclid,\n            isGroupSearch,\n            brandCode,\n            languageCode,\n            url,\n            wtmcid,\n            baseAppUrl,\n          },\n          newTabTest.variantB\n        ),\n      0\n    );\n  }\n  return (\n    <div\n      className={cx({ 'sticky top-0 z-[50] shadow-md': stickyTest.variantB && isWrapperSticky })}\n      ref={containerRef}\n    >\n      <LocationProvider>\n        <BrandComponentThemeInline\n          componentClassName=\"search-widget-cpm\"\n          componentParams={componentParams}\n          brandCode={brandCode}\n        >\n          {/*\n           * Add a key to the search component in Editor mode to force a rerender\n           * when special rates have changed. This is to fix a memorisation bug in the\n           * Search component in dx-ui.\n           */}\n          <BrandsSearch\n            isPartnerBrand={isPartnerBrand ?? false}\n            brandCode={brandCode}\n            brandSlug={brandSlug}\n            baseAppUrl={baseAppUrl}\n            auxPageSlug={auxPageSlug}\n            isBrandRoute={true}\n            fullBrandPath={brandPath}\n            key={(!isLiveMode && JSON.stringify(specialRates)) || undefined}\n            isGroupSearch={isGroupSearch}\n            isDayUse={isDayUse}\n            defaultLanguage={DEFAULT_LANGUAGE}\n            languageCode={languageCode}\n            autocompleteUri={env('DX_AUTOCOMPLETE_URI')}\n            additionalQSParameters={amenityIdsFilterTestQS}\n            specialRates={specialRates}\n            sessionId={sessionId ?? ''}\n            onSearchSubmit={onSearchSubmit}\n            maxNumRooms={maxNumRooms}\n            shouldOpenNewTabOnSubmit={newTabTest.variantB}\n          />\n        </BrandComponentThemeInline>\n      </LocationProvider>\n    </div>\n  );\n}\n","import component from './Cpm';\nimport { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\n\nexport default createCpmComponentDefinition('Search Widget', () => null, component);\n","import { generateCpmAppInterface } from '@dx-ui/cpm-sdk';\nimport { sharedMappingSpec, namespaces } from '@dx-ui/cpm-mapping-shared';\n\nimport Footer from './mapping/Footer';\nimport Header from './mapping/Header';\nimport SearchWidget from './mapping/SearchWidget';\n\nexport { Footer, Header, SearchWidget, namespaces };\n\nexport const mappingSpec = {\n  ...sharedMappingSpec,\n  [Footer.cpmComponentName]: Footer,\n  [Header.cpmComponentName]: Header,\n  [SearchWidget.cpmComponentName]: SearchWidget,\n};\n\nexport const { fetchServerCpmPage, CpmRenderer } = generateCpmAppInterface(mappingSpec);\n\nexport type CpmServerData = Exclude<Awaited<ReturnType<typeof fetchServerCpmPage>>, null>;\n","import type { CpmMappedPage } from '@dx-ui/cpm-sdk';\nimport { capitalizeHyphen, getPageDetails, getPageType } from '@dx-ui/osc-brands-metrics';\nimport { getBrandRouteParams } from '@dx-ui/osc-brands-data';\n\nexport function getBrandTaggingValues({\n  analyticsTagging,\n  languageCode,\n  pageType,\n  pathname,\n}: CpmMappedPage) {\n  const brandTagging = getPageType(pageType);\n  const adobePageType = analyticsTagging.adobePageType || brandTagging.adobePageType;\n  const postfix: string[] = [];\n\n  if (analyticsTagging.primaryCategory) {\n    postfix.push(capitalizeHyphen(analyticsTagging.primaryCategory));\n  } else {\n    postfix.push(brandTagging.primaryCategory);\n  }\n\n  // CMS is overriding page details\n  if (analyticsTagging.pageDetailOne) {\n    // Campaign code postfix only includes two \"page detail\" levels\n    postfix.push(\n      capitalizeHyphen(analyticsTagging.pageDetailOne),\n      capitalizeHyphen(analyticsTagging.pageDetailTwo)\n    );\n  } else {\n    // Fallback to brand tagging\n    const { brandPath } = getBrandRouteParams(pathname, languageCode);\n    const splitBrandPath = (brandPath ?? '').split('/').filter((item) => item !== '');\n    const brandPageDetails = getPageDetails(splitBrandPath);\n\n    postfix.push(brandPageDetails.pageDetail1, brandPageDetails.pageDetail2);\n  }\n\n  return {\n    adobePageType,\n    cidPostfix: postfix.filter((item) => item !== '').join('-'),\n  };\n}\n","import { useMemo } from 'react';\nimport { getBaseUrl } from './constants';\n\nexport const getAssetPath = () => `${getBaseUrl()}/modules/assets`;\n\nconst getSvgPath = () => `${getAssetPath()}/svgs`;\n\nexport const getSvgAssetUrls = () => ({\n  home: `${getSvgPath()}/guest/home.svg`,\n  phone: `${getSvgPath()}/common/phone.svg`,\n  search: `${getSvgPath()}/common/search.svg`,\n  account: `${getSvgPath()}/guest/account.svg`,\n});\n\nexport const getBrandSvg = (brandCode: string) => `${getSvgPath()}/logos/${brandCode}.svg`;\n\ntype SvgStyleProps = {\n  size?: number;\n  height?: number;\n  width?: number;\n};\n\nexport const useSvgStyle = ({ size = 0, width = 0, height = 0 }: SvgStyleProps) => {\n  const h = size || height;\n  const w = size || width;\n  return useMemo(\n    () => ({ height: `${h}px`, width: `${w}px`, marginTop: 5, marginInlineEnd: 19 }),\n    [h, w]\n  );\n};\n","import type { ReactNode } from 'react';\nimport type { FeatureToggles, GetCompanyByAccountIdQuery } from '@dx-ui/cpm-mapping-shared';\nimport {\n  FeatureTogglesContext,\n  CorporateAccountContext,\n  BrandDataContext,\n  MetricsContext,\n} from '@dx-ui/cpm-mapping-shared';\n\nimport { Layout } from '@dx-ui/osc-marketing-layout';\nimport {\n  type BrandQuery,\n  getBrandRouteParams,\n  isBrandHomePageUrlFormat,\n} from '@dx-ui/osc-brands-data';\nimport { useRouter } from 'next/router';\nimport { getBaseUrl } from '../utils/constants';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport { GenericError, PreviewSegmentsContextProvider } from '@dx-ui/cpm-sdk';\nimport { useMetrics } from '../metrics/metrics';\nimport { CpmRenderer } from '../generatedCpmInterface';\nimport { getBrandTaggingValues } from '../utils/get-brand-tagging-values';\nimport type { CpmData } from '../utils/fetch-server-cpm-page';\nimport { getAssetPath, getBrandSvg } from '../utils/assets';\n\ninterface CpmPageProps {\n  brandCode: string;\n  brandData?: BrandQuery['brand'];\n  cpmData: CpmData;\n  corporateAccount: GetCompanyByAccountIdQuery | null;\n  localeCode: string;\n  isCPMEditor?: boolean;\n  featureToggles?: FeatureToggles;\n  shouldIncludeBackToTopButton?: boolean;\n  previewSegments?: string[];\n  appVersion: string;\n}\n/**\n * Wrapper providing a neater interface around Providers and BloomReachPage.\n */\nexport function CpmPage({\n  brandCode,\n  brandData,\n  cpmData,\n  corporateAccount,\n  localeCode,\n  featureToggles = [],\n  shouldIncludeBackToTopButton = true,\n  previewSegments,\n  isCPMEditor = false,\n  appVersion,\n}: CpmPageProps): JSX.Element {\n  const router = useRouter();\n  const { authClient } = useAuth();\n\n  const { language: languageCode } = new Intl.Locale(localeCode);\n  const baseAppUrl = getBaseUrl(`${languageCode}${router.asPath}`);\n  const { pathname } = new URL(baseAppUrl);\n  const { brandPath: fullBrandPath } = getBrandRouteParams(router.asPath, languageCode);\n  const metricsInstance = useMetrics(\n    localeCode,\n    fullBrandPath,\n    cpmData.mappedPage,\n    brandData,\n    isCPMEditor\n  );\n\n  if (!brandCode) {\n    return GenericError({\n      description1: 'Page is missing `brandCode`',\n      description2: '',\n    });\n  }\n\n  if (!brandData) {\n    return GenericError({\n      description1: 'Missing brand data',\n      description2: `Brand code: \"${brandCode}\" can't be found in \"query brands\"`,\n    });\n  }\n\n  if (!authClient) {\n    throw new Error('Unable to load authClient');\n  }\n\n  return (\n    <FeatureTogglesContext.Provider value={featureToggles}>\n      <CorporateAccountContext.Provider value={corporateAccount}>\n        <BrandDataContext.Provider value={brandData}>\n          <MetricsContext.Provider value={metricsInstance}>\n            <PreviewSegmentsContextProvider value={previewSegments} isCPMEditor={isCPMEditor}>\n              <CpmRenderer\n                cpmData={cpmData}\n                sectionNames={['top', 'main', 'footer']}\n                mappingName=\"Brands\"\n                campaignCodeTaggingValues={getBrandTaggingValues}\n              >\n                {({ top, footer, main }: Record<string, ReactNode>) => (\n                  <Layout\n                    isBrandHomePage={isBrandHomePageUrlFormat(pathname, brandCode)}\n                    appVersion={appVersion}\n                    top={top}\n                    bottom={footer}\n                    brandCode={brandCode}\n                    localeCode={localeCode}\n                    baseAppUrl={baseAppUrl}\n                    fullBrandPath={fullBrandPath}\n                    brandData={brandData}\n                    shouldIncludeBackToTopButton={shouldIncludeBackToTopButton}\n                    assetPath={getAssetPath()}\n                    brandSvgPath={getBrandSvg(brandCode)}\n                    seo={cpmData.mappedPage.seo}\n                    articleTitle={cpmData.mappedPage.articleTitle}\n                    seoImage={cpmData.mappedPage.seoImage}\n                  >\n                    {main}\n                  </Layout>\n                )}\n              </CpmRenderer>\n            </PreviewSegmentsContextProvider>\n          </MetricsContext.Provider>\n        </BrandDataContext.Provider>\n      </CorporateAccountContext.Provider>\n    </FeatureTogglesContext.Provider>\n  );\n}\n","export const getDependencies = <T>(metricsProps: T) => {\n  const values: unknown[] = [];\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const getObjValues = (obj: any) => {\n    for (const key of Object.keys(obj)) {\n      if (typeof obj[key] === 'object') {\n        getObjValues(obj[key]);\n      } else {\n        values.push(obj[key]);\n      }\n    }\n  };\n\n  getObjValues(metricsProps);\n\n  return values;\n};\n","import { useEffect } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { ReactSVG } from 'react-svg';\nimport { Link } from '@dx-ui/osc-link';\nimport type { IconName } from '@dx-ui/osc-icon';\nimport Icon from '@dx-ui/osc-icon';\nimport { getDependencies } from './utils/error-page-utils';\n\nexport type ErrorKey = 'unknown' | 'technical' | '404';\n\nexport type THelpfulLink = {\n  adaDescription: string;\n  linkLabel: string;\n  linkURL: string;\n  isNewWindow: boolean;\n} & ({ iconUrl: string } | { icon: IconName });\n\nexport type ErrorPageProps<TMetrics, TMetricsProps> = React.PropsWithChildren<{\n  /**\n   * error type\n   */\n  error: ErrorKey;\n\n  helpfulLinks: THelpfulLink[];\n\n  /**\n   * Metrics object with \"setErrorPageData\" method\n   */\n  metrics?: TMetrics & { setErrorPageData: (args: TMetricsProps) => void };\n\n  /**\n   * Props that are being passed to \"setErrorPageData\"\n   */\n  metricsProps?: TMetricsProps;\n}>;\n\n/** Technical error page, Not Found error page and Unknown error page that could be used as a Fallback UI. */\nexport const ErrorPage = <T, K>({\n  error,\n  helpfulLinks,\n  children,\n  metrics,\n  metricsProps,\n}: ErrorPageProps<T, K>) => {\n  const { t } = useTranslation('osc-error-page');\n\n  const useEffectDeps: unknown[] = [];\n\n  if (metricsProps) {\n    useEffectDeps.push(...getDependencies(metricsProps));\n  }\n\n  useEffect(() => {\n    if (metrics && metricsProps) {\n      metrics.setErrorPageData(metricsProps);\n    }\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [metrics, metricsProps, ...useEffectDeps]);\n\n  return (\n    <div className=\"h-screen\">\n      <div className=\"flex flex-col px-8 py-10 sm:h-[80vh] sm:items-center sm:justify-center sm:p-20\">\n        <h1 className=\"text-primary text-4xl font-black sm:text-center xl:mb-4 xl:text-7xl\">\n          {t(`${error}.heading`)}\n        </h1>\n\n        {error !== 'unknown' && t(`${error}.subheading`) ? (\n          <h2\n            data-testid=\"pageSubTitle\"\n            className=\"text-text-alt mb-6 text-sm font-bold tracking-wider sm:mb-9 sm:text-base xl:mb-4\"\n          >\n            {t(`${error}.subheading`).toUpperCase()}\n          </h2>\n        ) : null}\n\n        <p className=\"mb-4 text-base sm:mb-8 sm:text-center xl:mb-16 xl:text-2xl\">\n          {t(`${error}.description`)}\n        </p>\n\n        <p className=\"text-lg font-bold sm:text-lg xl:text-2xl\">{t(`${error}.action`)}</p>\n\n        {helpfulLinks ? (\n          <nav className=\"mb-2 py-2 sm:self-stretch sm:py-10\">\n            <ul className=\"flex flex-col flex-wrap items-start sm:flex-row sm:px-8 md:px-12 lg:px-16\">\n              {helpfulLinks?.map &&\n                helpfulLinks.map((link) => {\n                  return (\n                    <li key={link.linkLabel} className=\"flex justify-center px-1 sm:flex-1\">\n                      <Link\n                        url={link.linkURL}\n                        className=\"text-primary flex flex-nowrap items-center justify-center whitespace-nowrap py-2 text-base xl:text-lg\"\n                      >\n                        <span className=\"block ltr:mr-2 rtl:ml-2\" aria-hidden>\n                          {'iconUrl' in link ? (\n                            <ReactSVG src={link.iconUrl} className=\"w-5\" />\n                          ) : (\n                            <Icon name={link.icon} className=\"w-5\" />\n                          )}\n                        </span>\n                        {link.linkLabel}\n                      </Link>\n                    </li>\n                  );\n                })}\n            </ul>\n          </nav>\n        ) : null}\n\n        {children ? (\n          <div\n            className=\"flex flex-col items-stretch justify-stretch self-stretch sm:items-center md:flex-row\"\n            id=\"callme-wrapper\"\n          >\n            {children}\n          </div>\n        ) : null}\n      </div>\n      <div className=\"absolute bottom-16 right-0\" id=\"chatnow-wrapper\" />\n    </div>\n  );\n};\n\nexport default ErrorPage;\n","import Icon from '@dx-ui/osc-icon';\nimport cx from 'classnames';\nimport { Link } from '@dx-ui/osc-link';\nimport { useTranslation } from 'next-i18next';\n\ntype PhoneNumberLinkProps = React.ComponentProps<typeof Link> &\n  ({ hint: string } | { hasStandardHint: boolean } | Record<never, never>);\n\nfunction usePhoneNumberHint(props: PhoneNumberLinkProps): string {\n  const { t } = useTranslation('osc-error-page');\n\n  if ('hasStandardHint' in props && props.hasStandardHint === true) {\n    return t('callMessage');\n  }\n\n  if ('hint' in props) {\n    return props.hint;\n  }\n\n  return null as never;\n}\n\nfunction sanitizeLinkProps(props: PhoneNumberLinkProps): React.ComponentProps<typeof Link> {\n  const linkProps: React.ComponentProps<typeof Link> = { ...props };\n\n  if ('hasStandardHint' in linkProps) {\n    delete linkProps.hasStandardHint;\n  }\n\n  return linkProps;\n}\n\nexport function PhoneNumberLink(props: PhoneNumberLinkProps) {\n  const { t } = useTranslation('osc-error-page');\n\n  const hint = usePhoneNumberHint(props);\n\n  return (\n    <div key={props.label + props.url} className=\"flex flex-1 flex-col\">\n      <Link\n        {...sanitizeLinkProps(props)}\n        underline={false}\n        className={cx(\n          'text-primary hover:text-primary-alt whitespace-nowrap text-lg font-bold uppercase',\n          props.className\n        )}\n      >\n        <span className=\"sr-only\">{t('phone')}</span>\n        {props.label}\n      </Link>\n      {hint ? <p className=\"text-text-alt text-sm\">{hint}</p> : null}\n    </div>\n  );\n}\n\nexport function PhoneNumberSection({\n  children,\n  showIcon,\n  title,\n}: React.PropsWithChildren<{ showIcon?: boolean; title: string }>) {\n  return (\n    <div className=\"border-border mb-4 flex flex-1 flex-col justify-center first:border-0 lg:border-l-2 lg:px-16 lg:pt-2\">\n      <div className=\"flex flex-col self-stretch md:self-center\">\n        <div className=\"mb-2 flex self-start md:self-start\">\n          {showIcon && <Icon className=\"me-2\" name=\"telephone\" size=\"lg\" variant=\"solid\" />}\n          <h3\n            data-testid=\"contactInfoHeading\"\n            className=\"mb-1 inline-block text-nowrap align-bottom text-lg font-bold lg:text-xl\"\n          >\n            {title}\n          </h3>\n        </div>\n        <div className=\"flex flex-col self-start ps-1 sm:self-center sm:ps-0 md:self-start md:ps-1\">\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n}\n","import { ErrorPage } from './lib/error-page';\n\nexport * from './lib/error-page';\nexport * from './lib/phone-number';\nexport default ErrorPage;\n","import type * as React from 'react';\nimport type { NextPage } from 'next';\nimport { useTranslation } from 'next-i18next';\nimport { useRouter } from 'next/router';\nimport type { FallbackProps } from 'react-error-boundary';\nimport { type IconNames } from '@dx-ui/osc-icon';\nimport { ErrorPage, PhoneNumberLink, PhoneNumberSection } from '@dx-ui/osc-error-page';\n\ntype TNumber = {\n  label: string;\n  phone: string;\n  dataE2e?: string;\n};\n\nexport type TContactInfo = {\n  dataE2e?: string;\n  title: string;\n  showIcon: boolean;\n  numbers: Array<TNumber>;\n  phoneText: string;\n};\n\nfunction isContactInfo(x: unknown): x is TContactInfo {\n  if (typeof x !== 'object') {\n    return false;\n  }\n\n  if (!x) {\n    return false;\n  }\n\n  if ('title' in x && typeof x.title !== 'string') {\n    return false;\n  }\n\n  if ('showIcon' in x && typeof x.showIcon !== 'boolean') {\n    return false;\n  }\n\n  if ('numbers' in x && !Array.isArray(x.numbers)) {\n    return false;\n  }\n\n  if ('phoneText' in x && typeof x.phoneText !== 'string') {\n    return false;\n  }\n\n  return true;\n}\n\nexport type THelpfulLinkItem = {\n  linkURL: string;\n  linkLabel: string;\n  icon: (typeof IconNames)[number];\n  index: number;\n};\n\nexport type ErrorProps = {\n  statusCode: '404' | '500';\n};\n\nconst DEFAULT_LANGUAGE = 'en';\n\nconst ContactInfo: React.FC<TContactInfo> = ({ title, showIcon, numbers }) => {\n  return (\n    <PhoneNumberSection title={title} showIcon={showIcon}>\n      {numbers?.map((number) => (\n        <PhoneNumberLink\n          key={number.label + number.phone}\n          label={number.label}\n          url={`tel:${number.phone}`}\n          hint={number.phone}\n        />\n      ))}\n    </PhoneNumberSection>\n  );\n};\n\nexport const Error: NextPage<ErrorProps> = ({ statusCode }: ErrorProps) => {\n  const language = useRouter()?.query?.language || DEFAULT_LANGUAGE;\n\n  const { t } = useTranslation('osc-marketing-error');\n  const links = {\n    accountUrl: `https://www.hilton.com/${language}/hilton-honors/guest/my-account/`,\n    brandName: 'Hilton',\n    brandUrl: `https://www.hilton.com/${language}/`,\n    searchUrl: `https://www.hilton.com/${language}/search/find-hotels/`,\n  };\n\n  const contactInfo = t('contactInfo', { returnObjects: true });\n  const honors =\n    'honors' in contactInfo && isContactInfo(contactInfo.honors) ? contactInfo.honors : null;\n  const brand =\n    'brand' in contactInfo && isContactInfo(contactInfo.brand) ? contactInfo.brand : null;\n\n  const helpfulLinksRaw = t('helpfulLinks', { ...links, returnObjects: true }) ?? [];\n  const helpfulLinks = Array.isArray(helpfulLinksRaw) ? helpfulLinksRaw : [];\n\n  const errorKind = statusCode === '404' ? '404' : 'technical';\n\n  return (\n    <ErrorPage error={errorKind} helpfulLinks={helpfulLinks}>\n      {brand ? <ContactInfo {...brand} /> : null}\n      {honors ? <ContactInfo {...honors} /> : null}\n    </ErrorPage>\n  );\n};\n\nexport const ErrorFallback: React.FC<\n  Omit<FallbackProps, 'error'> & { error: Error & ErrorProps }\n> = ({ error }) => {\n  return <Error statusCode={error.statusCode} />;\n};\n","import { env } from '@dx-ui/framework-env';\n\nexport function getQueryProviderProps() {\n  const config = {\n    incompleteLoggingEnabled: env('RUMCS_CAPTURE_CUSTOM_ERRORS') === 'enabled',\n    appId: env('DX_AUTH_API_CUSTOMER_APP_ID'),\n    appName: env('APP_NAME'),\n    authEndpoints: {\n      browser: env('DX_AUTH_API_CLIENT_URI'),\n      server: process.env.DX_AUTH_API_SERVER_URI || '',\n    },\n    gqlEndpoints: {\n      browser: env('BROWSER_DX_GQL_URI'),\n      server: process.env.SERVER_DX_GQL_URI || '',\n    },\n  };\n\n  return config;\n}\n","import type { QueryClient } from '@tanstack/react-query';\nimport type { CpmClientBundle } from '@dx-ui/cpm-sdk';\nimport { RuleEngine } from '@dx-shared/rule-engine';\n\nimport type { CpmServerData } from '../generatedCpmInterface';\nimport { fetchServerCpmPage as fetchServerPage } from '../generatedCpmInterface';\nimport { getBrandTaggingValues } from '../utils/get-brand-tagging-values';\nimport { GraphError } from '@dx-ui/types-graphql';\nimport { serverSideGetTranslatedCmsUrlsQuery } from '@dx-ui/osc-brands-data';\n\nexport type CpmData = CpmServerData | CpmClientBundle;\n\nconst sectionNames = ['top', 'main', 'footer'];\nconst DEFAULT_LANGUAGE = 'en';\n\n/**\n * Fetch page data from Core+ for content path\n */\nexport async function fetchServerCpmPage({\n  contentPath,\n  localeCode,\n  pathname: _pathname,\n  queryClient,\n}: {\n  contentPath: string;\n  localeCode: string;\n  pathname: string;\n  queryClient: QueryClient;\n}): Promise<CpmServerData> {\n  // Config rule data\n  const translatedCmsUrlsConfigQuery = await serverSideGetTranslatedCmsUrlsQuery(queryClient);\n  const cmsRuleUrlConditions = translatedCmsUrlsConfigQuery?.featureConfigs[0]?.conditions;\n\n  // Config rules use the browser pathname over content path, so we need the pathname without locale OR search params\n  const pathname = new URL(_pathname, 'https://www.hilton.com').pathname;\n\n  const cmsRuleEngine = cmsRuleUrlConditions\n    ? new RuleEngine({\n        name: 'rule-ui-translate-cms',\n        conditions: cmsRuleUrlConditions,\n      })\n    : null;\n\n  /**\n   * Attempt to return the English version of the page *IF* the\n   * in-language/translated page 404's.\n   *\n   * Note: The English version of the page could 404 if it doesn't exist\n   * in the CMS.\n   */\n  const canFallbackToEnPage = Boolean(cmsRuleEngine?.run({ url: pathname, locale: localeCode }));\n\n  const localeContentPath = getContentPath({\n    contentPath,\n    localeCode,\n    includePDir: canFallbackToEnPage,\n  });\n  const englishFallbackContentPath = getContentPath({\n    contentPath,\n    localeCode,\n    removeLocale: true,\n  });\n\n  // This prevents us from making two requests when the content path is the same and the locale equals 'en'\n  const isDuplicateEnContentPath =\n    localeContentPath === englishFallbackContentPath && localeCode === DEFAULT_LANGUAGE;\n\n  const localePage = await fetchServerPage(\n    queryClient,\n    localeContentPath,\n    localeCode,\n    _pathname,\n    sectionNames,\n    getBrandTaggingValues\n  ).catch(handleServerFetchError);\n\n  const englishFallbackPage =\n    !isDuplicateEnContentPath && canFallbackToEnPage\n      ? await fetchServerPage(\n          queryClient,\n          englishFallbackContentPath,\n          DEFAULT_LANGUAGE,\n          _pathname,\n          sectionNames,\n          getBrandTaggingValues\n        ).catch(handleServerFetchError)\n      : null;\n\n  // This content path only exists for this specific `localeCode` and doesn't have an 'en' version\n  const isPageInLanguageOnly =\n    !isDuplicateEnContentPath && canFallbackToEnPage && englishFallbackPage === null;\n\n  const page = localePage || englishFallbackPage;\n\n  if (page === null) {\n    // Include all the variables used to determine which content paths are requested for debugging\n    throw new FetchServerCpmPage404Error(`No data for contentPath`, {\n      contentPath,\n      localeCode,\n      canFallbackToEnPage,\n      localeContentPath,\n      englishFallbackContentPath,\n      isDuplicateEnContentPath,\n      isPageInLanguageOnly,\n      localePageExists: !!localePage,\n      englishFallbackPageExist: !!englishFallbackPage,\n    });\n  }\n\n  return page;\n}\n\nfunction getContentPath({\n  contentPath,\n  localeCode,\n  includePDir,\n  removeLocale,\n}: {\n  contentPath: string;\n  localeCode: string;\n  includePDir?: boolean;\n  removeLocale?: boolean;\n}) {\n  if (includePDir && !contentPath.includes('/p/')) {\n    contentPath = contentPath.replace(`/${localeCode}/`, `/${localeCode}/p/`);\n  }\n\n  if (removeLocale) {\n    contentPath = contentPath.replace(`/${localeCode}/`, '/');\n  }\n\n  return contentPath;\n}\n\nfunction handleServerFetchError(error: GraphError) {\n  if (is404Error(error)) {\n    return null;\n  }\n  throw error;\n}\n\nfunction is404Error(error: GraphError) {\n  return (\n    error instanceof GraphError &&\n    Array.isArray(error.graphQLErrors) &&\n    error.graphQLErrors[0]?.message === 'Not Found'\n  );\n}\n\ntype FetchServerCpmPageErrorVariables = Record<string, string | boolean>;\n\nexport class FetchServerCpmPage404Error extends Error {\n  public variables: FetchServerCpmPageErrorVariables = {};\n\n  constructor(\n    message: string,\n    variables: FetchServerCpmPageErrorVariables,\n    options?: ErrorOptions\n  ) {\n    super(message);\n    this.name = 'CpmFetchServerPageError';\n    this.variables = variables;\n    this.cause = options?.cause;\n  }\n}\n","export * from './types';\n\nexport * from './components/CpmPage';\nexport * from './components/Error';\n\nexport * from './utils/routing';\nexport { getBrandTaggingValues } from './utils/get-brand-tagging-values';\nexport { getQueryProviderProps } from './utils/get-query-provider-props';\n\nexport { useMetrics } from './metrics/metrics';\n\nexport { namespaces, mappingSpec, Header } from './generatedCpmInterface';\n\nexport type { CpmData } from './utils/fetch-server-cpm-page';\nexport { fetchServerCpmPage, FetchServerCpmPage404Error } from './utils/fetch-server-cpm-page';\n","import type * as React from 'react';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport Icon from '@dx-ui/osc-icon';\n\nexport type Alert = {\n  index?: number;\n  status?: 'normal' | 'urgent' | 'emergency';\n  title?: string;\n  /**\n   * Adds truncation to text if true, true is default state (current)\n   */\n  isTruncated?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Displays a message with an icon if status requires it\n */\nexport const Alert: React.FC<React.PropsWithChildren<Alert>> = ({\n  className,\n  status = 'urgent',\n  title,\n  index = 0,\n  isTruncated = true,\n  children,\n  ...rest\n}) => {\n  const [t] = useTranslation('osc-alert');\n  const { active, total, hasSlides } = useCycle();\n  const cycleProps: React.HTMLAttributes<HTMLDivElement> = hasSlides\n    ? {\n        role: 'group',\n        'aria-roledescription': 'slide',\n        'aria-label': `${index + 1} of ${total}`,\n      }\n    : {};\n\n  return (\n    <div\n      className={cx(\n        'w-full py-2',\n        {\n          'alert-normal': status === 'normal',\n          'alert-urgent': status === 'urgent',\n          'alert-emergency': status === 'emergency',\n          hidden: hasSlides && index !== active,\n          'pb-8 md:pb-2': hasSlides,\n        },\n        className\n      )}\n      {...cycleProps}\n      {...rest}\n    >\n      <div className=\"container flex items-center justify-center space-x-3\">\n        {status === 'urgent' && (\n          <>\n            <p className=\"sr-only\">{t('urgent')}</p>\n            <Icon name=\"alert-triangle\" size=\"md\" className=\"alert-urgent-icon\" variant=\"solid\" />\n          </>\n        )}\n        {status === 'emergency' && (\n          <>\n            <p className=\"sr-only\">{t('emergency')}</p>\n            <Icon name=\"alert-circle\" size=\"md\" className=\"alert-emergency-icon\" variant=\"solid\" />\n          </>\n        )}\n        {!!title && (\n          <p\n            data-osc-product=\"alert-label\"\n            className={cx('max-w-3/5 text-base font-bold', {\n              truncate: isTruncated,\n              'max-w-xs lg:max-w-3/5': hasSlides,\n            })}\n          >\n            {title}\n          </p>\n        )}\n        {children}\n      </div>\n    </div>\n  );\n};\n\nexport default Alert;\n","import * as React from 'react';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport type { DialogBaseProps, DialogOptionalProps } from '@dx-ui/osc-dialog-v2';\n\ntype AlertDialog = {\n  /**\n   * text for the button\n   */\n  label: string;\n} & DialogBaseProps &\n  DialogOptionalProps;\n\n/**\n * wraps the `<Dialog>` component and a button to be used in the alert\n */\nexport const AlertDialog: React.FC<React.PropsWithChildren<AlertDialog>> = ({\n  ariaLabel,\n  label,\n  children,\n  title,\n  hasChildrenWithTitle,\n  ...rest\n}) => {\n  const [open, setOpen] = React.useState(false);\n\n  const commonProps = {\n    ...rest,\n    isOpen: open,\n    onDismiss: () => setOpen(!open),\n    dialogTrigger: (\n      <button className=\"btn btn-primary-link\" onClick={() => setOpen(true)} type=\"button\">\n        {label}\n      </button>\n    ),\n  };\n\n  return title ? (\n    <Dialog {...commonProps} title={title} hasChildrenWithTitle={hasChildrenWithTitle}>\n      {children}\n    </Dialog>\n  ) : ariaLabel ? (\n    <Dialog {...commonProps} ariaLabel={ariaLabel} hasChildrenWithTitle={hasChildrenWithTitle}>\n      {children}\n    </Dialog>\n  ) : null;\n};\n\nexport default AlertDialog;\n","import type * as React from 'react';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport type { Alerts } from './alerts';\n\nconst AlertsContent: React.FC<React.PropsWithChildren<Alerts>> = ({ children }) => {\n  const { cycleId } = useCycle();\n\n  return (\n    <div id={cycleId} aria-live=\"polite\" className=\"w-full\">\n      {children}\n    </div>\n  );\n};\n\nexport { AlertsContent };\nexport default AlertsContent;\n","import type * as React from 'react';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport { Pagination } from '@dx-ui/osc-pagination';\nimport type { Alerts } from './alerts';\n\nconst AlertsControls: React.FC<React.PropsWithChildren<Alerts>> = ({\n  label = 'Page',\n  hideLabel = true,\n  loop,\n}) => {\n  const { hasSlides, cycleId, active, total, onNextClick, onPreviousClick } = useCycle();\n\n  return hasSlides ? (\n    <div className=\"pointer-events-none absolute bottom-0 right-0 pb-1 md:inset-0 md:pb-0\">\n      <div className=\"mx-auto flex size-full max-w-screen-2xl items-center justify-end px-4\">\n        <Pagination\n          controls={cycleId}\n          label={label}\n          hideLabel={hideLabel}\n          current={active}\n          total={total}\n          onNextClick={onNextClick}\n          onPreviousClick={onPreviousClick}\n          loop={loop}\n        />\n      </div>\n    </div>\n  ) : null;\n};\nexport { AlertsControls };\nexport default AlertsControls;\n","import * as React from 'react';\nimport type { Pagination } from '@dx-ui/osc-pagination';\nimport { Alert } from './alert';\nimport { AlertsContent } from './alerts.content';\nimport { AlertsControls } from './alerts.controls';\nimport { Cycle, type CycleProps } from '@dx-ui/osc-cycle';\n\ntype Alerts = Pick<CycleProps, 'onChangeIndex'> &\n  Pick<Pagination, 'label' | 'loop' | 'hideLabel' | 'current'> &\n  React.HTMLAttributes<HTMLDivElement>;\n\nconst Alerts: React.FC<React.PropsWithChildren<Alerts>> = ({\n  label,\n  hideLabel,\n  loop,\n  children,\n  current,\n  onChangeIndex,\n  ...rest\n}) => {\n  const validSlides = React.Children.map(\n    children,\n    (child) => React.isValidElement(child) && child.type === Alert && child\n  )?.filter(Boolean);\n\n  const slides = React.Children.map(\n    validSlides,\n    (child, index) =>\n      React.isValidElement(child) &&\n      React.cloneElement<Alert>(child as React.ReactElement<React.ComponentProps<typeof Alert>>, {\n        index,\n      })\n  );\n  const total = React.Children.count(slides);\n\n  return (\n    <Cycle current={current} total={total} onChangeIndex={onChangeIndex}>\n      <AlertsContent {...rest}>{slides}</AlertsContent>\n      <AlertsControls label={label} hideLabel={hideLabel} loop={loop} />\n    </Cycle>\n  );\n};\n\nexport { Alerts };\nexport default Alerts;\n","export * from './alert';\nexport * from './alert.dialog';\nexport * from './alerts';\nexport * from './alerts.content';\nexport * from './alerts.controls';\n","export * from './lib';\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 BrandMessagesDocument = {\n  operationName: 'brand',\n  operationString: `query brand($brandCode: String!, $lang: String!) {\n  clientMessages: brand(brandCode: $brandCode, language: $lang) {\n    messages {\n      id\n      type\n      name\n      headline\n      shortDescription\n      startDateTime\n      endDateTime\n      link {\n        _id\n        adaDescription\n        isNewWindow\n        label\n        url\n      }\n    }\n  }\n}`,\n  originalOpName: 'BrandMessages',\n};\nexport function useBrandMessagesQuery<TData = Types.BrandMessagesQuery, TError = DXError>(\n  variables: Types.BrandMessagesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.BrandMessagesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.BrandMessagesQuery, TError, TData>({\n    queryKey: [BrandMessagesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideBrandMessagesQuery(\n  queryClient: QueryClient,\n  variables: Types.BrandMessagesQueryVariables,\n  options?: FetchQueryOptions<Types.BrandMessagesQuery>\n) {\n  return queryClient.fetchQuery<Types.BrandMessagesQuery>({\n    queryKey: [BrandMessagesDocument, variables],\n    ...options,\n  });\n}\n","import * as React from 'react';\nimport dynamic from 'next/dynamic';\n\nimport { Link } from '@dx-ui/osc-link';\nimport { Alert, Alerts, AlertDialog } from '@dx-ui/osc-alert';\n\nimport { useBrandMessagesQuery } from '../../generated/queries';\n\nimport { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { logError } from '@dx-ui/framework-logger';\nimport { useTranslation } from 'next-i18next';\nimport type { BrandMessageType } from '@dx-ui/gql-types';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\nconst getStatus = (messageType: BrandMessageType) => {\n  switch (messageType) {\n    case 'error':\n      return 'emergency';\n    default:\n      return 'urgent';\n  }\n};\n\nconst DynamicMarkdown = dynamic(() => import('../../utils/dynamic-markdown-component'));\n\nexport default createCpmComponentDefinition(\n  'BrandAlerts',\n\n  () => null,\n\n  function BrandAlertsCpm({ componentParams, mappedPage: { brandCode, languageCode } }) {\n    const { data, isFetching, refetch } = useBrandMessagesQuery({\n      brandCode,\n      lang: languageCode,\n    });\n    const { t } = useTranslation('osc-alert');\n\n    /*\n     * This causes the request to be made client side,\n     * This is so alerts are not included in the server-side page cache\n     */\n    React.useEffect(() => {\n      refetch().catch((error) => logError('BrandAlerts', error, 'failed to refech brand alert'));\n    }, [refetch]);\n\n    const messages = data?.clientMessages?.messages ?? [];\n    const label = '';\n\n    if (isFetching || messages?.length === 0) {\n      return null;\n    }\n\n    return messages?.length > 0 ? (\n      <BrandComponentThemeInline componentParams={componentParams} brandCode={brandCode}>\n        <div>\n          <Alerts label={label}>\n            {messages.map(\n              ({\n                link: brandLink,\n                type: messageType,\n                shortDescription,\n                headline,\n                ...messageProps\n              }) => {\n                const link: React.ComponentProps<typeof Link> = {\n                  ...brandLink,\n                  adaDescription: brandLink?.adaDescription ?? undefined,\n                  isNewWindow: brandLink?.isNewWindow ?? undefined,\n                  label: brandLink?.label ?? undefined,\n                  url: brandLink?.url ?? '',\n                };\n\n                return (\n                  <Alert\n                    key={[headline, shortDescription].join('')}\n                    title={headline ?? undefined}\n                    status={messageType ? getStatus(messageType) : undefined}\n                  >\n                    {link && !shortDescription ? (\n                      <Link {...link}>{link.label}</Link>\n                    ) : (\n                      !!shortDescription && (\n                        <AlertDialog\n                          label={t('readMessage')}\n                          {...(headline ? { title: headline } : { ariaLabel: t('messageDialog') })}\n                          {...messageProps}\n                        >\n                          <>\n                            <DynamicMarkdown>{shortDescription}</DynamicMarkdown>\n                            {link?.label && link?.url ? <Link {...link}>{link.label}</Link> : null}\n                          </>\n                        </AlertDialog>\n                      )\n                    )}\n                  </Alert>\n                );\n              }\n            )}\n          </Alerts>\n        </div>\n      </BrandComponentThemeInline>\n    ) : null;\n  }\n);\n","export { default } from './cpm-component-definition';\n","import type { ReactNode } from 'react';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport cx from 'classnames';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { Link as LinkType } from '@dx-ui/osc-link';\n\nexport type AttachedContent = {\n  headline?: string | null;\n  description?: string | null;\n  link?: (LinkType & { experimentationConfiguration?: CmsExperimentationConfiguration }) | null;\n  alignContent?: CmsAlignContent;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  cmsDocumentControl?: ReactNode;\n  cmsTranslationClasses?: string;\n};\n\nexport const DocsTAttachedContent: React.FC<React.PropsWithChildren<AttachedContent>> = () => null;\n\nexport const AttachedContent = ({\n  headline,\n  description,\n  link,\n  alignContent = 'center',\n  brandComponentTheme,\n}: AttachedContent) => {\n  const textAlignCss = {\n    'text-left': alignContent === 'left',\n    'text-right': alignContent === 'right',\n    'text-center': alignContent === 'center',\n  };\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div data-testid=\"carousel-attached-content\">\n      {headline ? (\n        <BrandTextHeader\n          className={cx(textAlignCss, {\n            '!text-text-inverse': isDark,\n            'brand-ht:!text-text-inverse': isLight,\n          })}\n        >\n          {headline}\n        </BrandTextHeader>\n      ) : null}\n\n      {description ? (\n        <BrandTextBody\n          className={cx(textAlignCss, {\n            'text-text-inverse': isDark,\n            'brand-ht:text-text-inverse': isLight,\n          })}\n          brandComponentTheme={brandComponentTheme}\n        >\n          {description}\n        </BrandTextBody>\n      ) : null}\n\n      {link ? (\n        <div className={cx('mt-2 xl:mt-4', textAlignCss)}>\n          <BrandLink\n            label={link.label}\n            isNewWindow={link.isNewWindow}\n            showNewWindowIcon={link.isNewWindow}\n            url={link.url}\n            brandComponentTheme={brandComponentTheme}\n            data-conductrics-goal={link.experimentationConfiguration?.goal}\n            data-conductrics-value={link.experimentationConfiguration?.value}\n          />\n        </div>\n      ) : null}\n    </div>\n  );\n};\n","export const breakpoints: Record<string, string> = {\n  sm: '640',\n  md: '768',\n  lg: '1024',\n  xl: '1280',\n  xxl: '1440',\n};\n\nexport const getBreakpoint = (\n  size: keyof typeof breakpoints,\n  asNumber?: boolean\n): number | string => {\n  const value = breakpoints[size] || '0';\n  return asNumber ? parseInt(value) : value;\n};\n","import { useMemo, useState } from 'react';\nimport { AttachedContent } from './BrandCarouselAttachedContent';\nimport cx from 'classnames';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { GetHeightForWidthAndAspectRatio, overrideImageUrl } from '@dx-ui/osc-responsive-image';\nimport { getBreakpoint } from '../../utils/media-query';\nimport { useMediaQuery } from 'usehooks-ts';\nimport { CarouselSingle, generateCpmCarouselMetrics } from '@dx-ui/osc-carousel';\nimport type { BaseImageMetrics } from '@dx-ui/config-metrics';\n\nexport type BrandCarouselProps = {\n  items: AttachedContent[];\n  images: { alt: string; url: string; captionData?: CaptionProps; children?: React.ReactNode }[];\n  isFullScreen: boolean;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  alignContent?: CmsAlignContent;\n  onArrowClick?: (index: number) => void;\n};\n\n/**\n * Brand Carousel (formerly Image Carousel) utilizes the OSC-Carousel and adds optional attached text content to create a looped carousel, sadly Calliope music and horses are not included.\n */\nexport const BrandCarousel = ({\n  items,\n  isFullScreen,\n  images,\n  brandComponentTheme,\n  alignContent = 'center',\n  onArrowClick,\n}: BrandCarouselProps) => {\n  const [activeIndex, setActiveIndex] = useState(0);\n\n  const onNavigation = (index: number) => {\n    setActiveIndex(index);\n    onArrowClick?.(index);\n  };\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const { headline, description, link, cmsTranslationClasses } = items[activeIndex] || {};\n\n  const isXL = useMediaQuery(`(min-width: ${getBreakpoint('xl')}px)`);\n  const isSmall = useMediaQuery(`(min-width: ${getBreakpoint('sm')}px)`);\n\n  const imageUrls = images.map((image) => {\n    const width = isXL ? 1500 : isSmall ? 1280 : 640;\n    const aspectRatio = isXL ? '21:9' : isSmall || !isFullScreen ? '3:2' : '1:1';\n\n    return {\n      url: overrideImageUrl(image.url, GetHeightForWidthAndAspectRatio(width, aspectRatio), width),\n      alt: image.alt,\n      captionData: image.captionData,\n      children: image.children ? image.children : null,\n    };\n  });\n\n  const metrics: Partial<BaseImageMetrics> = useMemo(\n    () => generateCpmCarouselMetrics(headline),\n    [headline]\n  );\n\n  return (\n    <div className=\"relative\">\n      {isFullScreen ? (\n        <div\n          data-testid=\"testBackgroundColorFull\"\n          className={cx(\n            {\n              'brand-ou:bg-secondary': !isDark && !isLight,\n              'bg-bg-dark': isDark,\n              'bg-bg-light': isLight,\n            },\n            cmsTranslationClasses\n          )}\n        >\n          <CarouselSingle\n            onArrowClick={onNavigation}\n            images={imageUrls}\n            className=\"!aspect-[1/1] sm:!aspect-[3/2] xl:!aspect-[21/9]\"\n            showAlternateControls={true}\n            metrics={metrics}\n          />\n          <div className=\"container py-8 brand-wa:py-16 xl:py-12 brand-wa:xl:py-20\">\n            <AttachedContent\n              headline={headline}\n              description={description}\n              link={link}\n              alignContent={alignContent}\n              brandComponentTheme={brandComponentTheme}\n            />\n          </div>\n        </div>\n      ) : (\n        <div\n          data-testid=\"testBackgroundColor\"\n          className={cx('container py-8 brand-wa:py-16 xl:py-12 brand-wa:xl:py-20', {\n            'brand-ou:bg-secondary': !isDark && !isLight,\n            'bg-bg-dark': isDark,\n            'bg-bg-light': isLight,\n          })}\n        >\n          {/* some brand will require className='rounded-lg' to display rounded corners, this is brand specfic */}\n          <CarouselSingle\n            onArrowClick={onNavigation}\n            images={imageUrls}\n            className=\"image-corner-radius xl:aspect-[21/9]\"\n            showAlternateControls={false}\n            metrics={metrics}\n          />\n          <div className=\"pt-8 xl:pt-12\">\n            <AttachedContent\n              headline={headline}\n              description={description}\n              link={link}\n              alignContent={alignContent}\n              brandComponentTheme={brandComponentTheme}\n            />\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default BrandCarousel;\n","export const extractInstanceIndexFromId = (id: string) => {\n  if (!id) {\n    return -1;\n  }\n  const dashIndex = id.lastIndexOf('-');\n  return parseInt(id.substring(dashIndex >= 0 ? dashIndex + 1 : 0), 10);\n};\n","import type { AttachedContent } from './BrandCarouselAttachedContent';\nimport cx from 'classnames';\n\ntype CarouselItem = AttachedContent & { $ref: string };\n\ninterface BrandCarouselEditorButtons {\n  isCPMEditor?: boolean;\n  items: CarouselItem[];\n  slideIndex: number;\n}\n\n/**\n * The BrandCarousel removes DOM nodes when the slide changes.\n * Bloomreach editor buttons don't update when this happens,\n * so we need to manually show/hide them based on the slide index.\n */\nexport function BrandCarouselEditorButtons({\n  isCPMEditor,\n  items,\n  slideIndex,\n}: BrandCarouselEditorButtons) {\n  // No need to render anything if we aren't in the editor\n  if (!isCPMEditor) {\n    return null;\n  }\n\n  return (\n    <div className=\"relative\">\n      <div\n        className=\"absolute -top-12 right-0 h-10 w-full\"\n        data-testid=\"BrandCarouselEditorButtons\"\n      >\n        {items.map((item, index) => {\n          if (item.cmsDocumentControl) {\n            return (\n              <div\n                key={item.$ref}\n                data-testid={`BrandCarouselEditorButton-${index}`}\n                className={cx('absolute top-0 size-10', {\n                  'right-0': index === slideIndex,\n                  'left-[-10000px]': index !== slideIndex,\n                })}\n              >\n                {item.cmsDocumentControl}\n              </div>\n            );\n          }\n          return null;\n        })}\n      </div>\n    </div>\n  );\n}\n","import cx from 'classnames';\n\ninterface ForTheStayOverlayProps {\n  overlayPosition: 'center' | 'left' | 'right';\n  count: number;\n}\n\nexport const ForTheStayOverlay = ({ overlayPosition, count }: ForTheStayOverlayProps) => {\n  return (\n    <div\n      data-testid=\"forTheStayOverlay\"\n      className={cx(\n        'pointer-events-none absolute top-1/2 w-40 -translate-y-1/2 overflow-hidden sm:w-60 md:w-80',\n        {\n          'inset-x-1/2 -translate-x-1/2': overlayPosition === 'center',\n          'start-16': overlayPosition === 'left' && count > 1,\n          'start-2': overlayPosition === 'left' && count === 1,\n          'end-16': overlayPosition === 'right' && count > 1,\n          'end-2': overlayPosition === 'right' && count === 1,\n        }\n      )}\n    >\n      <div className=\"h-24 w-full bg-[url('/modules/assets/img/brand/WW/backgrounds/for-the-stay.svg')] bg-contain bg-center bg-no-repeat\" />\n    </div>\n  );\n};\n","import type { Context } from 'react';\nimport { createContext, useContext } from 'react';\nimport type { BrandSocialMediaLink, FeatureToggle, ShopAvailOptions } from '@dx-ui/gql-types';\nimport type { GetCompanyByAccountIdQuery } from './types/gql';\nimport type { MetricsInterface } from '@dx-ui/osc-brands-metrics';\n\nfunction makeContext<T>(name: string): [context: Context<T | undefined>, hook: () => T] {\n  const Context = createContext<T | undefined>(undefined);\n\n  return [\n    Context,\n    () => {\n      const value = useContext(Context);\n\n      if (value === undefined) {\n        throw new Error(\n          `${name} is undefined. This component can only be used in apps that are wrapped in ${name}Context`\n        );\n      }\n\n      return value;\n    },\n  ];\n}\n\nexport type FeatureToggles = Pick<FeatureToggle, 'name' | 'enabled' | 'cacheable'>[];\nexport const [FeatureTogglesContext, useFeatureToggles] =\n  makeContext<FeatureToggles>('FeatureToggles');\n\nexport type CorporateAccount = GetCompanyByAccountIdQuery | null;\nexport const [CorporateAccountContext, useCorporateAccount] =\n  makeContext<CorporateAccount>('CorporateAccount');\n\nexport type BrandData = {\n  code?: string | null | undefined;\n  name?: string | null | undefined;\n  isPartnerBrand?: boolean | null | undefined;\n  formalName?: string | null | undefined;\n  url?: string | null | undefined;\n  locationsUrl?: string | null | undefined;\n  socialMediaLinks?: Array<Pick<BrandSocialMediaLink, 'channel' | 'url'>>;\n  phone?: { number: string; friendlyNumber: string };\n  shopAvailOptions?: Pick<ShopAvailOptions, 'maxNumRooms'> | null;\n};\nexport const [BrandDataContext, useBrandData] = makeContext<BrandData>('BrandData');\n\nexport const [MetricsContext, useMetrics] = makeContext<MetricsInterface>('Metrics');\n","import {\n  CpmMappingError,\n  createCpmComponentDefinition,\n  useCreateManageContentButton,\n} from '@dx-ui/cpm-sdk';\nimport { useState } from 'react';\nimport type { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport { HeadingLevelProvider } from '@dx-ui/osc-heading-level';\nimport { BrandCarousel } from './BrandCarousel';\nimport { extractInstanceIndexFromId } from '../../utils';\n\nimport { BrandCarouselEditorButtons } from './BrandCarouselEditorButtons';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { ForTheStayOverlay } from './ForTheStayOverlay';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  'Carousel',\n\n  function mapData({ data, index, componentParams }) {\n    const asset = data.cpmAssets[0];\n\n    if (!asset) {\n      throw new CpmMappingError(`${data.displayName || data.name} is missing an image`);\n    }\n\n    return {\n      $ref: data.ref?.$ref,\n      id: data.id ?? '',\n      image: {\n        alt: asset.altText,\n        url: asset.aspectRatios['3x2']?.url ?? '',\n        captionData: asset.caption\n          ? {\n              captionLink: asset.captionLink ?? undefined,\n              caption: asset.caption ?? '',\n            }\n          : undefined,\n      },\n      headline: data.headline,\n      description: data.longDescription,\n      link: data.link?.url ? data.link : null,\n      links: data.links,\n      topHeadingLevel: calculateHeadingLevel(index, componentParams.topHeadingLevel),\n    };\n  },\n\n  function BrandCarouselCpm({\n    items = [],\n    listData,\n    componentParams,\n    mappedPage: { brandCode },\n    isCPMEditor,\n  }) {\n    const metrics = useMetrics();\n    const [slideIndex, setSlideIndex] = useState(0);\n    const { textAlign, noMargin } = componentParams;\n\n    const createManageContentButton = useCreateManageContentButton();\n\n    const id = listData?.id ?? '';\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    const onArrowClick = (newIndex: number) => {\n      setSlideIndex(newIndex);\n\n      if (metrics.trackCarouselNavigationClick) {\n        metrics.trackCarouselNavigationClick([\n          {\n            navigationClick: true,\n            carouselNumber: extractInstanceIndexFromId(id),\n            index: newIndex + 1,\n            totalDots: items.length,\n          },\n        ]);\n      }\n    };\n\n    const imageCount = items.length;\n    const images = items.map((item, index) => ({\n      ...item.image,\n      children:\n        index === 0 && componentParams.text === 'forTheStay' ? (\n          <ForTheStayOverlay\n            overlayPosition={componentParams.orientation ?? 'left'}\n            count={imageCount}\n          />\n        ) : null,\n    }));\n\n    return (\n      <HeadingLevelProvider level={itemsWithManageContentButton[slideIndex]?.topHeadingLevel}>\n        <BrandComponentThemeInline\n          brandCode={brandCode}\n          componentClassName=\"brandCarousel\"\n          componentParams={componentParams}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration,\n          }}\n        >\n          <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={brandCode === 'GU'}>\n            <BrandCarousel\n              items={itemsWithManageContentButton}\n              isFullScreen={noMargin}\n              images={images}\n              onArrowClick={onArrowClick}\n              alignContent={textAlign}\n              brandComponentTheme={componentParams.theme}\n            />\n          </AnimateRevealItem>\n          <BrandCarouselEditorButtons\n            isCPMEditor={isCPMEditor}\n            items={itemsWithManageContentButton}\n            slideIndex={slideIndex}\n          />\n        </BrandComponentThemeInline>\n      </HeadingLevelProvider>\n    );\n  }\n);\n\nexport function calculateHeadingLevel(index: number, headingLevel?: number) {\n  let level;\n\n  if (headingLevel === 1) {\n    if (index === 0) {\n      level = 1;\n    } else {\n      level = 2;\n    }\n  } else {\n    level = headingLevel;\n  }\n\n  return level as HeadingLevel;\n}\n","export { default } from './cpm-component-definition';\n","import { useCallback } from 'react';\nimport { BrandShowcase } from '@dx-ui/osc-marketing';\nimport { extractInstanceIndexFromId } from '../../utils/id-transformer';\nimport { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  'Brand Showcase',\n\n  function mapComponentData({ data }) {\n    const { documentBrandCode, name, shortDescription } = data;\n\n    return {\n      code: documentBrandCode,\n      name: name ?? '',\n      shortDescription,\n      label: data.link?.label ?? '',\n      url: data.link?.url ?? '',\n      filtered: false,\n    };\n  },\n\n  function BrandShowcaseCpm({ items = [], componentParams, listData, mappedPage: { brandCode } }) {\n    const metrics = useMetrics();\n    const id = listData?.id ?? '';\n\n    const onItemClicked = useCallback(\n      (index: number) => {\n        if (metrics) {\n          const { name } = items[index] ?? {};\n          metrics.trackBrandShowcaseClick?.([\n            {\n              brandShowcaseNumber: extractInstanceIndexFromId(id),\n              itemNumber: index + 1,\n              totalItems: items.length,\n              brandName: name ?? '',\n            },\n          ]);\n        }\n      },\n      [metrics, id, items]\n    );\n\n    if (!items.length) {\n      return null;\n    }\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <BrandShowcase\n          id={id}\n          onItemClicked={onItemClicked}\n          items={items}\n          /*these should be hard coded (according to dx-hotels-ui/src/components/brand-showcase/index.tsx)*/\n          logoUrl=\"/modules/assets/svgs/logos/brand\"\n          baseUrl=\"/en\"\n        />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { YouTubeVideo } from '@dx-ui/osc-youtube-video';\nimport { CpmMappingError, createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\nexport default createCpmComponentDefinition(\n  'Brand Video',\n\n  function mapComponentData({ data }) {\n    const video = data.videos?.[0];\n\n    if (!video) {\n      throw new CpmMappingError(\n        `Brand Video requires a document has a video (${data.contentType} - ${data.displayName})`\n      );\n    }\n\n    return {\n      $ref: data.ref?.$ref,\n      id: data.id ?? '',\n      segmentIds: data.segmentIds,\n      experimentationConfiguration: data.experimentationConfiguration,\n      links: data.links,\n      name: data.name ?? undefined,\n      source: video?.source ?? '',\n      title: video?.name ?? '',\n      url: video?.url ?? '',\n    };\n  },\n\n  function BrandVideo({ items = [], componentParams, mappedPage: { brandCode } }) {\n    const data = items[0];\n\n    if (!data) {\n      return null;\n    }\n\n    return (\n      <BrandComponentThemeInline\n        componentClassName=\"video\"\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <div className=\"container py-8 brand-wa:py-16 xl:py-12 brand-wa:xl:py-20\">\n          <YouTubeVideo\n            name={data.name}\n            source={data.source}\n            title={data.title}\n            url={data.url}\n            wrapperClassName=\"lg:max-h-[90vh]\"\n            id={`yt${data.id}`}\n            isAutoPlay={false}\n            isAutoLoop={false}\n          />\n        </div>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","type GetAspectRatioUrlParams = {\n  /** Aspect ratio based URL from CMS */\n  src?: string | null;\n  /** Carousel container width */\n  width: number;\n};\n\nconst BREAK_POINTS = Object.freeze({\n  small: 640,\n  medium: 768,\n  large: 1024,\n  extraLarge: 1280,\n  twoExtraLarge: 1440,\n});\n\nexport type BreakPoints = keyof typeof BREAK_POINTS;\n\n/**\n * Returns a set of aspect ratio based URLs (with 2x and 3x options) bucketed by breakpoints\n * @param src Aspect ratio based URL from CMS\n * @param width desired image width\n * @returns imgUrl, twoXimgUrl, threeXImgUrl\n */\nexport const getAspectRatioUrl = ({ src, width }: GetAspectRatioUrlParams) => {\n  if (!src) return { imgUrl: null, twoXimgUrl: null, threeXImgUrl: null };\n\n  const srcUrl = new URLSearchParams(src);\n\n  const cw = srcUrl.has('cw') ? parseInt(srcUrl.get('cw') as string) : null;\n  const ch = srcUrl.has('ch') ? parseInt(srcUrl.get('ch') as string) : null;\n\n  // If a crop width or height is not present in the URL, return null as we cant do the math to return the appopriate img src. Contact the CMS team in case we see broken assets\n  if (!cw || !ch) return { imgUrl: null, twoXimgUrl: null, threeXImgUrl: null };\n\n  const aspectRatioVariants = Object.entries(BREAK_POINTS).reduce(\n    (accum, [breakPointName, breakPointWidth]) => {\n      const imgUrl = `${src}&rw=${breakPointWidth}&rh=${Math.round((breakPointWidth * ch) / cw)}`;\n\n      const twoXimgUrl = `${src}&rw=${breakPointWidth * 2}&rh=${\n        Math.round((breakPointWidth * ch) / cw) * 2\n      }`;\n\n      const threeXImgUrl = `${src}&rw=${breakPointWidth * 3}&rh=${\n        Math.round((breakPointWidth * ch) / cw) * 3\n      }`;\n\n      return { ...accum, [breakPointName]: { imgUrl, twoXimgUrl, threeXImgUrl } };\n    },\n    {} as Record<BreakPoints, { imgUrl: string; twoXimgUrl: string; threeXImgUrl: string }>\n  );\n\n  switch (true) {\n    case width <= BREAK_POINTS.small:\n      return aspectRatioVariants.small;\n\n    case width > BREAK_POINTS.small && width <= BREAK_POINTS.medium:\n      return aspectRatioVariants.medium;\n\n    case width > BREAK_POINTS.medium && width <= BREAK_POINTS.large:\n      return aspectRatioVariants.large;\n\n    case width > BREAK_POINTS.large && width <= BREAK_POINTS.extraLarge:\n      return aspectRatioVariants.extraLarge;\n\n    default:\n      return aspectRatioVariants.twoExtraLarge;\n  }\n};\n","export * from './lib/get-aspect-ratio-url';\n","import { ANALYTICS_NO_VALUE, ImageType, ImageFunction, ImageClickID } from '@dx-ui/config-metrics';\nimport type { CollageMetrics } from '../types/collage-analytics';\n\nexport const PRIMARY_CAPTION_POSITION = 1;\nexport const SECONDARY_CAPTION_POSITION = 2;\nexport const COLLAGE_ANALYTICS_COUNT = 2; // Number of images in the collage\n\ntype GenerateCollageMetricsParams = {\n  headline?: string;\n  itemTitle?: string;\n  position: number;\n};\n\nexport const generateCollageMetrics = ({\n  headline,\n  itemTitle,\n  position = 0,\n}: GenerateCollageMetricsParams): CollageMetrics => {\n  const CollageMetrics: CollageMetrics = {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        headline: headline || ANALYTICS_NO_VALUE,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        position,\n        count: COLLAGE_ANALYTICS_COUNT,\n        type: ImageType.Collage,\n        function: ImageFunction.Link,\n      },\n    },\n  };\n\n  return CollageMetrics;\n};\n","import cx from 'classnames';\nimport Image from 'next/image';\n\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  clearImageAnalyticsData,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport type { OmittedImageProps, PropertyThemeOptions } from './collage';\nimport type { Variant } from '@dx-ui/osc-brand-buttons';\nimport { generateCollageMetrics } from './utils/collage-analytics';\n\nexport type CollageContentProps = {\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /**\n   * To override default variant\n   */\n  brandLinkVariant?: Variant;\n  /**\n   * Text rendered in headline, approx 20 characters\n   */\n  headline?: string;\n  /**\n   * By default the collage is not animated\n   */\n  isAnimated?: boolean;\n  isInView?: boolean;\n  isDark?: boolean;\n  /**\n   * Controls the layout direction\n   */\n  isFlipped?: boolean;\n  isLight?: boolean;\n  /**\n   * JSON that configures how the cta is rendered, label - approx 20 characters\n   */\n  link?: {\n    url?: string;\n    label?: string;\n    adaDescription?: string;\n    isNewWindow?: boolean;\n    experimentationConfiguration?: CmsExperimentationConfiguration;\n  };\n  /**\n   * Logo above text content\n   */\n  logo?: OmittedImageProps;\n  /**\n   * Text rendered in copy paragraph, approx 300 characters\n   */\n  longDescription?: string;\n  /**\n   * Text rendered in copy paragraph\n   */\n  shortDescription?: string;\n  /**\n   * Applies property theming\n   */\n  propertyTheme?: PropertyThemeOptions;\n};\n\nexport const CollageContent = ({\n  isFlipped,\n  isDark,\n  isLight,\n  isInView,\n  isAnimated,\n  logo,\n  headline,\n  longDescription,\n  brandComponentTheme,\n  brandLinkVariant,\n  shortDescription,\n  link,\n  propertyTheme,\n}: CollageContentProps) => {\n  return (\n    <div\n      data-testid=\"testBoxBgColor\"\n      className={cx(\n        'flex flex-col p-4 md:p-8 lg:min-w-[400px] xl:py-24',\n        isFlipped ? 'lg:pe-12 lg:ps-28 xl:pe-20 xl:ps-44' : 'lg:pe-28 lg:ps-12 xl:pe-32 xl:ps-24',\n        {\n          'bg-bg': !isDark && !isLight,\n          'brand-ol:bg-primary': isDark,\n          'brand-ol:bg-bg-light': isLight,\n        },\n        propertyTheme?.base\n      )}\n    >\n      {logo ? (\n        <div className=\"relative flex aspect-[3/2] max-h-40\">\n          <Image\n            className={cx('object-contain', {\n              'opacity-100': isInView && isAnimated,\n              'duration-1000 ease-in-out transition-all motion-reduce:transition-none opacity-0 motion-reduce:opacity-100':\n                isAnimated,\n            })}\n            data-testid=\"collageLogo\"\n            fill\n            src={logo.imageUrl}\n            alt={logo.altText}\n          />\n        </div>\n      ) : null}\n\n      {headline ? (\n        <HeadingLevel\n          headingLevelFallback={2}\n          className={cx(\n            'heading-2xl lg:heading-4xl start-10 my-2 motion-reduce:translate-y-2 lg:mb-2',\n            {\n              'delay-75 opacity-100 translate-y-2': isInView && isAnimated,\n              'translate-y-4': !isInView && isAnimated,\n              'duration-1000 ease-in-out transition-all motion-reduce:transition-none opacity-0 motion-reduce:opacity-100':\n                isAnimated,\n              '!text-text-inverse': isDark,\n              'brand-ht:!text-text-inverse': isLight,\n            }\n          )}\n        >\n          {headline}\n        </HeadingLevel>\n      ) : null}\n\n      {longDescription ? (\n        <BrandTextBody\n          className={cx('my-2 motion-reduce:translate-y-0', {\n            'delay-200 translate-y-0 opacity-100': isInView && isAnimated,\n            'translate-y-4': !isInView && isAnimated,\n            'duration-1000 ease-in-out transition-all motion-reduce:transition-none opacity-0 motion-reduce:opacity-100':\n              isAnimated,\n            'text-text-inverse': isDark,\n            'brand-ht:!text-text-inverse': isLight,\n          })}\n          brandComponentTheme={brandComponentTheme}\n        >\n          {longDescription}\n        </BrandTextBody>\n      ) : null}\n\n      {shortDescription ? (\n        <BrandTextBody\n          className={cx('my-2 text-base motion-reduce:translate-y-0', {\n            '!text-base': propertyTheme,\n            'delay-300 translate-y-0 opacity-100': isInView && isAnimated,\n            'translate-y-4': !isInView && isAnimated,\n            'duration-1000 ease-in-out transition-all motion-reduce:transition-none opacity-0 motion-reduce:opacity-100':\n              isAnimated,\n            'text-text-inverse': isDark,\n            'brand-ht:!text-text-inverse': isLight,\n          })}\n          brandComponentTheme={brandComponentTheme}\n        >\n          {shortDescription}\n        </BrandTextBody>\n      ) : null}\n\n      {link?.label && link?.url ? (\n        <div\n          className={cx({\n            'delay-500 translate-y-0 opacity-100': isInView && isAnimated,\n            'translate-y-4': !isInView && isAnimated,\n            'duration-1000 ease-in-out transition-all motion-reduce:transition-none opacity-0 motion-reduce:opacity-100':\n              isAnimated,\n          })}\n        >\n          <BrandLink\n            data-testid=\"collageCtaButton\"\n            url={link.url}\n            label={link.label}\n            isNewWindow={link.isNewWindow}\n            showNewWindowIcon={link.isNewWindow}\n            brandComponentTheme={brandComponentTheme}\n            data-conductrics-goal={link.experimentationConfiguration?.goal}\n            data-conductrics-value={link.experimentationConfiguration?.value}\n            variant={brandLinkVariant}\n            onClick={() => clearImageAnalyticsData()}\n            metricsOnClick={() =>\n              trackEvent(\n                ANALYTICS_GLOBAL_CLICK_EVENT,\n                generateCollageMetrics({\n                  headline,\n                  itemTitle: link?.label,\n                  position: 1,\n                })\n              )\n            }\n          />\n        </div>\n      ) : null}\n    </div>\n  );\n};\n","import Image from 'next/image';\nimport cx from 'classnames';\n\nimport { getAspectRatioUrl } from '@dx-ui/utilities-images';\nimport { Caption } from '@dx-ui/osc-caption';\nimport { GetHeightForWidthAndAspectRatio } from '@dx-ui/osc-responsive-image';\n\nimport type { CaptionProps } from '@dx-ui/osc-caption';\n\ntype CollageDesktopImageProps = {\n  altText: string;\n  aspectRatio: '1:1' | '16:9';\n  imageUrl: string;\n  width: number;\n  captionData?: CaptionProps;\n  className?: string;\n  headline?: string;\n  onClick?: () => void;\n};\n\nexport const CollageDesktopImage = ({\n  altText,\n  aspectRatio = '1:1',\n  captionData,\n  className,\n  imageUrl,\n  onClick,\n  width,\n}: CollageDesktopImageProps) => {\n  if (!imageUrl) return null;\n\n  const imageWithRatioUrl = getAspectRatioUrl({ src: imageUrl, width }).twoXimgUrl || '';\n  const isPrimaryImageRatio = aspectRatio === '1:1';\n\n  return (\n    <figure className={className}>\n      <Image\n        alt={altText}\n        src={imageWithRatioUrl}\n        width={width}\n        className={cx('object-cover', isPrimaryImageRatio ? 'aspect-square' : 'aspect-video')}\n        height={GetHeightForWidthAndAspectRatio(width, aspectRatio)}\n      />\n      {captionData ? <Caption {...captionData} metricsOnClick={onClick} /> : null}\n    </figure>\n  );\n};\n","import cx from 'classnames';\nimport { Parallax } from 'react-scroll-parallax';\nimport type { TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { useWindowSize, useIntersectionObserver } from 'usehooks-ts';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { type CarouselImages, CarouselSingle } from '@dx-ui/osc-carousel';\nimport { useCallback, useRef } from 'react';\nimport { getAspectRatioUrl } from '@dx-ui/utilities-images';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { CollageContent, type CollageContentProps } from './collage-content';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { CollageDesktopImage } from './collage-desktop-image';\nimport {\n  generateCollageMetrics,\n  PRIMARY_CAPTION_POSITION,\n  SECONDARY_CAPTION_POSITION,\n} from './utils/collage-analytics';\nexport type OmittedImageProps = Omit<TResponsiveImage, 'aspectRatio' | 'width'>;\n\nexport type PropertyThemeOptions = {\n  base: string;\n  accent?: {\n    border?: boolean;\n    heading?: boolean;\n    hover?: boolean;\n    icon?: boolean;\n  };\n  additionalThemeOptions?: Record<string, unknown>;\n  childTheme?: {\n    base: string;\n  } & Omit<PropertyThemeOptions, 'childTheme'>;\n};\n\n/**\n * Collage Props\n *\n * CollageProps extends the CollageContentProps, which is where the majority of the\n * props for this component are defined.\n */\nexport type CollageProps = Omit<CollageContentProps, 'isInView' | 'isDark' | 'isLight'> & {\n  /**\n   * JSON that configures how the images are rendered\n   */\n  primaryImage: OmittedImageProps;\n  primaryCaptionData?: CaptionProps;\n  secondaryImage: OmittedImageProps;\n  secondaryCaptionData?: CaptionProps;\n  speed?: number;\n  /**\n   * CMS document editor button\n   */\n  cmsDocumentControl?: React.ReactNode;\n  /**\n   * Translation CSS classes to add to each collage item\n   */\n  cmsTranslationClasses?: string;\n  /**\n   * Primary and secondary images used in carousel for mobile view.\n   */\n  carouselImages: CarouselImages[];\n  /**\n   * Image carousel styling for tailored properties.\n   */\n  showAlternateControls?: boolean;\n  /**\n   * Applies styling to carousel for tailored properties\n   */\n  isTailored?: boolean;\n  /**\n   * Applies property theming\n   */\n  propertyTheme?: PropertyThemeOptions;\n};\n\n/**\n * The collage component is a collage of two images with additional content. There is a main image with a smaller image offset to the lower left or right corner\n * and content that can be flipped from left to right of the main image. On mobile the collage appears as a carousel with two images (primary and secondary) with additional content above it.\n */\nexport const Collage: React.FC<CollageProps> = ({\n  brandComponentTheme,\n  brandLinkVariant,\n  logo,\n  headline,\n  shortDescription,\n  longDescription,\n  link,\n  primaryImage,\n  primaryCaptionData,\n  secondaryImage,\n  secondaryCaptionData,\n  isFlipped = false,\n  isTailored = false,\n  speed = -10,\n  isAnimated = false,\n  cmsDocumentControl,\n  cmsTranslationClasses,\n  carouselImages,\n  showAlternateControls = false,\n  propertyTheme,\n}) => {\n  const { ref: intersectionRef, isIntersecting: inView } = useIntersectionObserver({\n    threshold: [0.15],\n    freezeOnceVisible: true,\n  });\n  const primaryImageRef = useRef<HTMLDivElement>(null);\n  const secondaryImageRef = useRef<HTMLDivElement>(null);\n  const primaryImageRect = useRect({ ref: primaryImageRef });\n  const primaryImageWidth = primaryImageRect?.width ?? 0;\n  const secondaryImageRect = useRect({ ref: secondaryImageRef });\n  const secondaryImageWidth = secondaryImageRect?.width ?? 0;\n\n  const { width: screenWidth = 0 } = useWindowSize();\n\n  const observedWrapper = !getIsReducedMotion() && isAnimated ? intersectionRef : null;\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const optimizedCarouselImages = useCallback(() => {\n    return carouselImages?.map((img) => ({\n      alt: img?.alt || '',\n      url:\n        getAspectRatioUrl({\n          src: img?.url || '',\n          width: screenWidth,\n        })?.twoXimgUrl || '',\n    }));\n  }, [carouselImages, screenWidth]);\n\n  const handlePrimaryCaptionClick = () =>\n    primaryCaptionData\n      ? trackEvent(\n          ANALYTICS_GLOBAL_CLICK_EVENT,\n          generateCollageMetrics({\n            headline,\n            position: PRIMARY_CAPTION_POSITION,\n            itemTitle: primaryCaptionData?.caption,\n          })\n        )\n      : undefined;\n\n  return (\n    <section\n      className={cx(\n        'brand-wa:py-16 brand-wa:xl:py-20 flex items-center py-8 lg:container xl:py-12',\n        cmsTranslationClasses,\n        {\n          'bg-bg-dark brand-ol:bg-bg': isDark,\n          'bg-bg-light brand-ol:bg-bg': isLight,\n          'lg:py-20 lg:overflow-hidden': isAnimated,\n        }\n      )}\n      data-testid=\"collageContainer\"\n    >\n      {isFlipped ? (\n        <div className=\"relative hidden grow lg:-me-20 lg:block lg:w-5/12\" ref={primaryImageRef}>\n          <Parallax speed={speed} disabled={!isAnimated}>\n            <CollageDesktopImage\n              altText={primaryImage.altText}\n              aspectRatio=\"1:1\"\n              captionData={primaryCaptionData}\n              imageUrl={primaryImage.imageUrl}\n              onClick={handlePrimaryCaptionClick}\n              width={primaryImageWidth}\n            />\n          </Parallax>\n        </div>\n      ) : null}\n      <div className={cx('flex flex-col items-end lg:w-6/12 ', { 'lg:-me-20': !isFlipped })}>\n        <div\n          ref={observedWrapper}\n          className={cx('grow px-8 pb-8 lg:p-0', isFlipped ? 'lg:me-10' : 'lg:ms-10')}\n          data-testid=\"content-container\"\n        >\n          <CollageContent\n            brandComponentTheme={brandComponentTheme}\n            brandLinkVariant={brandLinkVariant}\n            headline={headline}\n            isInView={inView}\n            isAnimated={isAnimated}\n            isDark={isDark}\n            isFlipped={isFlipped}\n            isLight={isLight}\n            link={link}\n            logo={logo}\n            longDescription={longDescription}\n            shortDescription={shortDescription}\n            propertyTheme={propertyTheme}\n          />\n        </div>\n        <div\n          className={cx(\n            'relative z-20 hidden w-full border-8 shadow-xl lg:block',\n            propertyTheme?.accent?.border ? 'accent-border' : 'border-bg'\n          )}\n          ref={secondaryImageRef}\n        >\n          <CollageDesktopImage\n            altText={secondaryImage.altText}\n            aspectRatio=\"16:9\"\n            captionData={secondaryCaptionData}\n            imageUrl={secondaryImage.imageUrl}\n            onClick={() =>\n              secondaryCaptionData\n                ? trackEvent(\n                    ANALYTICS_GLOBAL_CLICK_EVENT,\n                    generateCollageMetrics({\n                      headline,\n                      position: SECONDARY_CAPTION_POSITION,\n                      itemTitle: secondaryCaptionData?.caption,\n                    })\n                  )\n                : undefined\n            }\n            width={secondaryImageWidth}\n          />\n        </div>\n        <div className=\"w-full lg:hidden\">\n          <CarouselSingle\n            images={optimizedCarouselImages()}\n            showAlternateControls={showAlternateControls}\n            isTailored={isTailored}\n          />\n        </div>\n      </div>\n      {!isFlipped ? (\n        <div className=\"hidden grow lg:block lg:w-5/12\" ref={primaryImageRef}>\n          <Parallax speed={speed} disabled={!isAnimated}>\n            <CollageDesktopImage\n              altText={primaryImage.altText}\n              aspectRatio=\"1:1\"\n              captionData={primaryCaptionData}\n              imageUrl={primaryImage.imageUrl}\n              onClick={handlePrimaryCaptionClick}\n              width={primaryImageWidth}\n            />\n          </Parallax>\n        </div>\n      ) : null}\n      {cmsDocumentControl}\n    </section>\n  );\n};\n\nexport default Collage;\n","export * from './collage';\n","export * from './lib';\n","import {\n  type AssetVariants,\n  type StructuredAsset,\n  createCpmComponentDefinition,\n  useCreateManageContentButton,\n  selectFirstAssetWithAspectRatio,\n  selectLastAssetWithAspectRatio,\n  CpmMappingError,\n} from '@dx-ui/cpm-sdk';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { Collage } from '@dx-ui/osc-collage';\nimport type { CarouselImages } from '@dx-ui/osc-carousel';\n\nexport function getIsFlipped(\n  index: number,\n  imageDisplay: 'left' | 'right' | 'alternate' | 'round' | 'none'\n) {\n  switch (imageDisplay) {\n    case 'left':\n      return true;\n\n    case 'right':\n      return false;\n\n    case 'alternate':\n    default:\n      return Boolean(index % 2);\n  }\n}\n\nexport default createCpmComponentDefinition(\n  'Collage',\n\n  function mapData({ data, componentParams: { imageDisplay, animation }, index }) {\n    function constructImage(asset: StructuredAsset | null, aspectRatio: keyof AssetVariants) {\n      if (asset === null) {\n        return null;\n      }\n\n      return {\n        size: 'md',\n        __typename: 'BrandImageVariant',\n        _id: asset?.aspectRatios[aspectRatio]?.id ?? '',\n        url: asset?.aspectRatios[aspectRatio]?.url ?? '',\n        imageUrl: asset?.aspectRatios[aspectRatio]?.url ?? '',\n        altText: asset?.altText ?? '',\n      };\n    }\n\n    const primaryImage = constructImage(\n      selectLastAssetWithAspectRatio('1x1', data.cpmAssets),\n      '1x1'\n    );\n\n    const secondaryImage = constructImage(\n      selectFirstAssetWithAspectRatio('16x9', data.cpmAssets),\n      '16x9'\n    );\n\n    const primaryImageThreeByTwo = constructImage(\n      selectLastAssetWithAspectRatio('3x2', data.cpmAssets),\n      '3x2'\n    );\n\n    const secondaryImageThreeByTwo = constructImage(\n      selectFirstAssetWithAspectRatio('3x2', data.cpmAssets),\n      '3x2'\n    );\n\n    const primaryCaptionAsset = data.cpmAssets[1];\n\n    const secondaryCaptionAsset = data.cpmAssets[0];\n\n    const carouselImages = [\n      { ...primaryImageThreeByTwo, ...primaryCaptionAsset },\n      { ...secondaryImageThreeByTwo, ...secondaryCaptionAsset },\n    ].map((image) => {\n      return {\n        alt: image?.altText,\n        url: image?.imageUrl,\n        captionData: {\n          ...(image.caption && {\n            caption: image.caption,\n          }),\n          ...(image.captionLink && {\n            captionLink: image?.captionLink,\n          }),\n        },\n      };\n    }) as CarouselImages[];\n\n    if (!(primaryImage && secondaryImage)) {\n      throw new CpmMappingError(\n        `The \"${\n          data.displayName || data.name\n        }\" document is missing two images with the Collage image variant`\n      );\n    }\n\n    if (!primaryImage) {\n      throw new CpmMappingError(\n        `The \"${\n          data.displayName || data.name\n        }\" document is missing a Collage image variant for the desktop screensize image`\n      );\n    }\n\n    if (!primaryImageThreeByTwo) {\n      throw new CpmMappingError(\n        `The \"${\n          data.displayName || data.name\n        }\" document is missing a ThreeByTwo image variant for the mobile screensize image`\n      );\n    }\n\n    const isFlipped = getIsFlipped(index, imageDisplay);\n\n    return {\n      id: data.id,\n      shortDescription: data.shortDescription,\n      headline: data.headline,\n      primaryImage,\n      secondaryImage,\n      longDescription: data.longDescription ?? '',\n      logo: undefined,\n      isFlipped,\n      link:\n        data.link?.url && data.link?.label ? { ...data.link, text: data.link.label } : undefined,\n      ...(data.logoUrl\n        ? {\n            logo: {\n              altText: '',\n              imageUrl: data.logoUrl ?? '',\n            },\n          }\n        : null),\n\n      primaryCaptionData: primaryCaptionAsset\n        ? {\n            captionLink: primaryCaptionAsset?.captionLink,\n            caption: primaryCaptionAsset?.caption,\n          }\n        : {},\n      secondaryCaptionData: secondaryCaptionAsset\n        ? {\n            captionLink: secondaryCaptionAsset?.captionLink,\n            caption: secondaryCaptionAsset?.caption,\n          }\n        : {},\n      isAnimated: animation,\n      links: data.links,\n      carouselImages,\n    };\n  },\n\n  function CollageCpm({ items = [], componentParams, mappedPage: { brandCode } }) {\n    const createManageContentButton = useCreateManageContentButton();\n\n    if (items.length === 0) {\n      return null;\n    }\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    return (\n      <BrandComponentThemeInline\n        componentClassName=\"collage\"\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        {itemsWithManageContentButton.map((item) => {\n          return (\n            <Collage\n              key={item.id}\n              {...item}\n              isAnimated={componentParams.animation || brandCode === 'GU'}\n              brandComponentTheme={componentParams.theme}\n            />\n          );\n        })}\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { Link } from '@dx-ui/osc-link';\nimport type { Link as LinkType } from '@dx-ui/osc-link';\nimport { Icon } from '@dx-ui/osc-icon';\nimport type { IconNames } from '@dx-ui/osc-icon';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport Image from 'next/image';\nimport cx from 'classnames';\n\ntype EditorialSnippetType = {\n  heading: string;\n  longDescription: string;\n  shortDescription?: string;\n  socialMediaLink?: LinkType;\n  socialMediaIcon?: (typeof IconNames)[number];\n  ctaLink?: LinkType & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  image?: {\n    url?: string;\n    altText?: string;\n  };\n  /** Image is round by default, CMS can select for square image */\n  isSquareImage?: boolean;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport const EditorialSnippet = ({\n  heading,\n  longDescription,\n  shortDescription,\n  socialMediaLink,\n  socialMediaIcon,\n  ctaLink,\n  image,\n  isSquareImage,\n  brandComponentTheme,\n}: EditorialSnippetType) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div className=\"brand-wa:py-16 brand-wa:xl:py-20 container relative py-8 xl:py-12\">\n      <div\n        className={cx('editorial-snippet-bg lg:px-16', {\n          'editorial-snippet-bg-dark': isDark,\n          'editorial-snippet-bg-light': isLight,\n        })}\n        data-testid=\"testContainerBackgroundCss\"\n      >\n        <div\n          className={cx('relative flex flex-col justify-center sm:self-center', {\n            'sm:ps-52': image?.url,\n          })}\n        >\n          <hgroup>\n            <h2\n              className={cx('heading-xl sm:heading-2xl lg:heading-3xl flex-col', {\n                '!text-text-inverse': isDark,\n                'editorial-snippet-headline-light': isLight,\n              })}\n            >\n              {heading}\n            </h2>\n            {shortDescription ? (\n              <BrandTextBody\n                className={cx(\n                  'editorial-snippet-short-description lg:editorial-snippet-short-description-lg',\n                  {\n                    'editorial-snippet-short-description-dark': isDark,\n                    'editorial-snippet-short-description-light': isLight,\n                  }\n                )}\n                brandComponentTheme={brandComponentTheme}\n              >\n                {shortDescription}\n              </BrandTextBody>\n            ) : null}\n          </hgroup>\n\n          <BrandTextBody\n            className={cx('text-text text-base font-normal lg:!text-lg', {\n              'text-text-inverse': isDark,\n              'editorial-snippet-text-body-light': isLight,\n            })}\n            brandComponentTheme={brandComponentTheme}\n          >\n            {longDescription}\n          </BrandTextBody>\n\n          {image?.altText && image?.url ? (\n            <div className=\"relative order-first mb-6 aspect-square h-44 max-h-full max-w-44 sm:absolute sm:start-0 sm:top-0 sm:mb-0\">\n              <Image\n                alt={image?.altText}\n                src={image?.url}\n                className={cx('rounded-full object-cover', {\n                  'rounded-none image-corner-radius': isSquareImage === true,\n                })}\n                fill\n                unoptimized\n              />\n            </div>\n          ) : null}\n\n          <div>\n            {socialMediaLink?.url ? (\n              <Link\n                isNewWindow={true}\n                url={socialMediaLink?.url}\n                showNewWindowIcon={true}\n                underline={false}\n                className={cx(\n                  'editorial-snippet-link inline-block items-baseline pb-4 pe-7 sm:pb-0',\n                  {\n                    'editorial-snippet-link-dark': isDark,\n                    'editorial-snippet-link-light': isLight,\n                  }\n                )}\n              >\n                {socialMediaIcon ? (\n                  <div className=\"inline-block pe-1.5\">\n                    <Icon name={socialMediaIcon} size=\"lg\" className=\"-mb-2 me-1\" />\n                  </div>\n                ) : null}\n\n                <div className=\"inline pe-1 align-baseline underline underline-offset-4\">\n                  {socialMediaLink?.label}\n                </div>\n              </Link>\n            ) : null}\n\n            {ctaLink?.url ? (\n              <Link\n                isNewWindow={ctaLink?.isNewWindow || false}\n                url={ctaLink?.url}\n                showNewWindowIcon={ctaLink?.isNewWindow || false}\n                underline={false}\n                className={cx('editorial-snippet-link items-baseline', {\n                  'editorial-snippet-link-dark': isDark,\n                  'editorial-snippet-link-light': isLight,\n                })}\n                data-conductrics-goal={ctaLink.experimentationConfiguration?.goal}\n                data-conductrics-value={ctaLink.experimentationConfiguration?.value}\n              >\n                <div className=\"inline pe-1 underline underline-offset-4\">{ctaLink?.label}</div>\n              </Link>\n            ) : null}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default EditorialSnippet;\n","export * from './editorial-snippet';\n","export * from './lib';\n","import {\n  type ImageClickIDType,\n  ANALYTICS_NO_VALUE,\n  ImageType,\n  ImageFunction,\n  ImageClickID,\n} from '@dx-ui/config-metrics';\nimport type { CardCarouselMetrics } from '../types/card-carousel-analytics';\n\ntype GenerateCardCarouselMetricsParams = {\n  headline?: string;\n  position: number;\n  count: number;\n  itemTitle?: string;\n  clickID: ImageClickIDType;\n  imageFunction?: (typeof ImageFunction)['Link'];\n};\n\nexport const generateCardCarouselMetrics = ({\n  headline = ANALYTICS_NO_VALUE,\n  position = 0,\n  count,\n  itemTitle = ANALYTICS_NO_VALUE,\n  clickID = ImageClickID.Scroll,\n  imageFunction,\n}: GenerateCardCarouselMetricsParams): CardCarouselMetrics => {\n  const cardCarouselMetrics: CardCarouselMetrics = {\n    click: {\n      clickID, // This should be scroll for button clicks & img on img taps\n    },\n    osc: {\n      image: {\n        headline,\n        count,\n        position,\n        itemTitle,\n        type: ImageType.Carousel,\n      },\n    },\n  };\n\n  if (imageFunction === ImageFunction.Link) {\n    cardCarouselMetrics.osc.image.function = ImageFunction.Link;\n  }\n\n  return cardCarouselMetrics;\n};\n","import { useRef, type ReactNode } from 'react';\nimport cx from 'classnames';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport type { AspectRatio, TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { Link } from '@dx-ui/osc-link';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ANALYTICS_NO_VALUE,\n  ImageClickID,\n  ImageFunction,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateCardCarouselMetrics } from './utils/card-carousel-analytics';\n\nexport type TCardCarouselItem = {\n  /** Card Carousel item id */\n  id: string;\n  /** Image for Card Carousel Item */\n  imageUrl: string;\n  captionData?: TResponsiveImage['captionData'];\n  /** Alt Text for Card Carousel Item Image */\n  imageAltTxt: string;\n  /** Headline for Card Carousel Item */\n  headline?: string;\n  /** Can be used as additional headline copy or a subheadline */\n  shortDescription?: string;\n  /** Content */\n  longDescription?: string;\n  /** Link/CTA */\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  /** List of Audience Ids */\n  segmentIds: string[];\n  /** CMS document editor control **/\n  cmsDocumentControl?: ReactNode;\n  /* Translation CSS classes to add to each item */\n  cmsTranslationClasses?: string;\n  /** Adds ability to select color themes */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** The aspect ratio for the grid item images */\n  imageAspectRatio: AspectRatio;\n  /** Used to determine different styles for within editorial component */\n  isEditorialComponent?: boolean;\n  /** CurrentCard Index + 1 */\n  currentCard?: number;\n  /** Total number of cards in Card Carousel */\n  totalCards?: number;\n  /** Adds a second, smaller border inside the other border */\n  isInsideBorder?: boolean;\n  /** Sets the tab index for the cards, A11y helper */\n  tabIndex?: number;\n  mainHeadline?: string;\n};\n\nexport const DocsTCardCarouselItem: React.FC<React.PropsWithChildren<TCardCarouselItem>> = () =>\n  null;\n\nexport const CardCarouselItem: React.FC<TCardCarouselItem> = (item) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n\n  const {\n    id,\n    imageUrl,\n    captionData,\n    imageAltTxt,\n    imageAspectRatio,\n    headline,\n    shortDescription,\n    longDescription,\n    link,\n    brandComponentTheme,\n    isEditorialComponent,\n    isInsideBorder,\n    currentCard,\n    totalCards,\n    tabIndex,\n    mainHeadline,\n  } = item;\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const handleTrackCardCarouselItemMetrics = () => {\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateCardCarouselMetrics({\n        itemTitle: headline ?? ANALYTICS_NO_VALUE,\n        headline: mainHeadline ?? ANALYTICS_NO_VALUE,\n        position: currentCard ?? 0,\n        count: totalCards ?? 0,\n        clickID: ImageClickID.Img,\n        imageFunction: ImageFunction.Link,\n      })\n    );\n  };\n\n  return item ? (\n    <div\n      className={cx(\n        'relative flex h-full flex-col justify-between bg-transparent',\n        item.cmsTranslationClasses,\n        'card-carousel-item-container',\n        {\n          'card-carousel-item-container-dark': isDark,\n          'p-2 sm:p-4 border-brand border-solid border': isInsideBorder,\n        }\n      )}\n      data-testid={`card-carousel-item-${id}`}\n      key={id}\n    >\n      <div className=\"flex flex-col\">\n        {(headline || shortDescription) && isEditorialComponent ? (\n          <hgroup>\n            <HeadingLevel\n              headingLevelFallback={4}\n              className={cx('heading-2xl', {\n                '!text-text-inverse': isDark,\n                'card-carousel-item-headline-text-light': isLight,\n                'pb-2': !shortDescription,\n              })}\n            >\n              {headline}\n            </HeadingLevel>\n            {shortDescription ? (\n              <BrandTextBody\n                className={cx('relative pt-3 !text-base font-bold', {\n                  '!text-text-inverse': isDark,\n                  'card-carousel-item-description-text-light': isLight,\n                })}\n                brandComponentTheme={brandComponentTheme}\n              >\n                {shortDescription}\n              </BrandTextBody>\n            ) : null}\n          </hgroup>\n        ) : null}\n\n        {(headline || shortDescription) && !isEditorialComponent ? (\n          <hgroup>\n            <HeadingLevel\n              headingLevelFallback={3}\n              className={cx('heading-2xl sm:brand-wa:heading-3xl', {\n                '!text-text-inverse': isDark,\n                'card-carousel-item-headline-text-light': isLight,\n                'pb-2': !shortDescription,\n              })}\n            >\n              {headline}\n            </HeadingLevel>\n            {shortDescription ? (\n              <BrandTextBody\n                className={cx('relative pt-3 !text-base font-bold', {\n                  '!text-text-inverse': isDark,\n                  'card-carousel-item-description-text-light': isLight,\n                })}\n                brandComponentTheme={brandComponentTheme}\n              >\n                {shortDescription}\n              </BrandTextBody>\n            ) : null}\n          </hgroup>\n        ) : null}\n\n        <div ref={ref} className=\"relative order-first mb-3\">\n          <ResponsiveImage\n            id={`card-carousel-item-img-${id}`}\n            aspectRatio={imageAspectRatio}\n            imageUrl={imageUrl}\n            altText={imageAltTxt}\n            width={rect?.width ?? 0}\n            captionData={captionData}\n            className=\"image-corner-radius\"\n            onClick={handleTrackCardCarouselItemMetrics}\n          />\n          <p\n            aria-hidden\n            className=\"bg-bg-inverse text-text-inverse absolute bottom-0 right-0 select-none overflow-hidden px-2 py-1 text-sm opacity-80 sm:text-base rtl:left-0 rtl:right-auto\"\n          >\n            {currentCard} / {totalCards}\n          </p>\n        </div>\n\n        {longDescription ? (\n          <BrandTextBody\n            className={cx('relative z-10 mb-2 !text-lg', {\n              '!text-text-inverse': isDark,\n              'card-carousel-item-description-text-light': isLight,\n            })}\n            brandComponentTheme={brandComponentTheme}\n          >\n            {longDescription}\n          </BrandTextBody>\n        ) : null}\n      </div>\n      <div>\n        {link ? (\n          <Link\n            className=\"text-base\"\n            isNewWindow={link.isNewWindow}\n            url={link.url}\n            showNewWindowIcon={true}\n            underline={true}\n            data-testid=\"testLinkTheme\"\n            tabIndex={tabIndex}\n            anchorClassName={cx(\n              \"focus:text-primary-alt hover:text-primary-alt after:absolute after:inset-0 after:z-0 after:content-[''] hover:underline hover:decoration-[3px] focus:underline focus:decoration-[3px] focus:!shadow-none\",\n              {\n                'text-primary': !isDark && !isLight,\n                'text-text-inverse hover:text-text-inverse focus:text-text-inverse hover:decoration-text-inverse focus:decoration-text-inverse':\n                  isDark,\n                'card-carousel-item-link-anchor-light': isLight,\n              }\n            )}\n            data-conductrics-goal={link.experimentationConfiguration?.goal}\n            data-conductrics-value={link.experimentationConfiguration?.value}\n            onClick={handleTrackCardCarouselItemMetrics}\n          >\n            {link.label}\n          </Link>\n        ) : null}\n      </div>\n\n      {item.cmsDocumentControl}\n    </div>\n  ) : null;\n};\n\nexport default CardCarouselItem;\n","import { useState, useRef, useCallback, useId } from 'react';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\n\nimport CardCarouselItem from './card-carousel-item';\nimport type { TCardCarouselItem } from './card-carousel-item';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport Icon from '@dx-ui/osc-icon';\nimport { isRtl as isRtlUtil } from '@dx-ui/utilities-get-language-direction';\nimport { HeadingLevel, HeadingLevelProvider } from '@dx-ui/osc-heading-level';\nimport { generateCardCarouselMetrics } from './utils/card-carousel-analytics';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, ImageClickID, trackEvent } from '@dx-ui/config-metrics';\nimport { useRouter } from 'next/router';\n\nexport type CardCarouselProps = {\n  /** Item list from individual cards */\n  items: TCardCarouselItem[];\n  /** Main headline above Card Carousel */\n  mainHeadline?: string;\n  /** Main subheadline/short description above Card Carousel */\n  mainShortDescription?: string;\n  /** Handles arrow click */\n  onArrowClick?: (index: number) => void;\n  /** Determines brand color theme for component */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** Determines if component is inside editorial component for size restrictions */\n  isEditorialComponent?: boolean;\n  /** Adds an additional border inside main border */\n  isInsideBorder?: boolean;\n};\n\n/**\n * Card Carousel is can be a building block for CPM compatable components or a stand-alone OSC-Component. Creates a film strip style carousel that uses scroll-snap to change cards and adds additional content to your pages.\n * Does **not** continue to cycle through cards, only moves left or right. Click, scroll, or arrow through to see all the cards, it is almost as cool as a Pokemon collection.\n */\nexport const CardCarousel = ({\n  items,\n  mainHeadline,\n  mainShortDescription,\n  brandComponentTheme,\n  isEditorialComponent,\n  isInsideBorder,\n}: CardCarouselProps) => {\n  const [showPreviousArrow, setShowPreviousArrow] = useState(false);\n  const [showNextArrow, setShowNextArrow] = useState(true);\n  const ref = useRef<HTMLDivElement>(null);\n  const { t } = useTranslation('osc-card-carousel');\n  const { locale = 'en' } = useRouter();\n  const isRtl = isRtlUtil(locale);\n  const headerId = useId();\n  const [firstVisibleItemIndex, setFirstVisibleItemIndex] = useState(0);\n\n  const lessThanThreeItems = items.length < 3;\n\n  const sideScroll = (element: HTMLDivElement | null, step: number) => {\n    if (element) element.scrollLeft += step;\n  };\n\n  const handleNextButtonClick = () => {\n    if (ref?.current?.clientWidth) {\n      const scrollValue = isRtl\n        ? -ref?.current?.clientWidth * 0.6\n        : ref?.current?.clientWidth * 0.6;\n      sideScroll(ref.current, scrollValue);\n      trackEvent(\n        ANALYTICS_GLOBAL_CLICK_EVENT,\n        generateCardCarouselMetrics({\n          headline: mainHeadline,\n          count: items?.length ?? 0,\n          clickID: ImageClickID.Scroll,\n          itemTitle: items[firstVisibleItemIndex]?.headline,\n          position: firstVisibleItemIndex + 1,\n        })\n      );\n      if (firstVisibleItemIndex < items.length - 1)\n        setFirstVisibleItemIndex((prevVal) => prevVal + 1);\n    }\n  };\n\n  const handlePreviousButtonClick = () => {\n    if (ref?.current?.clientWidth) {\n      const scrollValue = isRtl\n        ? ref?.current?.clientWidth * 0.6\n        : -ref?.current?.clientWidth * 0.6;\n      sideScroll(ref.current, scrollValue);\n      trackEvent(\n        ANALYTICS_GLOBAL_CLICK_EVENT,\n        generateCardCarouselMetrics({\n          headline: mainHeadline,\n          count: items?.length ?? 0,\n          clickID: ImageClickID.Scroll,\n          itemTitle: items[firstVisibleItemIndex]?.headline,\n          position: firstVisibleItemIndex + 1,\n        })\n      );\n      if (firstVisibleItemIndex > 0) setFirstVisibleItemIndex((prevVal) => prevVal - 1);\n    }\n  };\n\n  const onChange = useCallback((rect: DOMRect | undefined) => {\n    const scrollLeft = ref?.current?.scrollLeft ?? 0;\n    const scrollWidth = ref?.current?.scrollWidth ?? 0;\n    const carouselWidth = rect?.width || 0;\n    const maxScrollwidth = scrollWidth - carouselWidth;\n    if (scrollLeft) {\n      if (maxScrollwidth - scrollLeft < 50 || maxScrollwidth + scrollLeft < 50) {\n        setShowNextArrow(false);\n      } else {\n        setShowNextArrow(true);\n      }\n      if (scrollLeft > 50 || scrollLeft < -50) {\n        setShowPreviousArrow(true);\n      } else if (scrollLeft < 50) {\n        setShowPreviousArrow(false);\n      }\n    }\n  }, []);\n\n  const arrowButtonRect = useRect({ ref, onResize: onChange });\n  const onScrollArrow = useCallback(\n    () => arrowButtonRect && onChange(arrowButtonRect),\n    [onChange, arrowButtonRect]\n  );\n\n  if (!items || !items?.length) {\n    return null;\n  }\n\n  function setCardItemFocus(e: React.KeyboardEvent, activeElement: Element | null | undefined) {\n    let itemToFocus: typeof activeElement = null;\n    const useArrowKeys =\n      activeElement\n        ?.closest('.card-carousel_item')\n        ?.closest('.card-carousel_item')\n        ?.getAttribute('data-use-arrow-keys') === 'true';\n    const cardCarouselItem = activeElement?.closest('.card-carousel_item');\n\n    const goToNextItem = () => {\n      itemToFocus = cardCarouselItem?.nextElementSibling;\n      if (itemToFocus) {\n        e.preventDefault();\n        e.stopPropagation();\n        if (itemToFocus.querySelector('a')) {\n          const listElement = itemToFocus.querySelector('a');\n          activeElement?.setAttribute('tabindex', '-1');\n          listElement?.setAttribute('tabindex', '0');\n          listElement?.focus();\n        } else if (!itemToFocus.querySelector('a')) {\n          const findNextItemToFocus = itemToFocus.nextElementSibling?.querySelector('a');\n          activeElement?.setAttribute('tabindex', '-1');\n          findNextItemToFocus?.setAttribute('tabindex', '0');\n          (findNextItemToFocus as HTMLElement)?.focus();\n        }\n      }\n    };\n\n    const goToPreviousItem = () => {\n      itemToFocus = cardCarouselItem?.previousElementSibling;\n      if (itemToFocus) {\n        e.preventDefault();\n        e.stopPropagation();\n        if (itemToFocus.querySelector('a')) {\n          const listElement = itemToFocus.querySelector('a');\n          activeElement?.setAttribute('tabindex', '-1');\n          listElement?.setAttribute('tabindex', '0');\n          listElement?.focus();\n        } else if (!itemToFocus.querySelector('a')) {\n          const findPreviousItemToFocus = itemToFocus.previousElementSibling?.querySelector('a');\n          activeElement?.setAttribute('tabindex', '-1');\n          findPreviousItemToFocus?.setAttribute('tabindex', '0');\n          (findPreviousItemToFocus as HTMLElement)?.focus();\n        }\n      }\n    };\n\n    if (useArrowKeys) {\n      if (e.key === 'ArrowRight') {\n        if (isRtl) goToPreviousItem();\n        else goToNextItem();\n      } else if (e.key === 'ArrowLeft') {\n        if (isRtl) goToNextItem();\n        else goToPreviousItem();\n      }\n    }\n  }\n\n  const handleKeyPressDown = (e: React.KeyboardEvent) => {\n    const activeElement = ref.current?.ownerDocument.activeElement;\n    setCardItemFocus(e, activeElement);\n  };\n\n  const isLinkPresent = items.some((item) => {\n    return item.link;\n  });\n\n  const findFirstLinkIndex = items.findIndex((item) => item.link);\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      className={cx('card-carousel-container', {\n        'card-carousel-container-light': isLight,\n        'card-carousel-container-dark': isDark,\n        'lg:ps-12': isEditorialComponent && lessThanThreeItems,\n      })}\n      data-testid=\"testCardCarouselTheme\"\n    >\n      <div\n        className={cx('flex flex-col px-[3.4rem]', {\n          'sm:px-[.4rem] md:px-[3.4rem] lg:px-[.4rem]': lessThanThreeItems,\n        })}\n      >\n        {isEditorialComponent ? (\n          <HeadingLevel\n            headingLevelFallback={3}\n            className={cx('card-carousel-main-headline-editorial-text sm:text-lg lg:text-xl', {\n              '!text-text-inverse': isDark,\n              'card-carousel-main-headline-editorial-text-light': isLight,\n              'sr-only': !mainHeadline,\n            })}\n            id={`carousel-heading-${headerId}`}\n          >\n            {mainHeadline || 'Content list'}\n          </HeadingLevel>\n        ) : null}\n\n        {!isEditorialComponent ? (\n          <HeadingLevel\n            headingLevelFallback={2}\n            className={cx(\n              'font-headline card-carousel-main-headline-standalone-text text-4xl sm:text-5xl lg:text-5xl',\n              {\n                '!text-text-inverse': isDark,\n                'card-carousel-main-headline-standalone-text-light': isLight,\n                '!text-2xl sm:!text-2xl lg:!text-2xl text-bold': isEditorialComponent,\n                'sr-only': !mainHeadline,\n              }\n            )}\n            id={`carousel-heading-${headerId}`}\n          >\n            {mainHeadline || 'Content list'}\n          </HeadingLevel>\n        ) : null}\n\n        {mainShortDescription ? (\n          <BrandTextBody\n            className={cx('text-xl sm:!text-xl lg:!text-2xl', {\n              'text-text-inverse': isDark,\n              'card-carousel-short-description-text-light': isLight,\n            })}\n            brandComponentTheme={brandComponentTheme}\n          >\n            {mainShortDescription}\n          </BrandTextBody>\n        ) : null}\n      </div>\n      <div className=\"flex\">\n        <div\n          className={cx('self-center', {\n            invisible: !showPreviousArrow,\n            'sm:hidden md:block lg:hidden': lessThanThreeItems,\n          })}\n        >\n          <button\n            type=\"button\"\n            className={cx('btn btn-primary-text text-text btn-lg me-1 size-11 rtl:-scale-x-100', {\n              'border-bg': isDark,\n              'card-carousel-arrow-button-light': isLight,\n              invisible: !showPreviousArrow,\n            })}\n            onClick={handlePreviousButtonClick}\n            tabIndex={-1}\n          >\n            <Icon\n              name=\"arrowhead-left\"\n              size=\"xl\"\n              className={cx('card-carousel-arrow-button-icon', {\n                'card-carousel-arrow-button-icon-dark': isDark,\n                'card-carousel-arrow-button-icon-light': isLight,\n              })}\n            />\n            <span className=\"sr-only\">{t('previous')}</span>\n          </button>\n        </div>\n\n        <div\n          className={cx(\n            'card-carousel w-full snap-x snap-mandatory overflow-x-scroll scroll-smooth',\n            {\n              'focus:outline outline-[3px] outline-primary outline-offset-2': !isLinkPresent,\n              'outline-text-inverse': isDark,\n              'sm:overflow-x-auto md:overflow-x-scroll lg:overflow-x-auto': lessThanThreeItems,\n            }\n          )}\n          ref={ref}\n          tabIndex={!isLinkPresent ? 0 : undefined}\n          aria-labelledby={`carousel-heading-${headerId}`}\n          onScroll={onScrollArrow}\n        >\n          <ul\n            className={cx('grid-wrapper grid auto-cols-[100%] grid-flow-col sm:auto-cols-[50%]', {\n              'md:auto-cols-[100%] lg:auto-cols-[50%]': isEditorialComponent,\n              'xl:auto-cols-[25%]': !isEditorialComponent,\n            })}\n            data-testid=\"cardCarousel\"\n          >\n            {items?.map((itemProps, index) => (\n              <li\n                className={cx(\n                  'card-carousel_item card-carousel-list-item my-2 shrink-0 snap-center snap-always p-2 sm:snap-start xl:p-5',\n                  {\n                    'xl:!p-2': isEditorialComponent,\n                  }\n                )}\n                key={`carousel-image-${itemProps.id}`}\n                data-testid={`image-carousel-wrap-${index + 1}`}\n                onKeyDown={handleKeyPressDown}\n                data-use-arrow-keys={true}\n              >\n                <div\n                  className={cx(\n                    'card-carousel-list-item-border outline-primary h-full border border-solid p-2 outline-[3px] outline-offset-2 focus-within:outline xl:p-4',\n                    {\n                      'card-carousel-list-item-border-dark card-carousel-list-item-dark outline-text-inverse':\n                        isDark,\n                      'card-carousel-list-item-border-light card-carousel-list-item-light outline-bg':\n                        isLight,\n                      'xl:!p-2': isEditorialComponent,\n                    }\n                  )}\n                >\n                  <HeadingLevelProvider>\n                    <CardCarouselItem\n                      {...itemProps}\n                      currentCard={index + 1}\n                      totalCards={items?.length}\n                      brandComponentTheme={brandComponentTheme}\n                      isEditorialComponent={isEditorialComponent}\n                      isInsideBorder={isInsideBorder}\n                      tabIndex={index === findFirstLinkIndex ? 0 : -1}\n                      mainHeadline={mainHeadline}\n                    />\n                  </HeadingLevelProvider>\n                </div>\n              </li>\n            ))}\n          </ul>\n        </div>\n\n        <div\n          className={cx('self-center', {\n            invisible: !showNextArrow,\n            'sm:hidden md:block lg:hidden': lessThanThreeItems,\n          })}\n        >\n          <button\n            type=\"button\"\n            className={cx('btn btn-primary-text btn-sm size-11 rtl:-scale-x-100', {\n              'border-bg': isDark,\n              'card-carousel-arrow-button-light': isLight,\n            })}\n            onClick={handleNextButtonClick}\n            tabIndex={-1}\n          >\n            <Icon\n              name=\"arrowhead-right\"\n              size=\"xl\"\n              className={cx('card-carousel-arrow-button-icon', {\n                'card-carousel-arrow-button-icon-dark': isDark,\n                'card-carousel-arrow-button-icon-light': isLight,\n              })}\n            />\n            <span className=\"sr-only\">{t('next')}</span>\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default CardCarousel;\n","export * from './lib/card-carousel';\n","import { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport type { TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { useRef } from 'react';\nimport type { CardCarouselProps } from '@dx-ui/osc-card-carousel';\nimport { CardCarousel } from '@dx-ui/osc-card-carousel';\nimport cx from 'classnames';\nimport { CustomMarkdown as Markdown } from '@dx-ui/osc-custom-markdown';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\n\nexport type EditorialCarouselProps = {\n  image: { url: string; alt: string; captionData?: TResponsiveImage['captionData'] };\n  imgWrapperClassName?: string;\n  /**\n   * Can be Pullquote, Stats, Timeline or you can pass your own component\n   */\n  contentBelowImg: React.ReactNode;\n  carousel: CardCarouselProps['items'];\n  headline: string;\n  subHeadline?: string;\n  carouselHeadline?: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\n/** The passed children will be placed to right of the image and above carousel. */\nexport const EditorialCarousel: React.FC<React.PropsWithChildren<EditorialCarouselProps>> = ({\n  image,\n  carousel,\n  contentBelowImg,\n  imgWrapperClassName,\n  headline,\n  carouselHeadline,\n  subHeadline,\n  brandComponentTheme,\n  children,\n}) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div className=\"brand-wa:py-16 brand-wa:xl:py-20 grid grid-cols-1 py-8 md:grid-cols-[40%_60%] md:grid-rows-[auto_1fr_1fr] xl:py-12\">\n      <div className=\"order-none pb-10 pe-6 ps-6 md:order-2 md:pb-0 md:ps-11\">\n        <hgroup className=\"md:ps-[.8rem]\">\n          <HeadingLevel\n            headingLevelFallback={2}\n            className={cx('heading-4xl pt-6 md:pt-14', {\n              '!text-text-inverse': isDark,\n              'brand-ht:!text-text-inverse': isLight,\n            })}\n          >\n            {headline}\n            {subHeadline ? (\n              <span\n                className={cx(\n                  'brand-es:heading-2xl brand-ey:heading-2xl brand-gu:heading-2xl brand-ou:heading-2xl block pt-1 font-serif text-2xl font-normal normal-case',\n                  {\n                    'brand-ey:!text-text-inverse brand-gu:!text-text-inverse brand-ou:!text-text-inverse':\n                      isDark,\n                  }\n                )}\n              >\n                <Markdown>{subHeadline}</Markdown>\n              </span>\n            ) : null}\n          </HeadingLevel>\n        </hgroup>\n        <div className=\"md:ps-[.8rem]\">{children}</div>\n      </div>\n      <div ref={ref} className=\"order-none md:order-1 md:row-span-3\">\n        <ResponsiveImage\n          aspectRatio=\"1:1\"\n          altText={image.alt}\n          imageUrl={image.url}\n          width={rect?.width ?? 0}\n          wrapperClassName={imgWrapperClassName}\n          captionData={image.captionData}\n          className=\"image-corner-radius\"\n        />\n        <div className=\"mt-20\">{contentBelowImg}</div>\n      </div>\n\n      <div className=\"order-3 mt-14 sm:mt-20 md:row-span-2 lg:mt-24\">\n        <CardCarousel\n          items={carousel}\n          isEditorialComponent={true}\n          mainHeadline={carouselHeadline}\n          brandComponentTheme={brandComponentTheme}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default EditorialCarousel;\n","import Markdown from 'markdown-to-jsx';\nimport type { PropsWithChildren } from 'react';\nimport cx from 'classnames';\n\ntype PullquoteProps = {\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport const Pullquote = ({ children, brandComponentTheme }: PropsWithChildren<PullquoteProps>) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  if (typeof children === 'string') {\n    return (\n      <blockquote\n        className={cx(\n          'text-primary brand-ey:font-headline brand-ey:font-bold brand-gu:font-sans brand-wa:text-brand brand-ou:font-headline ms-4 px-6 font-serif text-2xl lg:ms-7',\n          {\n            'text-text-inverse': isDark,\n            'brand-ht:text-text-inverse': isLight,\n          }\n        )}\n      >\n        <Markdown>{children}</Markdown>\n      </blockquote>\n    );\n  }\n  return null;\n};\n\nexport default Pullquote;\n","import cx from 'classnames';\n\ntype StatsProps = {\n  data: Array<{\n    heading: string;\n    description: string;\n  }>;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport const Stats = ({ data, brandComponentTheme }: StatsProps) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  return (\n    <div className=\"flex justify-center ps-8\">\n      <ul className=\"flex flex-row flex-wrap gap-y-5\">\n        {data.map((stat) => (\n          <li key={stat?.description} className=\"basis-1/2 pe-5\">\n            <span\n              className={cx('text-primary block text-5xl font-bold', {\n                'text-text-inverse': isDark,\n                'brand-ht:text-text-inverse': isLight,\n              })}\n            >\n              {stat?.heading}\n            </span>\n            <span\n              className={cx('block text-base', {\n                'text-text-inverse': isDark,\n                'brand-ht:text-text-inverse': isLight,\n              })}\n            >\n              {stat?.description}\n            </span>\n          </li>\n        ))}\n      </ul>\n    </div>\n  );\n};\n\nexport default Stats;\n","import cx from 'classnames';\n\ntype TimelineProps = {\n  data: Array<{\n    heading: string;\n    description: string;\n  }>;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport const Timeline = ({ data, brandComponentTheme }: TimelineProps) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  return (\n    <ol className=\"ms-6\">\n      {data.map((timeline, index) => (\n        <li\n          className={cx(\n            \"after:border-primary before:bg-primary relative flex items-center before:absolute before:top-1/2 before:-mt-1 before:size-2 before:-translate-x-[.17rem] before:rounded-full before:content-[''] after:absolute after:h-full after:border-l-2 after:content-[''] rtl:before:translate-x-[.17rem]\",\n            {\n              'after:bottom-1/2': index === data.length - 1,\n              'after:top-1/2': index === 0,\n              'after:border-text-inverse before:bg-text-inverse brand-ou:after:border-secondary brand-ou:before:bg-secondary':\n                isDark,\n              'after:brand-ht:border-text-inverse before:brand-ht:bg-text-inverse': isLight,\n            }\n          )}\n          key={timeline?.description}\n        >\n          <div className=\"flex items-center py-4 ps-6\">\n            <span\n              className={cx('text-primary me-4 text-3xl font-bold', {\n                'text-text-inverse': isDark,\n                'brand-ht:text-text-inverse': isLight,\n              })}\n            >\n              {timeline?.heading}\n            </span>\n            <span\n              className={cx('self-start text-lg', {\n                'text-text-inverse': isDark,\n                'brand-ht:text-text-inverse': isLight,\n              })}\n            >\n              {timeline?.description}\n            </span>\n          </div>\n        </li>\n      ))}\n    </ol>\n  );\n};\n\nexport default Timeline;\n","export * from './lib/editorial-carousel';\nexport * from './lib/components/pullquote';\nexport * from './lib/components/stats';\nexport * from './lib/components/timeline';\n","import cx from 'classnames';\nimport type { IconNames } from '@dx-ui/osc-icon';\nimport Icon from '@dx-ui/osc-icon';\nimport { useTranslation } from 'next-i18next';\n\nexport type PresetChipTypes = 'featured' | 'new' | 'sale' | 'package' | 'recentlyRenovated';\n\nexport type ChipVariants = 'honors' | 'general' | 'marketing' | 'neutral';\n\nexport type ChipProps = {\n  // The HTML element that the Chip renders as.\n  as?: 'div' | 'span';\n  className?: string;\n  // Whether the Chip inherits colors from the parent component\n  shouldInheritStyles?: boolean;\n  isIconTrailing?: boolean;\n  label?: string;\n  preset?: PresetChipTypes;\n  variant?: ChipVariants;\n} & {\n  size?: 'sm' | 'md' | 'lg' | 'xl';\n  iconName?: (typeof IconNames)[number] | 'checkmark';\n};\n\nconst presets: PresetChipTypes[] = ['featured', 'new', 'sale', 'recentlyRenovated'];\n\nexport const presetFilter = (preset: string) => (presets as readonly string[]).includes(preset);\n\nexport function Chip({\n  as = 'div',\n  className,\n  iconName,\n  shouldInheritStyles = false,\n  isIconTrailing = false,\n  size = 'md',\n  label,\n  preset,\n  variant,\n  ...rest\n}: ChipProps) {\n  const { t } = useTranslation('osc-chip');\n  const chipLabel = preset ? t(preset) : label;\n  const VARIANT_STYLES = Object.freeze({\n    honors: 'border-tier-diamond text-tier-diamond',\n    general: 'border-text text-text',\n    marketing: 'border-success text-success',\n    neutral: 'border-text-inverse text-text-inverse',\n  });\n  const PRESET_STYLES = Object.freeze({\n    featured: VARIANT_STYLES.marketing,\n    new: VARIANT_STYLES.general,\n    sale: VARIANT_STYLES.marketing,\n    package: VARIANT_STYLES.general,\n    recentlyRenovated: VARIANT_STYLES.general,\n  });\n  const variantClassName = variant && VARIANT_STYLES[variant];\n  const presetClassName = preset && PRESET_STYLES[preset];\n\n  const icon = () => {\n    if (iconName && iconName !== 'checkmark') {\n      return (\n        <span className=\"block\" data-testid=\"osc-chip-icon\">\n          <Icon name={iconName} size={size === 'xl' ? 'md' : 'xs'} variant=\"regular\" />\n        </span>\n      );\n    }\n\n    if (iconName === 'checkmark') {\n      return (\n        <span className=\"block\" data-testid=\"osc-chip-checkmark-icon\">\n          <Icon name=\"check\" size={size === 'sm' ? 'xs' : 'sm'} />\n        </span>\n      );\n    }\n\n    return null;\n  };\n\n  const Element = as;\n  return (\n    <Element\n      data-testid={preset ? `osc-${preset}-chip` : 'osc-chip'}\n      {...rest}\n      className={cx(\n        'inline-flex items-center gap-x-1 rounded-full border font-[\"Proxima_Nova\"] normal-case not-italic',\n        {\n          'px-2 px-py text-xs font-semibold': size === 'sm',\n          'px-3 py-1 text-xs font-semibold': size === 'md',\n          'px-3 py-2 text-xs font-bold': size === 'lg',\n          'px-3 py-1.5 text-sm font-bold': size === 'xl',\n          'border-text text-text': !presetClassName && !variantClassName && !shouldInheritStyles,\n          [presetClassName as string]: !!presetClassName && !variantClassName,\n        },\n        variantClassName,\n        className\n      )}\n    >\n      {!isIconTrailing && icon()}\n      {chipLabel}\n      {isIconTrailing && icon()}\n    </Element>\n  );\n}\n\nexport default Chip;\n","import { Chip } from './osc-chip';\nimport type { ChipProps } from './osc-chip';\nimport cx from 'classnames';\n\nexport type ActionChipProps = Omit<\n  ChipProps,\n  'as' | 'className' | 'inheritStyles' | 'preset' | 'variant'\n> & {\n  onClick: () => void;\n  isSelected?: boolean;\n};\n\n/** Note: The use case for this component is enterprise only and does not support brand colors or any other color variation. */\nexport function ActionChip({\n  iconName,\n  isIconTrailing,\n  label,\n  onClick,\n  isSelected,\n  size,\n}: ActionChipProps) {\n  return (\n    <button\n      onClick={onClick}\n      className={cx('border-hilton text-hilton rounded-full', {\n        'bg-hilton text-text-inverse': isSelected,\n      })}\n      type=\"button\"\n    >\n      <Chip\n        as=\"span\"\n        iconName={iconName}\n        isIconTrailing={isIconTrailing}\n        size={size}\n        label={label}\n        shouldInheritStyles\n      />\n    </button>\n  );\n}\n\nexport default ActionChip;\n","export * from './lib/osc-chip';\nexport * from './lib/osc-action-chip';\n","import { EditorialCarousel, Stats, Timeline, Pullquote } from '@dx-ui/osc-editorial-carousel';\nimport type { EditorialCarouselProps } from '@dx-ui/osc-editorial-carousel';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport { Link } from '@dx-ui/osc-link';\nimport type { Link as LinkType } from '@dx-ui/osc-link';\nimport { Chip } from '@dx-ui/osc-chip';\nimport { Icon } from '@dx-ui/osc-icon';\nimport type { IconNames } from '@dx-ui/osc-icon';\nimport type { Teaser } from 'dx-shared-schema/dist/types/couchbase/editorial';\nimport cx from 'classnames';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\n\nexport interface BrandEditorialCarouselProps extends EditorialCarouselProps {\n  editorialVariant: 'default' | 'withCarousel';\n  teaser?: Teaser;\n  chipLabel?: string;\n  socialMediaLink?: {\n    url: string;\n    channel: string;\n    linkLabel: string;\n  };\n  longDescription?: string;\n  links?: (LinkType & { experimentationConfiguration?: CmsExperimentationConfiguration })[];\n}\n\n/**\n * Brand Offset utilizes the OSC-Editorial-Carousel and renders children\n */\nexport const BrandEditorialCarousel = ({\n  image,\n  contentBelowImg,\n  carousel,\n  editorialVariant,\n  headline,\n  subHeadline,\n  longDescription,\n  brandComponentTheme,\n  carouselHeadline,\n  chipLabel,\n  teaser,\n  socialMediaLink,\n  links,\n}: BrandEditorialCarouselProps) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const teaserType = teaser?.type;\n  const teaserData =\n    teaser?.headingAndDescription?.map((item) => ({\n      heading: item.heading || '',\n      description: item.description,\n    })) || [];\n\n  if (teaserType === 'quote') {\n    contentBelowImg = (\n      <Pullquote brandComponentTheme={brandComponentTheme}>\n        {teaser?.headingAndDescription?.[0]?.description}\n      </Pullquote>\n    );\n  } else if (teaserType === 'statistics' && Array.isArray(teaserData)) {\n    contentBelowImg = <Stats data={teaserData} brandComponentTheme={brandComponentTheme} />;\n  } else if (teaserType === 'timeline' && Array.isArray(teaserData)) {\n    contentBelowImg = <Timeline data={teaserData} brandComponentTheme={brandComponentTheme} />;\n  }\n\n  // Don't allow subheadline to contain headings from markdown as it creates invalid html\n  subHeadline = subHeadline?.replace(/^(#+\\s*)/gm, '').trim();\n\n  return (\n    <div className=\"container relative px-0 min-[1440px]:px-10\">\n      <EditorialCarousel\n        image={image}\n        contentBelowImg={editorialVariant === 'withCarousel' ? contentBelowImg : null}\n        carousel={carousel}\n        headline={headline}\n        subHeadline={subHeadline}\n        brandComponentTheme={brandComponentTheme}\n        carouselHeadline={carouselHeadline}\n      >\n        <div className=\"my-4 flex flex-wrap items-center justify-between gap-4\">\n          {chipLabel ? (\n            <Chip label={chipLabel} size=\"lg\" variant={isDark ? 'neutral' : 'general'} />\n          ) : null}\n          {socialMediaLink ? (\n            <Link\n              url={socialMediaLink.url}\n              className={cx(\n                'inline-block items-baseline text-base text-primary hover:text-primary-alt',\n                {\n                  'text-text-inverse hover:text-text-inverse': isDark,\n                  'brand-ht:!text-text-inverse brand-ht:hover:text-text-inverse': isLight,\n                }\n              )}\n              isNewWindow={true}\n              underline={false}\n            >\n              <div className=\"inline-block pe-1.5\">\n                <Icon\n                  size=\"lg\"\n                  name={socialMediaLink.channel?.toLowerCase() as (typeof IconNames)[number]}\n                  className=\"-mb-2 me-1\"\n                  title={socialMediaLink.channel}\n                />\n              </div>\n              <div className=\"inline pe-1 align-baseline underline underline-offset-4\">\n                {socialMediaLink.linkLabel}\n              </div>\n            </Link>\n          ) : null}\n        </div>\n        <div\n          className={cx('border-b border-border', {\n            'brand-gu:border-bg': isDark,\n            'brand-gu:border-primary brand-ou:border-primary': !isDark,\n          })}\n        />\n        {longDescription ? (\n          <BrandTextBody\n            className={cx('py-2 text-text brand-wa:font-serif sm:text-lg lg:text-xl', {\n              'text-text-inverse': isDark,\n              'brand-ht:!text-text-inverse': isLight,\n            })}\n            brandComponentTheme={brandComponentTheme}\n          >\n            {longDescription}\n          </BrandTextBody>\n        ) : null}\n        <div className=\"my-5\">\n          {Array.isArray(links)\n            ? links.map(({ url, isNewWindow, label, experimentationConfiguration }) => {\n                return (\n                  <div className=\"inline\" key={url}>\n                    <BrandLink\n                      label={label}\n                      isNewWindow={isNewWindow}\n                      showNewWindowIcon={isNewWindow}\n                      url={url}\n                      brandComponentTheme={brandComponentTheme}\n                      data-conductrics-goal={experimentationConfiguration?.goal}\n                      data-conductrics-value={experimentationConfiguration?.value}\n                      anchorClassName=\"mb-3 me-3 sm:mb-0\"\n                    />\n                  </div>\n                );\n              })\n            : null}\n        </div>\n      </EditorialCarousel>\n    </div>\n  );\n};\n","import * as React from 'react';\n\ntype Props = React.PropsWithChildren<{\n  theme: 'light' | 'dark' | '';\n  enabled: boolean;\n}>;\n\nexport function EditorialHamptonHexVisual({ theme, enabled, children }: Props) {\n  if (enabled && theme === 'light') {\n    return (\n      <React.Fragment>\n        <svg\n          data-testid=\"editorial-hexagon-light\"\n          viewBox=\"0 0 1440 259\"\n          fill=\"none\"\n          className=\"invisible absolute inset-x-0 bottom-0 md:visible\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M1440 258.333V192.488L794.802 10.3286C770.497 3.47664 745.349 0 720 0V0.0338135C694.65 0.0338135 669.469 3.51042 645.163 10.3624L0 192.521V258.333H1440Z\"\n            fill=\"white\"\n          />\n        </svg>\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  if (enabled && theme === 'dark') {\n    return (\n      <React.Fragment>\n        <svg\n          data-testid=\"editorial-hexagon-dark\"\n          viewBox=\"0 0 1440 259\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"invisible absolute inset-x-0 bottom-0 md:visible\"\n        >\n          <path\n            d=\"M1440 258.333V192.488L794.802 10.3286C770.497 3.47664 745.349 0 720 0V0.0338135C694.65 0.0338135 669.469 3.51042 645.163 10.3624L0 192.521V258.333H1440Z\"\n            fill=\"#002666\"\n          />\n        </svg>\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  return children;\n}\n","import {\n  CpmMappingError,\n  createCpmComponentDefinition,\n  removeNullyFromArray,\n  useCreateManageContentButton,\n  useSegmentedItems,\n} from '@dx-ui/cpm-sdk';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport { EditorialSnippet } from '@dx-ui/osc-editorial-snippet';\nimport type { IconNames } from '@dx-ui/osc-icon';\nimport { BrandEditorialCarousel } from './BrandEditorialCarousel';\nimport { EditorialHamptonHexVisual } from './EditorialHamptonHexVisual';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useShouldRenderExperiment } from '@dx-ui/framework-conductrics';\n\nexport default createCpmComponentDefinition(\n  'Editorial',\n\n  function mapComponentData({ data, componentParams }) {\n    const cpmRelated = data?.cpmRelatedDocuments ?? [];\n\n    const relatedDocuments = removeNullyFromArray(cpmRelated).map((item, index) => {\n      const image = item.cpmAssets[0];\n\n      if (!image || !image.aspectRatios['3x2']) {\n        throw new CpmMappingError(\n          `Related document \"${index + 1}\" is missing an image with an aspect ratio of 3x2`\n        );\n      }\n\n      const captionData = image\n        ? {\n            captionLink: image.captionLink,\n            caption: image.caption,\n          }\n        : undefined;\n\n      const cardImage = image.aspectRatios['3x2'];\n\n      return {\n        $ref: item._meta.$ref,\n        id: item._meta.$ref.replace('/page/', ''),\n        headline: item.headline,\n        shortDescription: item.shortDescription,\n        longDescription: item.longDescription,\n        link: item.link ? item.link : undefined,\n        segmentIds: item.segmentIds,\n        experimentationConfiguration: item.experimentationConfiguration,\n        links: item.links,\n        imageAspectRatio: '3:2' as AspectRatio,\n        imageUrl: cardImage.url,\n        captionData,\n        imageAltTxt: image.altText,\n      };\n    });\n\n    const image = data.cpmAssets[0];\n\n    if (!image || !image.aspectRatios['1x1']) {\n      throw new CpmMappingError(\n        `Editorial requires an image with an aspect ratio of 1x1 (${data.contentType} - ${data.displayName})`\n      );\n    }\n\n    const captionData = image\n      ? {\n          captionLink: image.captionLink,\n          caption: image.caption,\n        }\n      : undefined;\n\n    const mainImage = {\n      alt: image.altText,\n      url: image.aspectRatios['1x1'].url,\n      captionData,\n    };\n\n    return {\n      // Content fields\n      headline: data.headline,\n      shortDescription: data.shortDescription,\n      chips: data.chip, // `chip` is an array, let's call it `chips`\n      social: data.socialMediaLinks,\n      image: mainImage,\n      longDescription: data.longDescription,\n      teaser: data.teaser,\n      gridDescription: data.gridDescription,\n      cards: relatedDocuments,\n      links: data.links,\n\n      // Non-content fields\n      editorialVariant: componentParams.display,\n      brandComponentTheme: componentParams.theme,\n      imageDisplay: componentParams.imageDisplay,\n    };\n  },\n\n  function CpmEditorial({\n    componentParams,\n    data,\n    mappedPage: { brandCode },\n    experimentationAgents,\n  }) {\n    const createManageContentButton = useCreateManageContentButton();\n    const segmentedCards = useSegmentedItems(data ? data.cards : [], {\n      maintainUnsegmentedCount: true,\n    });\n    const shouldRenderExperiment = useShouldRenderExperiment();\n\n    if (!data) {\n      return null;\n    }\n\n    const carouselItems = segmentedCards\n      .filter((item) =>\n        shouldRenderExperiment(experimentationAgents, item.experimentationConfiguration)\n      )\n      .map((item) => {\n        const links = item.links.filter((link) =>\n          shouldRenderExperiment(experimentationAgents, link.experimentationConfiguration)\n        );\n\n        return {\n          ...item,\n          cmsDocumentControl: createManageContentButton(item.$ref),\n          links,\n          link: links[0],\n        };\n      });\n\n    const { teaser, chips, social, links, gridDescription } = data;\n    const chipLabel = chips?.[0]?.chipLabel;\n\n    const socialLink = social?.[0];\n    const filteredLinks =\n      links?.filter((link) =>\n        shouldRenderExperiment(experimentationAgents, link.experimentationConfiguration)\n      ) ?? [];\n\n    return (\n      <BrandComponentThemeInline\n        brandCode={brandCode}\n        componentClassName=\"editorial\"\n        componentParams={componentParams}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <EditorialHamptonHexVisual\n          theme={componentParams.theme}\n          enabled={componentParams.backgroundIllustration === 'hx-hexagon' && brandCode === 'HP'}\n        >\n          {data?.editorialVariant === 'default' || data?.editorialVariant === 'withCarousel' ? (\n            <BrandEditorialCarousel\n              image={data.image}\n              contentBelowImg={null}\n              carousel={data?.editorialVariant === 'withCarousel' ? carouselItems : []}\n              headline={data.headline}\n              subHeadline={data.shortDescription}\n              brandComponentTheme={data.brandComponentTheme}\n              carouselHeadline={gridDescription || undefined}\n              editorialVariant={data?.editorialVariant}\n              teaser={teaser || undefined}\n              chipLabel={chipLabel || ''}\n              socialMediaLink={{\n                url: socialLink?.url ?? '',\n                linkLabel: socialLink?.linkLabel ?? '',\n                channel: socialLink?.channel ?? '',\n              }}\n              longDescription={data?.longDescription || ''}\n              links={filteredLinks}\n            />\n          ) : null}\n\n          {data?.editorialVariant === 'snippet' ? (\n            <EditorialSnippet\n              image={{\n                url: data?.image?.url,\n                altText: data?.image?.alt,\n              }}\n              heading={data?.headline}\n              shortDescription={data?.shortDescription}\n              longDescription={data?.longDescription ?? ''}\n              brandComponentTheme={data?.brandComponentTheme}\n              isSquareImage={data?.imageDisplay === 'round' ? false : true}\n              socialMediaLink={{\n                url: socialLink?.url ?? '',\n                label: socialLink?.linkLabel ?? '',\n                isNewWindow: true,\n              }}\n              socialMediaIcon={socialLink?.channel?.toLowerCase() as (typeof IconNames)[number]}\n              ctaLink={filteredLinks[0]}\n            />\n          ) : null}\n        </EditorialHamptonHexVisual>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\n\nexport default createCpmComponentDefinition(\n  'Experimentation',\n\n  function mapData({ data }) {\n    return data;\n  },\n\n  function Experimentation({ items = [], listData, componentParams }) {\n    return (\n      <>\n        <p>{JSON.stringify(componentParams)}</p>\n        {listData ? <p>{JSON.stringify(listData)}</p> : null}\n        {items.length ? (\n          <ul>\n            {items.map((item) => (\n              <li key={item.id}>{JSON.stringify(item)}</li>\n            ))}\n          </ul>\n        ) : null}\n      </>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import * as React from 'react';\n\ntype Props = React.PropsWithChildren<{\n  theme: 'light' | 'dark' | '';\n  enabled: boolean;\n}>;\n\nexport function HamptonHexVisual({ theme, enabled, children }: Props) {\n  if (enabled && theme === 'light') {\n    return (\n      <React.Fragment>\n        <svg\n          aria-hidden=\"true\"\n          data-testid=\"hampton-hex-light\"\n          className=\"invisible absolute left-0 top-0 w-1/3 md:visible\"\n          viewBox=\"0 0 552 107\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M0 0V80.5744L56.1245 96.3995C81.1038 103.432 106.948 107 133 107V106.966C159.052 106.966 184.931 103.398 209.91 96.3648L551.656 0H0Z\"\n            fill=\"white\"\n          />\n        </svg>\n\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  if (enabled && theme === 'dark') {\n    return (\n      <React.Fragment>\n        <svg\n          aria-hidden=\"true\"\n          data-testid=\"hampton-hex-dark\"\n          className=\"invisible absolute left-0 top-0 w-1/3 md:visible\"\n          viewBox=\"0 0 552 107\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M0 0.000488281V80.5749L56.1245 96.4C81.1038 103.433 106.948 107.001 133 107.001V106.966C159.052 106.966 184.931 103.398 209.91 96.3653L551.656 0.000488281H0Z\"\n            fill=\"#002666\"\n          />\n        </svg>\n\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  return children;\n}\n","import cx from 'classnames';\nimport { DynamicGridWOM, DynamicGrid } from '@dx-ui/osc-dynamic-grids';\n\nimport { extractInstanceIndexFromId } from '../../utils/id-transformer';\nimport {\n  createCpmComponentDefinition,\n  useCreateManageContentButton,\n  selectFirstAssetWithAspectRatio,\n  selectLastAssetWithAspectRatio,\n} from '@dx-ui/cpm-sdk';\nimport { HamptonHexVisual } from './HamptonHexVisual';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  '4X Grid',\n\n  function mapData({ data }) {\n    const { link } = data;\n    const asset = selectFirstAssetWithAspectRatio('3x4', data.cpmAssets);\n    const modalImageUrl = selectLastAssetWithAspectRatio('16x9', data.cpmAssets)?.aspectRatios[\n      '16x9'\n    ].url;\n\n    return {\n      id: data.id ?? '',\n      captionData: asset?.caption\n        ? {\n            caption: asset?.caption ?? '',\n          }\n        : undefined,\n      imageUrl: asset?.aspectRatios['3x4']?.url ?? '',\n      imageAltTxt: asset?.altText ?? '',\n      headline: data.headline,\n      shortDescription: data.shortDescription,\n      link: link?.url ? link : undefined,\n      links: data.links,\n      itemTitle: data?.label ?? '',\n      modalImageUrl,\n    };\n  },\n\n  function FourXGrid({ componentParams, items = [], listData, mappedPage: { brandCode } }) {\n    const metrics = useMetrics();\n    const createManageContentButton = useCreateManageContentButton();\n    const { display } = componentParams;\n    const isWA = brandCode === 'WA';\n\n    if (!listData) {\n      return null;\n    }\n\n    const { id, headline, description, links } = listData;\n\n    if (!items.length) {\n      return null;\n    }\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    const onViewItem = (selectedItemId: string) => {\n      const index = items.findIndex((item) => item.id === selectedItemId);\n      const item = items[index];\n\n      if (item?.experimentationConfiguration && item.experimentationConfiguration.goal) {\n        const val = Number(item.experimentationConfiguration.value);\n        sendReward(item.experimentationConfiguration.goal, Number.isFinite(val) ? val : undefined);\n      }\n\n      metrics.trackGridItemClick?.([\n        {\n          itemNumber: index + 1,\n          totalItems: items.length,\n          label: item?.itemTitle ?? '',\n          gridNumber: extractInstanceIndexFromId(id),\n          is4XGrid: true,\n        },\n      ]);\n    };\n\n    const listLink = links[0];\n    const isThemeAdded = Boolean(componentParams.theme);\n    const hexEnabled =\n      brandCode === 'HP' && componentParams.backgroundIllustration === 'hx-hexagon';\n\n    if (display === 'wom') {\n      return (\n        <BrandComponentThemeInline\n          componentClassName=\"fourXWOMGrid\"\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration,\n          }}\n        >\n          <HamptonHexVisual theme={componentParams.theme ?? ''} enabled={hexEnabled}>\n            <div\n              className={cx({\n                relative: hexEnabled,\n                'md:py-12': hexEnabled && isThemeAdded,\n              })}\n            >\n              <DynamicGridWOM\n                textAlign={componentParams.listTextAlign}\n                imageAspectRatio=\"3:4\"\n                isAnimated={componentParams.animation}\n                listHeadline={headline ?? undefined}\n                listDescription={description ?? undefined}\n                id={id}\n                link={listLink ? listLink : undefined}\n                items={itemsWithManageContentButton}\n                brandComponentTheme={componentParams.theme}\n              />\n            </div>\n          </HamptonHexVisual>\n        </BrandComponentThemeInline>\n      );\n    } else {\n      return (\n        <BrandComponentThemeInline\n          componentClassName=\"fourXGrid\"\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration,\n          }}\n        >\n          <HamptonHexVisual theme={componentParams.theme ?? ''} enabled={hexEnabled}>\n            <DynamicGrid\n              textAlign={componentParams.listTextAlign}\n              listDescription={description ?? undefined}\n              listHeadline={headline ?? undefined}\n              id={id}\n              imageAspectRatio=\"3:4\"\n              items={itemsWithManageContentButton}\n              onViewItem={onViewItem}\n              brandComponentTheme={componentParams.theme}\n              isAnimated={isWA}\n              variant=\"card\"\n            />\n          </HamptonHexVisual>\n        </BrandComponentThemeInline>\n      );\n    }\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { extractInstanceIndexFromId } from '../../utils/id-transformer';\nimport { FullWidthImage } from '@dx-ui/osc-marketing';\nimport { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  'Full Width Image',\n\n  function mapData({ data }) {\n    const asset = data.cpmAssets[0];\n\n    const captionData = asset\n      ? {\n          captionLink: asset.captionLink,\n          caption: asset.caption,\n        }\n      : undefined;\n\n    return {\n      id: data.id,\n      description: data.shortDescription,\n      imageOverlayButtonText: data.label,\n      title: data.headline,\n      link: {\n        adaDescription: data.link?.adaDescription,\n        isNewWindow: data.link?.isNewWindow,\n        label: data.link?.label,\n        url: data.link?.url ?? '',\n        experimentationConfiguration: data.link?.experimentationConfiguration,\n      },\n      desktopImageUrl: asset?.aspectRatios['18x5']?.url ?? '',\n      tabletImageUrl: asset?.aspectRatios['18x5']?.url ?? '',\n      mobileImageUrl: asset?.aspectRatios['3x2']?.url ?? '',\n      captionData,\n      imageAltText: asset?.altText ?? '',\n      links: data.links,\n    };\n  },\n\n  function FullWidthImageCpm({ items = [], componentParams, mappedPage: { brandCode } }) {\n    const metrics = useMetrics();\n    const data = items[0];\n\n    if (!data) {\n      return null;\n    }\n\n    const { id = '', imageOverlayButtonText } = data;\n\n    const overlayButtonClicked = () => {\n      if (imageOverlayButtonText && metrics) {\n        metrics.trackFullWidthImageClick?.([\n          {\n            fullWidthImageNumber: extractInstanceIndexFromId(id),\n            label: imageOverlayButtonText,\n          },\n        ]);\n      }\n    };\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <FullWidthImage {...data} overlayButtonClicked={overlayButtonClicked} />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import {\n  ImageType,\n  ANALYTICS_NO_VALUE,\n  ImageClickID,\n  type ImageClickIDType,\n  type ImageFunctionType,\n  type BaseImageMetrics,\n} from '@dx-ui/config-metrics';\nimport type { GalleryMetrics } from '../types/gallery-analytics';\n\nexport const DEFAULT_GALLERY_POSITION = 1;\nexport const DEFAULT_GALLERY_COUNT = 1;\n\ntype GenerateGalleryMetricsParams = {\n  metrics?: Partial<BaseImageMetrics>;\n  clickID: ImageClickIDType;\n  headline?: string;\n  itemTitle?: string;\n  position?: number;\n  count?: number;\n  imageFunction: ImageFunctionType;\n};\n\nexport const generateGalleryMetrics = ({\n  metrics,\n  clickID,\n  headline,\n  itemTitle,\n  position,\n  count,\n  imageFunction,\n}: GenerateGalleryMetricsParams): GalleryMetrics => ({\n  click: {\n    clickID,\n  },\n  osc: {\n    ...metrics?.osc,\n    image: {\n      ...metrics?.osc?.image,\n      headline: metrics?.osc?.image.headline || headline || ANALYTICS_NO_VALUE,\n      itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n      position: position || DEFAULT_GALLERY_POSITION,\n      count: count || DEFAULT_GALLERY_COUNT,\n      type: ImageType.Gallery,\n      function: imageFunction,\n    },\n  },\n});\n\nexport const generatePartialGalleryMetrics = (\n  headline: string | null | undefined\n): Partial<BaseImageMetrics> => ({\n  click: {\n    clickID: ImageClickID.Img,\n  },\n  osc: {\n    image: {\n      headline: headline ?? '',\n      type: ImageType.Gallery,\n    },\n  },\n});\n","import { ResponsiveImage, BREAKPOINTS } from '@dx-ui/osc-responsive-image';\nimport { useRef, useState } from 'react';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport type { GalleryItem } from './gallery';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { useMediaQuery } from 'usehooks-ts';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { CarouselSingle } from '@dx-ui/osc-carousel';\nimport { useTranslation } from 'next-i18next';\nimport type { BaseImageMetrics } from '@dx-ui/config-metrics';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ImageClickID,\n  ImageFunction,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateGalleryMetrics, generatePartialGalleryMetrics } from './utils/gallery-analytics';\n\ntype GalleryImageProps = {\n  /** Details of the Gallery Image */\n  item: GalleryItem;\n  /** Index of the current image */\n  idx: number;\n  /** Indicates if the Gallery Image is animated */\n  isAnimated?: boolean;\n  /** All of the items in the gallery */\n  items: Array<GalleryItem>;\n  /** Title for a Dialog modal */\n  dialogTitle: string;\n  metrics?: Partial<BaseImageMetrics>;\n};\n\nexport function GalleryImage({\n  item,\n  items,\n  idx,\n  isAnimated,\n  dialogTitle,\n  metrics,\n}: GalleryImageProps) {\n  const ref = useRef<React.ElementRef<'button'>>(null);\n  const rect = useRect({ ref });\n  const { t } = useTranslation('osc-gallery');\n\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n  const isMobile = useMediaQuery(`(max-width: ${BREAKPOINTS['sm']}px)`);\n  const isDesktop = useMediaQuery(`(min-width: ${BREAKPOINTS['xl']}px)`);\n\n  const numberOfItemsInARow = isDesktop ? 3 : isMobile ? 1 : 2;\n\n  return (\n    <AnimateRevealItem\n      animationType=\"fade-in-up\"\n      delay={100 + (idx % numberOfItemsInARow) * 100}\n      isAnimated={isAnimated}\n      className=\"size-full\"\n    >\n      <Dialog\n        dialogTrigger={\n          <button\n            className=\"size-full\"\n            aria-label={t('focusedGalleryItem', {\n              altText: item.image.alt,\n            })}\n            type=\"button\"\n            ref={ref}\n            onClick={() => setIsDialogOpen(true)}\n          >\n            <ResponsiveImage\n              aspectRatio={item.image.aspectRatio}\n              altText={item.image.alt}\n              imageUrl={item.image.url}\n              width={rect?.width ?? 0}\n              wrapperClassName=\"h-full\"\n              wrapperTag=\"span\"\n              onClick={() =>\n                trackEvent(\n                  ANALYTICS_GLOBAL_CLICK_EVENT,\n                  generateGalleryMetrics({\n                    metrics,\n                    position: idx + 1,\n                    count: items.length,\n                    clickID: ImageClickID.Img,\n                    headline: dialogTitle,\n                    imageFunction: ImageFunction.Modal,\n                    itemTitle: item.image.alt,\n                  })\n                )\n              }\n            />\n          </button>\n        }\n        size=\"4xl\"\n        title={dialogTitle}\n        onDismiss={() => setIsDialogOpen(false)}\n        isOpen={isDialogOpen}\n      >\n        <CarouselSingle\n          startingIndex={idx}\n          metrics={generatePartialGalleryMetrics(dialogTitle)}\n          images={items.map((item) => ({\n            alt: item.image.alt,\n            url: item.image.url,\n            captionData: item.image.captionData,\n          }))}\n        />\n      </Dialog>\n    </AnimateRevealItem>\n  );\n}\n","import { useState } from 'react';\nimport type { AspectRatio, TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { useTranslation } from 'next-i18next';\nimport { GalleryImage } from './gallery-image';\nimport cx from 'classnames';\nimport type { BaseImageMetrics } from '@dx-ui/config-metrics';\n\nexport type GalleryItem = {\n  id: string;\n  image: {\n    alt: string;\n    aspectRatio: AspectRatio;\n    url: string;\n    captionData: TResponsiveImage['captionData'];\n  };\n  /** Used for the tabbed gallery to group items based on the category (category is a tab name) */\n  category?: string;\n};\n\nexport type GalleryItems = Array<GalleryItem>;\n\ntype GalleryProps = {\n  items: GalleryItems;\n  isAnimated?: boolean;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  metrics?: Partial<BaseImageMetrics>;\n};\n\nexport function Gallery({ items, isAnimated = false, brandComponentTheme, metrics }: GalleryProps) {\n  const { t } = useTranslation('osc-gallery');\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const [isGalleryExpanded, setIsGalleryExpanded] = useState(false);\n  const galleryItemsLength = items?.length || 0;\n\n  const showViewBtn = (galleryItemsLength && galleryItemsLength > 12) || false;\n\n  return (\n    <>\n      <ul className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-3\">\n        {items.map((item, idx) => {\n          const shouldHideImage = idx + 1 > 12 && !isGalleryExpanded;\n          if (!shouldHideImage) {\n            return (\n              <li key={item.id}>\n                <GalleryImage\n                  item={item}\n                  idx={idx}\n                  isAnimated={isAnimated}\n                  items={items}\n                  dialogTitle={\n                    item.category ? t('categoryGallery', { category: item.category }) : t('gallery')\n                  }\n                  metrics={metrics}\n                />\n              </li>\n            );\n          }\n          return null;\n        })}\n      </ul>\n      {showViewBtn ? (\n        <div className=\"flex justify-center py-6\">\n          <button\n            onClick={() => setIsGalleryExpanded((isGalleryExpanded) => !isGalleryExpanded)}\n            type=\"button\"\n            className={cx('btn btn-primary-link btn-xl text-text', {\n              'text-text-inverse': isDark,\n              'brand-ht:text-text-inverse': isLight,\n            })}\n          >\n            {isGalleryExpanded ? t('viewLess') : t('viewAll', { count: galleryItemsLength })}\n          </button>\n        </div>\n      ) : null}\n    </>\n  );\n}\n\nexport default Gallery;\n","import type * as React from 'react';\nimport { createContext, useContext } from 'react';\n\ntype TabsContext = {\n  active?: string;\n  activeIndex: number;\n  addRef: (ref: HTMLButtonElement | null) => void;\n  count: number;\n  onTabKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>, value?: string) => void;\n  onTabSelect: (value?: string) => void;\n  setCount: (value: number) => void;\n};\n\nconst TabsContext = createContext<TabsContext>({\n  activeIndex: 0,\n  count: 0,\n} as TabsContext);\n\nconst useTabs = () => useContext(TabsContext);\n\nexport { TabsContext, useTabs };\nexport default TabsContext;\n","export function sanitizeId(id?: string) {\n  return id?.replace(/\\s/g, '-');\n}\n","import type * as React from 'react';\nimport { useTabs } from './tabs.context';\nimport cx from 'classnames';\nimport { sanitizeId } from './tabs.utils';\n\ntype TabButton = {\n  activeClassName?: string;\n  inactiveClassName?: string;\n  handleOnClick?: (value: React.MouseEvent<HTMLButtonElement>) => void;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * The `TabButton` component is used to setup the a11y attributes for the tab button. it accepts `className` and `activeClassName`/`inactiveClassName` props that are applied when the tab is active/inactive.\n */\nconst TabButton: React.FC<React.PropsWithChildren<TabButton>> = ({\n  activeClassName,\n  inactiveClassName,\n  id,\n  className,\n  handleOnClick,\n  ...rest\n}) => {\n  const { active, addRef, onTabKeyDown, onTabSelect } = useTabs();\n  const safeId = sanitizeId(id);\n  const isActive = active === safeId;\n\n  const handleOnTabClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    handleOnClick?.(event);\n    onTabSelect(safeId);\n  };\n\n  return (\n    <button\n      id={safeId}\n      aria-controls={`tab-panel-${safeId}`}\n      role=\"tab\"\n      aria-selected={isActive}\n      tabIndex={isActive ? 0 : -1}\n      onClick={handleOnTabClick}\n      onKeyDown={(e) => onTabKeyDown(e, safeId)}\n      ref={(ref) => addRef(ref)}\n      className={cx('appearance-none', className, {\n        [activeClassName as string]: isActive && !!activeClassName,\n        [inactiveClassName as string]: !isActive && !!inactiveClassName,\n      })}\n      type=\"button\"\n      {...rest}\n    />\n  );\n};\n\nexport { TabButton };\nexport default TabButton;\n","function _extends() {\n    _extends = Object.assign || function assign(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i];\n            for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n\n        return target;\n    };\n\n    return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","function _object_destructuring_empty(o) {\n    if (o === null || o === void 0) throw new TypeError(\"Cannot destructure \" + o);\n\n    return o;\n}\nexport { _object_destructuring_empty as _ };\n","import type * as React from 'react';\nimport type { TabButton as TabButtonType } from './tab.button';\nimport { TabButton } from './tab.button';\n\n/**\n * The `TabListButton` component extends the `TabButton` component and is used as the default styles for the OSC component, but doesn't need to be used and the developer can provide their own `TabButton` component if they wish.\n */\nconst TabListButton: React.FC<React.PropsWithChildren<TabButtonType>> = ({ ...rest }) => (\n  <TabButton\n    className=\"hover:text-primary focus:text-primary grow cursor-pointer appearance-none whitespace-nowrap border-b-4 border-transparent px-4 py-2 font-bold md:whitespace-normal\"\n    activeClassName=\"!border-primary text-primary brand-es:!border-secondary\"\n    inactiveClassName=\"border-transparent text-text-alt\"\n    {...rest}\n  />\n);\n\nexport { TabListButton };\nexport default TabListButton;\n","import * as React from 'react';\nimport cx from 'classnames';\n\ntype TabList = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * The `TabList` component is used to render the tab buttons. It sets up a11y properties for the best compliance with the WCAG 2.0 accessibility guidelines.\n */\nconst TabList = React.forwardRef<HTMLDivElement, TabList>(\n  ({ className, ...rest }, forwardedRef) => (\n    <div\n      role=\"tablist\"\n      className={cx('flex justify-start overflow-x-auto px-1 pt-2', className)}\n      ref={forwardedRef}\n      {...rest}\n    />\n  )\n);\n\nTabList.displayName = 'TabList';\n\nexport { TabList };\nexport default TabList;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport type { Argument } from 'classnames';\nimport { useWindowSize, useResizeObserver } from 'usehooks-ts';\nimport { BREAKPOINTS } from '@dx-ui/osc-responsive-image';\nimport { useTranslation } from 'next-i18next';\nimport { TabListButton } from '../tab.list.button';\nimport { useForkedRef } from '@dx-ui/utilities-use-forked-ref';\nimport { Icon } from '@dx-ui/osc-icon';\nimport { isRtl as isRTL } from '@dx-ui/utilities-get-language-direction';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { useRouter } from 'next/router';\n\ntype TabListScrollable = React.HTMLAttributes<HTMLDivElement> & {\n  leftArrowWrapperClassName?: Argument;\n  rightArrowWrapperClassName?: Argument;\n};\n\nconst TabListScrollable = React.forwardRef<HTMLDivElement, TabListScrollable>(\n  (\n    { className, leftArrowWrapperClassName, rightArrowWrapperClassName, children, id, ...rest },\n    forwardedRef\n  ) => {\n    const arrayChildren = React.Children.toArray(children);\n    const { width = 0 } = useWindowSize();\n    const { t } = useTranslation('osc-scrollable-tabs');\n    const { locale = 'en' } = useRouter();\n    const isRtl = isRTL(locale);\n    const tablistRef = React.useRef<React.ElementRef<'div'>>(null);\n    const ref = useForkedRef(forwardedRef, tablistRef);\n    const [isBackwardArrowVisible, setBackwardArrowVisible] = React.useState(false);\n    const [isForwardArrowVisible, setForwardArrowVisible] = React.useState(false);\n\n    const [focusedTabId, setFocusedTabId] = React.useState<string | null>(null);\n\n    //The purpose of this is to adjust the scroll position of the selected tab when switching between tabs adds vertical scrollbar to the screen.\n    useResizeObserver({\n      ref: tablistRef,\n      box: 'border-box',\n      onResize: () => {\n        if (tablistRef.current && focusedTabId) {\n          const focusedTab = document.getElementById(focusedTabId);\n\n          if (focusedTab) {\n            const { scrollLeft } = tablistRef.current;\n            //excluding padding of the Scrollable Div\n            //The distance from the beginning of the tablist div to the left border of the focused button\n            const distanceFromButtonToBeginningOfTabListDiv =\n              focusedTab.offsetLeft - tablistRef.current.scrollLeft;\n            const buttonWidth = focusedTab.offsetWidth;\n            //excluding scrollable tabs\n            const tablistWidth = tablistRef.current.offsetWidth;\n\n            tablistRef.current.scrollLeft = adjustScrollPosition(\n              distanceFromButtonToBeginningOfTabListDiv,\n              buttonWidth,\n              tablistWidth,\n              scrollLeft\n            );\n          }\n        }\n      },\n    });\n\n    const updateArrowVisibility = React.useCallback(\n      (rect: DOMRect | undefined) => {\n        //number of pixels that an element's content is scrolled from its left edge\n        const scrollLeft = tablistRef.current?.scrollLeft ?? 0;\n        // measurement of the width of an element's content, including content not visible on the screen due to overflow\n        const scrollWidth = tablistRef.current?.scrollWidth ?? 0;\n        //width of the tablist div excluding hidden tabs due to scroll\n        const tabListWidth = rect?.width || 0;\n        //indicates whether we need a scroll or not\n        const widthDiff = scrollWidth - tabListWidth;\n        //widthDiff > 0 means we need arrows\n        //for LTR, checking if scrollLeft value is more than 5 pixels, that means we need to let the user scroll backwards using arrows.\n        //similar is being checked for RTL.\n        const showScrollBackwardArrow = isRtl\n          ? scrollLeft < -5 && widthDiff > 0\n          : scrollLeft > 5 && widthDiff > 0;\n        //widthDiff > 0 means we need arrows\n        //for LTR, once widthDiff is almost the same as scrollLeft that means we are close to the end of the scroll.\n        //For the last 5 pixels of the scroll the arrow dissapears.\n        //similar is being checked for RTL.\n        const showScrollForwardArrow = isRtl\n          ? widthDiff > 0 && widthDiff > -scrollLeft + 5\n          : widthDiff > 0 && widthDiff - scrollLeft > 5;\n\n        setBackwardArrowVisible(showScrollBackwardArrow);\n        setForwardArrowVisible(showScrollForwardArrow);\n      },\n      [isRtl]\n    );\n\n    const tabListRect = useRect({ ref: tablistRef, onResize: updateArrowVisibility });\n    const onTabListScroll = React.useCallback(\n      () => tabListRect && updateArrowVisibility(tabListRect),\n      [updateArrowVisibility, tabListRect]\n    );\n\n    const threeItems = arrayChildren.length === 3;\n    const fourItems = arrayChildren.length === 4;\n\n    const getScrollMultiplier = () => {\n      //Checking if there are 3 or 4 tabs or the device is tablet or mobile.\n      if (threeItems || fourItems || width <= BREAKPOINTS['lg']) {\n        // scroll 50% of the offset width when there are less items or on smaller screens\n        return 0.5;\n      } else {\n        // at 40% of the offset width, each click scrolls a smaller distance. This works better for larger screens or higher item counts\n        return 0.4;\n      }\n    };\n\n    const scrollForward = (scrollLeft: number, offsetWidth: number) => {\n      return scrollLeft + offsetWidth * getScrollMultiplier();\n    };\n    const scrollBackward = (scrollLeft: number, offsetWidth: number) => {\n      return scrollLeft - offsetWidth * getScrollMultiplier();\n    };\n\n    const rightArrowHandler = () => {\n      if (tablistRef.current) {\n        const { scrollLeft, offsetWidth } = tablistRef.current;\n        if (isRtl) {\n          tablistRef.current.scrollLeft = scrollBackward(scrollLeft, offsetWidth);\n        } else {\n          tablistRef.current.scrollLeft = scrollForward(scrollLeft, offsetWidth);\n        }\n      }\n    };\n\n    const leftArrowhandler = () => {\n      if (tablistRef.current) {\n        const { scrollLeft, offsetWidth } = tablistRef.current;\n        if (isRtl) {\n          tablistRef.current.scrollLeft = scrollForward(scrollLeft, offsetWidth);\n        } else {\n          tablistRef.current.scrollLeft = scrollBackward(scrollLeft, offsetWidth);\n        }\n      }\n    };\n\n    function adjustScrollPosition(\n      distanceFromButtonToBeginningOfTabListDiv: number,\n      buttonWidth: number,\n      tablistWidth: number,\n      scrollLeft: number\n    ) {\n      //the padding value in rems\n      const paddingLeft = 0.25; //the \"px-1\" class. paddingLeft = paddingRight\n      const leftPaddingOfScrollableDiv =\n        paddingLeft * parseFloat(getComputedStyle(document.documentElement).fontSize);\n      //Adjusting the scroll position if the focused button is not fully visible to the user\n      //This if statement checks if the focused button overflows to the right(forwards) of the tablist div\n      //if it is, the scroll position is adjusted to make focused button fully visible.\n      if (\n        distanceFromButtonToBeginningOfTabListDiv + buttonWidth >=\n        tablistWidth - leftPaddingOfScrollableDiv\n      ) {\n        return (\n          scrollLeft +\n          (distanceFromButtonToBeginningOfTabListDiv +\n            buttonWidth +\n            leftPaddingOfScrollableDiv -\n            tablistWidth)\n        );\n      }\n      //Adjusting the scroll position if the focused button is not fully visible to the user\n      //This if statement checks if the focused button overflows to the left(backwards) of the tablist div\n      //if it is, the scroll position is adjusted to make focused button fully visible.\n      if (distanceFromButtonToBeginningOfTabListDiv < leftPaddingOfScrollableDiv) {\n        return (\n          scrollLeft - (leftPaddingOfScrollableDiv - distanceFromButtonToBeginningOfTabListDiv)\n        );\n      }\n\n      return scrollLeft;\n    }\n\n    const scrollToFocusedItem = (e: React.FocusEvent<HTMLButtonElement>) => {\n      setFocusedTabId(e.target.id);\n      if (tablistRef.current) {\n        const { scrollLeft } = tablistRef.current;\n        //excluding padding of the Scrollable Div\n        //The distance from the beginning of the tablist div to the left border of the focused button\n        const distanceFromButtonToBeginningOfTabListDiv =\n          e.target.offsetLeft - tablistRef.current.scrollLeft;\n        const buttonWidth = e.target.offsetWidth;\n        //excluding scrollable tabs\n        const tablistWidth = tablistRef.current.offsetWidth;\n\n        tablistRef.current.scrollLeft = adjustScrollPosition(\n          distanceFromButtonToBeginningOfTabListDiv,\n          buttonWidth,\n          tablistWidth,\n          scrollLeft\n        );\n      }\n    };\n\n    if (arrayChildren.length < 1) return null;\n    const lessOrEqual5 = arrayChildren.length <= 5;\n    const lessOrEqual2 = arrayChildren.length <= 2;\n\n    return (\n      //28px is the width of the svg arrow icon\n      <div\n        className={cx('relative', {\n          'mx-[28px] 2xl:m-0': !lessOrEqual5,\n          'mx-[28px] lg:m-0': lessOrEqual5 && !lessOrEqual2,\n          'm-0': lessOrEqual2,\n        })}\n      >\n        <div\n          role=\"tablist\"\n          className={cx(\n            'flex justify-start overflow-x-auto px-1 pt-2 motion-safe:scroll-smooth',\n            className\n          )}\n          ref={ref}\n          onScroll={onTabListScroll}\n          aria-labelledby={id}\n          {...rest}\n        >\n          {isBackwardArrowVisible ? (\n            <div\n              className={cx(\n                'from-bg pointer-events-none absolute start-0 z-10 flex h-full w-1/5 -translate-x-[28px] justify-start bg-gradient-to-r pb-3 lg:w-80 rtl:translate-x-[28px] rtl:bg-gradient-to-l',\n                { 'block lg:hidden': lessOrEqual5 && !lessOrEqual2, hidden: lessOrEqual2 },\n                leftArrowWrapperClassName\n              )}\n            >\n              <button\n                className=\"pointer-events-auto\"\n                onClick={leftArrowhandler}\n                aria-hidden\n                tabIndex={-1}\n                data-testid=\"scrollBackward\"\n                type=\"button\"\n              >\n                {isRtl ? (\n                  <Icon name=\"arrowhead-right\" size=\"md\" />\n                ) : (\n                  <Icon name=\"arrowhead-left\" size=\"md\" />\n                )}\n                <span className=\"sr-only\">{t('scrollBackward')}</span>\n              </button>\n            </div>\n          ) : null}\n\n          {React.Children.map(arrayChildren, (child) => {\n            if (React.isValidElement(child) && child.type === TabListButton)\n              return React.cloneElement(child as React.ReactElement, {\n                onFocus: (e: React.FocusEvent<HTMLButtonElement>) => {\n                  child.props?.onFocus?.();\n                  scrollToFocusedItem(e);\n                },\n              });\n          })}\n\n          {isForwardArrowVisible ? (\n            <div\n              className={cx(\n                'from-bg pointer-events-none absolute end-0 flex h-full w-1/5 translate-x-[28px] justify-end bg-gradient-to-l pb-3 lg:w-80 rtl:-translate-x-[28px] rtl:bg-gradient-to-r',\n                { 'block lg:hidden': lessOrEqual5 && !lessOrEqual2, hidden: lessOrEqual2 },\n                rightArrowWrapperClassName\n              )}\n            >\n              <button\n                onClick={rightArrowHandler}\n                className=\"pointer-events-auto\"\n                aria-hidden\n                tabIndex={-1}\n                data-testid=\"scrollForward\"\n                type=\"button\"\n              >\n                {isRtl ? (\n                  <Icon name=\"arrowhead-left\" size=\"md\" />\n                ) : (\n                  <Icon name=\"arrowhead-right\" size=\"md\" />\n                )}\n                <span className=\"sr-only\">{t('scrollForward')}</span>\n              </button>\n            </div>\n          ) : null}\n        </div>\n      </div>\n    );\n  }\n);\n\nTabListScrollable.displayName = 'TabListScrollable';\n\nexport { TabListScrollable };\nexport default TabListScrollable;\n","import cx from 'classnames';\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\nimport { useTabs } from './tabs.context';\nimport { sanitizeId } from './tabs.utils';\n\ntype TabPanel = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * The `TabPanel` component is used to render the content of the `Tab` component. It sets up a11y properties for the best compliance with the WCAG 2.0 accessibility guidelines.\n */\nconst TabPanel = forwardRef<HTMLDivElement, TabPanel>(\n  ({ id, className, ...rest }, forwardedRef) => {\n    const { active } = useTabs();\n    const safeId = sanitizeId(id);\n    const isActive = active === safeId;\n\n    return (\n      <div\n        id={`tab-panel-${safeId}`}\n        aria-labelledby={safeId}\n        aria-hidden={!isActive}\n        role=\"tabpanel\"\n        tabIndex={0}\n        className={cx('w-full', className, {\n          hidden: !isActive,\n        })}\n        ref={forwardedRef}\n        {...rest}\n      />\n    );\n  }\n);\n\nTabPanel.displayName = 'TabPanel';\n\nexport { TabPanel };\nexport default TabPanel;\n","import { useTabs } from './tabs.context';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport cx from 'classnames';\n\ntype TabPanels = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * The `TabPanels` component is used as a wrapper for the `TabPanel` components. It is important to use as it sets the count of components that helps set the focuse correctly.\n */\nconst TabPanels: React.FC<React.PropsWithChildren<TabPanels>> = ({\n  children,\n  className,\n  ...rest\n}) => {\n  const { setCount } = useTabs();\n  useEffect(() => {\n    setCount(React.Children.count(children));\n  }, [children, setCount]);\n\n  return (\n    <div className={cx('relative flex w-full', className)} {...rest}>\n      {children}\n    </div>\n  );\n};\n\nTabPanels.displayName = 'TabPanels';\n\nexport { TabPanels };\nexport default TabPanels;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { forwardRef, useEffect, useState } from 'react';\nimport type { TabsContext as TabsContextType } from './tabs.context';\nimport { TabsContext } from './tabs.context';\nimport { isRtl as isRTL } from '@dx-ui/utilities-get-language-direction';\nimport { sanitizeId } from './tabs.utils';\nimport { useRouter } from 'next/router';\n\nexport type TabsBaseProps = {\n  /** change the tabpanel on arrow key */\n  changeWithArrow?: boolean;\n  /** change the tabpanel on Up and Down keys. Works only if changeWithArrow is also true.   */\n  useUpDownArrows?: boolean;\n  /** id of tab that should be active by default */\n  defaultActive?: string;\n  /** callback with the id of the active tab */\n  onTabChange?: (id?: string) => void;\n};\n\ntype Tabs = TabsBaseProps & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * `Tabs` is a container component that holds the tabs and their content. The set of Tab components are composed inside the Tabs component and have their own context. There should be a `TabButton` or a component that extends `TabButton` with an `id` prop that correlates to a `TabPanel` component.\n *\n * For a11y, there is a `changeWithArrow` prop that will change the tabpanel on arrow key, changing the default behavior to change the tab on enter key.\n *\n * ```jsx\n * <Tabs>\n *  <TabList>\n *    <TabButton id=\"tab1\">Tab 1</TabButton>\n *    <TabButton id=\"tab2\">Tab 2</TabButton>\n *  </TabList>\n *  <TabPanels>\n *    <TabPanel id=\"tab1\">\n *      <p>Tab 1 content</p>\n *    </TabPanel>\n *    <TabPanel id=\"tab2\">\n *      <p>Tab 2 content</p>\n *    </TabPanel>\n *  </TabPanels>\n * </Tabs>\n * ```\n */\nexport const Tabs = forwardRef<HTMLDivElement, Tabs>(\n  (\n    { changeWithArrow, useUpDownArrows, defaultActive, onTabChange, className, children, ...rest },\n    forwardedRef\n  ) => {\n    const [active, setActive] = useState(sanitizeId(defaultActive));\n    const [activeIndex, setActiveIndex] = useState<number>(0);\n    const [count, setCount] = useState<number>(0);\n    const { locale = 'en' } = useRouter();\n    const isRtl = isRTL(locale);\n    const refs: HTMLButtonElement[] = React.useMemo(() => [], []);\n    const addRef: TabsContextType['addRef'] = (ref) =>\n      ref ? (refs.includes(ref) ? refs : refs.push(ref)) : refs;\n\n    const changeActiveTab = React.useCallback(\n      (id?: string) => {\n        setActive(id);\n        setActiveIndex(refs.findIndex((ref) => ref.id === id));\n\n        if (onTabChange) {\n          onTabChange(id);\n        }\n      },\n      [onTabChange, refs]\n    );\n\n    const nextTabIndex = (currentIndex: number) =>\n      currentIndex + 1 <= count - 1 ? currentIndex + 1 : 0;\n    const previousTabIndex = (currentIndex: number) =>\n      currentIndex - 1 >= 0 ? currentIndex - 1 : count - 1;\n\n    const isModifiedKeyStroke = (e: React.KeyboardEvent<HTMLButtonElement>) =>\n      Boolean(e.shiftKey || e.altKey || e.ctrlKey || e.metaKey);\n\n    const onTabKeyDown: TabsContextType['onTabKeyDown'] = (e, id) => {\n      if (isModifiedKeyStroke(e)) {\n        return false;\n      }\n\n      const index = refs.findIndex((ref) => ref.id === id);\n      let tabRef = 0;\n      switch (e.key) {\n        case 'ArrowUp':\n        case 'ArrowLeft':\n          if (e.key === 'ArrowUp' && !useUpDownArrows) {\n            break;\n          }\n          e.preventDefault();\n          tabRef = isRtl ? nextTabIndex(index) : previousTabIndex(index);\n          if (changeWithArrow) {\n            changeActiveTab(refs[tabRef]?.getAttribute('id') || id);\n          }\n          refs[tabRef]?.focus();\n          break;\n        case 'ArrowDown':\n        case 'ArrowRight':\n          if (e.key === 'ArrowDown' && !useUpDownArrows) {\n            break;\n          }\n          e.preventDefault();\n          tabRef = isRtl ? previousTabIndex(index) : nextTabIndex(index);\n          if (changeWithArrow) {\n            changeActiveTab(refs[tabRef]?.getAttribute('id') || id);\n          }\n          refs[tabRef]?.focus();\n          break;\n        case 'Enter':\n        case ' ':\n          changeActiveTab(id);\n          break;\n        case 'End':\n          e.preventDefault();\n          refs[count - 1]?.focus();\n          break;\n        case 'Home':\n          e.preventDefault();\n          refs[0]?.focus();\n          break;\n        // no default\n      }\n    };\n    const onTabSelect: TabsContextType['onTabSelect'] = (id) => changeActiveTab(id);\n\n    useEffect(() => {\n      if (!defaultActive) {\n        refs.length > 0 && changeActiveTab(refs[0]?.id);\n      }\n    }, [changeActiveTab, defaultActive, refs]);\n\n    return (\n      <TabsContext.Provider\n        value={{\n          active,\n          activeIndex,\n          addRef,\n          count,\n          onTabKeyDown,\n          onTabSelect,\n          setCount,\n        }}\n      >\n        <div ref={forwardedRef} className={cx('relative', className)} {...rest}>\n          {children}\n        </div>\n      </TabsContext.Provider>\n    );\n  }\n);\n\nTabs.displayName = 'Tabs';\n\nexport default Tabs;\n","import type { IconNames, EYIconNames, ESIconNames, HPIconNames } from '@dx-ui/osc-icon';\n\nexport const brandIconMapper: {\n  [key: string]:\n    | { brandCode: 'EY'; name: (typeof EYIconNames)[number] }\n    | {\n        brandCode: 'ES';\n        name: (typeof ESIconNames)[number];\n        invertedName: (typeof ESIconNames)[number];\n      }\n    | {\n        brandCode: 'HP';\n        name: (typeof HPIconNames)[number];\n        invertedName: (typeof HPIconNames)[number];\n      };\n} = {\n  livsmartBreakfast: { brandCode: 'EY', name: 'breakfast' },\n  livsmartFitness: { brandCode: 'EY', name: 'fitness' },\n  livsmartGrill: { brandCode: 'EY', name: 'grill' },\n  livsmartKitchen: { brandCode: 'EY', name: 'kitchen' },\n  livsmartLaundry: { brandCode: 'EY', name: 'laundry' },\n  livsmartPetFriendly: { brandCode: 'EY', name: 'pet-friendly' },\n  livsmartStudio: { brandCode: 'EY', name: 'studio' },\n  embassyBreakfast: { brandCode: 'ES', name: 'breakfast', invertedName: 'breakfast_inverted' },\n  embassyFitness: { brandCode: 'ES', name: 'fitness', invertedName: 'fitness_inverted' },\n  embassyReception: { brandCode: 'ES', name: 'drink', invertedName: 'drink_inverted' },\n  hamptonHexagon: { brandCode: 'HP', name: 'hex', invertedName: 'hex_inverted' },\n} as const;\n\nexport const iconMapper: {\n  [key: string]: (typeof IconNames)[number];\n} = {\n  twentyFourHourMemberService: 'clock',\n  access: 'access',\n  account: 'user',\n  airlineMiles: 'airport',\n  amazonBox: 'amazon',\n  americanExpress: 'credit-card',\n  benefitsStar: 'star-circle',\n  carRental: 'car-rental',\n  chooseYourRoom: 'choose-your-room',\n  complimentaryBreakfast: 'hot-breakfast',\n  deviceApp: 'mobile',\n  diamond: 'diamond',\n  digitalCheckin: 'app',\n  digitalKey: 'digital-key',\n  dining: 'dining',\n  eliteRolloverNights: 'award',\n  fifthNightFree: 'free-nights',\n  freeWifi: 'wifi',\n  giftPoints: 'gift',\n  honorsDiscount: 'price',\n  honorsOffers: 'event',\n  lateCheckout: 'check-out',\n  loungeAccess: 'lounge',\n  lyftRides: 'lyft',\n  onPropertyRewards: 'rewards',\n  orderAhead: 'order-ahead',\n  points: 'points',\n  pointsMoney: 'points-and-money',\n  poolPoints: 'pool-points',\n  pointsPromotions: 'points-promotions',\n  premiumWifi: 'wifi',\n  roomGuarantee: 'check-in',\n  roomUpgrade: 'room-upgrade',\n  secondGuest: 'users',\n  transferPoints: 'transfer',\n  waterBottle: 'water-bottle',\n  hotelStays: 'hotel',\n  convertPoints: 'convert-points',\n  buyPoints: 'buy-points',\n  meetingEvents: 'meeting',\n  hgv: 'keys',\n  allInclusiveSpaDiscount: 'spa',\n  cookie: 'cookie',\n};\n","export * from './tab.button';\nexport * from './tab.list.button';\nexport * from './tab.list';\nexport * from './scrollable/tab.list';\nexport * from './tab.panel';\nexport * from './tab.panels';\nexport * from './tabs.context';\nexport * from './tabs.utils';\nexport * from './tabs';\nexport * from './util/icon-mapper';\n","export * from './lib/index';\n","import { useState } from 'react';\nimport {\n  TabListScrollable,\n  TabListButton,\n  TabPanel,\n  TabPanels,\n  Tabs,\n  sanitizeId,\n} from '@dx-ui/osc-tabs';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\nimport type { GalleryItems } from './gallery';\nimport cx from 'classnames';\nimport { Gallery } from './gallery';\nimport { useRouter } from 'next/router';\nimport type { BaseImageMetrics } from '@dx-ui/config-metrics';\n\ntype TabbedGalleryProps = {\n  items: GalleryItems;\n  isAnimated?: boolean;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  metrics?: Partial<BaseImageMetrics>;\n};\n\nexport function TabbedGallery({\n  items,\n  isAnimated = false,\n  brandComponentTheme,\n  metrics,\n}: TabbedGalleryProps) {\n  const { locale = 'en' } = useRouter();\n  const defaultActive = sanitizeId(items[0]?.category);\n  const [activeCategoryId, setActiveCategoryId] = useState(defaultActive);\n  const [focusedCategoryId, setFocusedCategoryId] = useState<undefined | string>(undefined);\n\n  const categories = items\n    .map((item) => {\n      return item.category;\n    })\n    .filter((item) => {\n      return !!item;\n    });\n\n  const uniqueCategories = Array.from(new Set(categories));\n\n  const categoryItems = items.filter((i) => sanitizeId(i.category) === activeCategoryId);\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div>\n      <Tabs\n        changeWithArrow\n        useUpDownArrows\n        onTabChange={(id) => {\n          setActiveCategoryId(id);\n        }}\n        defaultActive={defaultActive}\n      >\n        <TabListScrollable\n          className={cx('scrollbar-hide mb-4 flex flex-row flex-nowrap overflow-x-scroll', {\n            'horizontal-tabbed-list-scrollable-dark': isDark,\n            'horizontal-tabbed-list-scrollable-light': isLight,\n            'horizontal-tabbed-list-scrollable': !isDark && !isLight,\n          })}\n          leftArrowWrapperClassName={{\n            'horizontal-tabbed-arrow-wrapper-dark': isDark,\n            'horizontal-tabbed-arrow-wrapper-light': isLight,\n            'horizontal-tabbed-arrow-wrapper': !isDark && !isLight,\n          }}\n          rightArrowWrapperClassName={{\n            'horizontal-tabbed-arrow-wrapper-dark': isDark,\n            'horizontal-tabbed-arrow-wrapper-light': isLight,\n            'horizontal-tabbed-arrow-wrapper': !isDark && !isLight,\n          }}\n        >\n          {uniqueCategories.map((category, index) => {\n            const isFocusedTab = category === focusedCategoryId;\n            const isRightBeforeFocusedtab =\n              uniqueCategories[isRtl(locale) ? index - 1 : index + 1] === focusedCategoryId;\n            const id = sanitizeId(category);\n\n            return (\n              <TabListButton\n                onFocus={() => setFocusedCategoryId(category)}\n                onBlur={() => setFocusedCategoryId(undefined)}\n                id={id}\n                key={category}\n                activeClassName={cx('is-selected selected group z-10', {\n                  'horizontal-tabbed-list-button-active-dark': isDark,\n                  'horizontal-tabbed-list-button-active-light': isLight,\n                  'horizontal-tabbed-list-button-active': !isDark && !isLight,\n                })}\n                className={cx(\n                  'relative grow cursor-pointer appearance-none border-b-4 bg-transparent px-4 py-2 md:whitespace-normal',\n                  {\n                    'after:mb-2 after:absolute after:top-0 after:right-0 after:bottom-0 after:w-[1px] after:bg-text after:pointer-events-none last:after:hidden rtl:after:hidden':\n                      !isFocusedTab && !isRightBeforeFocusedtab,\n                    'rtl:before:mb-2 rtl:before:absolute rtl:before:top-0 rtl:before:right-0 rtl:before:bottom-0 rtl:before:w-[1px] rtl:before:bg-text rtl:before:pointer-events-none rtl:first:before:hidden':\n                      !isFocusedTab && !isRightBeforeFocusedtab,\n                    'min-w-[50%] lg:min-w-[20%]': uniqueCategories.length > 5,\n                    'min-w-[50%] lg:min-w-fit': uniqueCategories.length <= 5,\n                    'after:!gallery-tabs-divider-light rtl:before:!gallery-tabs-divider-light':\n                      isLight,\n                    'after:bg-text-inverse rtl:before:bg-text-inverse': isDark,\n                  }\n                )}\n              >\n                <span\n                  className={cx(\n                    'group m-auto flex min-w-[120px] flex-col items-center text-lg',\n                    'brand-es:font-headline',\n                    'brand-ey:font-normal',\n                    'brand-hp:font-serif brand-hp:shrink-0',\n                    'brand-nd:uppercase brand-nd:font-mono',\n                    'brand-wa:uppercase brand-wa:font-sans brand-wa:font-light',\n                    {\n                      'hover:text-primary-alt focus:text-primary-alt brand-dt:hover:text-brand brand-dt:focus:text-brand brand-es:hover:text-primary brand-es:focus:text-primary':\n                        id !== activeCategoryId,\n                      'font-bold brand-nd:font-medium ': id === activeCategoryId,\n                      'font-medium brand-gu:font-bold': id !== activeCategoryId,\n                      'text-text-inverse': isDark,\n                      'hover:text-text-inverse brand-es:hover:text-bg-light brand-es:focus:text-bg-light brand-nd:hover:!text-text-disabled brand-ey:hover:!text-brand-alt':\n                        isDark && id !== activeCategoryId,\n                      'brand-ht:!text-text-inverse brand-hp:text-primary': isLight,\n                      'brand-nd:hover:text-primary-alt brand-wa:hover:text-bg-dark brand-ey:hover:text-primary-alt':\n                        !isDark && id !== activeCategoryId,\n                      'text-text brand-ey:text-primary brand-gu:text-primary brand-ou:text-primary brand-hp:text-primary brand-hp:hover:text-primary-alt':\n                        !isDark,\n                    }\n                  )}\n                >\n                  {category}\n                </span>\n              </TabListButton>\n            );\n          })}\n        </TabListScrollable>\n        <TabPanels>\n          {uniqueCategories.map((category) => {\n            return (\n              <TabPanel id={sanitizeId(category)} key={category}>\n                <Gallery\n                  isAnimated={isAnimated}\n                  items={categoryItems}\n                  brandComponentTheme={brandComponentTheme}\n                  metrics={metrics}\n                />\n              </TabPanel>\n            );\n          })}\n        </TabPanels>\n      </Tabs>\n    </div>\n  );\n}\n\nexport default TabbedGallery;\n","export * from './lib/gallery';\nexport * from './lib/tabbed-gallery';\nexport * from './lib/types/gallery-analytics';\nexport * from './lib/utils/gallery-analytics';\n","import { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport type { StructuredAsset } from '@dx-ui/cpm-sdk';\nimport { Gallery, generatePartialGalleryMetrics, TabbedGallery } from '@dx-ui/osc-gallery';\nimport type { GalleryItems, GalleryItem } from '@dx-ui/osc-gallery';\nimport cx from 'classnames';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport { mapTextAlignToClassname } from '@dx-ui/osc-textual-block';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\ntype GalleryImage = GalleryItem['image'] & Omit<GalleryItem, 'image' | 'category'>;\ntype GalleryImages = Array<GalleryImage>;\n\nfunction transformImage(img: GalleryImage, category?: string) {\n  return {\n    id: img.id,\n    ...(category && { category }),\n    image: {\n      alt: img.alt,\n      aspectRatio: img.aspectRatio,\n      url: img.url,\n      captionData: img.captionData,\n    },\n  };\n}\n\nfunction mapAssetsToImages(assets: StructuredAsset[]): GalleryImages {\n  return assets.map((asset) => ({\n    id: asset?.id ?? crypto.randomUUID(),\n    alt: asset?.altText ?? '',\n    url: asset?.aspectRatios['3x2']?.url ?? '',\n    aspectRatio: '3:2' as AspectRatio,\n    captionData: asset?.caption\n      ? {\n          captionLink: asset.captionLink ?? undefined,\n          caption: asset.caption ?? '',\n        }\n      : undefined,\n  }));\n}\n\nexport default createCpmComponentDefinition(\n  'Gallery',\n\n  function mapComponentData({ data }) {\n    return {\n      $ref: data?.ref?.$ref,\n      id: data?.id ?? '',\n      images: mapAssetsToImages(\n        data?.cpmAssets?.filter((asset): asset is StructuredAsset => asset !== undefined) ?? []\n      ),\n      category: data.label || data?.headline || '',\n      segmentIds: data.segmentIds,\n      experimentationConfiguration: data.experimentationConfiguration,\n      links: data.links,\n    };\n  },\n\n  function CpmGallery({ items = [], listData, componentParams, mappedPage: { brandCode } }) {\n    if (!items.length) {\n      return null;\n    }\n\n    const isTabbedGallery = items.length > 1;\n\n    const galleryItems: GalleryItems = isTabbedGallery\n      ? items.flatMap((item) => item?.images?.map((img) => transformImage(img, item?.category)))\n      : items[0]?.images?.map((img) => transformImage(img)) || [];\n\n    const isGraduate = brandCode === 'GU';\n\n    const headline = listData?.headline || undefined;\n    const subheading = listData?.subheading || undefined;\n    const link = listData?.links?.[0] || undefined;\n\n    const brandComponentTheme = componentParams.theme;\n    const isDark = brandComponentTheme === 'dark';\n    const isLight = brandComponentTheme === 'light';\n    const textAlign = componentParams.textAlign || 'left';\n\n    const isCTADisplayed = isTabbedGallery ? true : galleryItems.length < 13;\n    const galleryMetrics = generatePartialGalleryMetrics(headline);\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration || 'none',\n        }}\n      >\n        <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={isGraduate}>\n          <div className=\"container py-8 brand-wa:py-16 xl:py-12 brand-wa:xl:py-20\">\n            <div className={cx({ 'mb-8': headline || subheading })}>\n              {headline ? (\n                <BrandTextHeader\n                  className={cx(mapTextAlignToClassname(textAlign), {\n                    '!text-text-inverse': isDark,\n                    'brand-ht:text-text-inverse': isLight,\n                  })}\n                >\n                  {headline}\n                </BrandTextHeader>\n              ) : null}\n\n              {subheading ? (\n                <BrandTextBody\n                  className={cx(mapTextAlignToClassname(textAlign), {\n                    'text-text-inverse': isDark,\n                    'brand-ht:text-text-inverse': isLight,\n                  })}\n                  brandComponentTheme={brandComponentTheme}\n                >\n                  {subheading}\n                </BrandTextBody>\n              ) : null}\n            </div>\n\n            {isTabbedGallery ? (\n              <TabbedGallery\n                items={galleryItems}\n                isAnimated={isGraduate}\n                brandComponentTheme={brandComponentTheme}\n                metrics={galleryMetrics}\n              />\n            ) : (\n              <Gallery\n                items={galleryItems}\n                isAnimated={isGraduate}\n                brandComponentTheme={brandComponentTheme}\n                metrics={galleryMetrics}\n              />\n            )}\n\n            {link && isCTADisplayed ? (\n              <div className=\"mt-8 flex justify-center\">\n                <BrandLink\n                  isNewWindow={link.isNewWindow}\n                  showNewWindowIcon={link.isNewWindow}\n                  url={link.url}\n                  label={link.label}\n                  brandComponentTheme={brandComponentTheme}\n                />\n              </div>\n            ) : null}\n          </div>\n        </AnimateRevealItem>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import * as React from 'react';\n\ntype Props = React.PropsWithChildren<{\n  theme: 'light' | 'dark' | '';\n  enabled: boolean;\n}>;\n\nexport function HamptonHexVisual({ theme, enabled, children }: Props) {\n  if (enabled && theme === 'light') {\n    return (\n      <React.Fragment>\n        <svg\n          aria-hidden=\"true\"\n          data-testid=\"hampton-hex-light\"\n          className=\"invisible absolute left-0 top-0 w-1/3 md:visible\"\n          viewBox=\"0 0 552 107\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M0 0V80.5744L56.1245 96.3995C81.1038 103.432 106.948 107 133 107V106.966C159.052 106.966 184.931 103.398 209.91 96.3648L551.656 0H0Z\"\n            fill=\"white\"\n          />\n        </svg>\n\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  if (enabled && theme === 'dark') {\n    return (\n      <React.Fragment>\n        <svg\n          aria-hidden=\"true\"\n          data-testid=\"hampton-hex-dark\"\n          className=\"invisible absolute left-0 top-0 w-1/3 md:visible\"\n          viewBox=\"0 0 552 107\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M0 0.000488281V80.5749L56.1245 96.4C81.1038 103.433 106.948 107.001 133 107.001V106.966C159.052 106.966 184.931 103.398 209.91 96.3653L551.656 0.000488281H0Z\"\n            fill=\"#002666\"\n          />\n        </svg>\n\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  return children;\n}\n","import cx from 'classnames';\nimport { createCpmComponentDefinition, useCreateManageContentButton } from '@dx-ui/cpm-sdk';\nimport { DynamicGridWOM, DynamicGrid } from '@dx-ui/osc-dynamic-grids';\nimport { extractInstanceIndexFromId } from '../../utils';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { HamptonHexVisual } from './HamptonHexVisual';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  '3-6-9 Grid',\n\n  function mapData({ data, addIssue, clearIssue }) {\n    const asset = data.cpmAssets[0];\n\n    if (!asset) {\n      addIssue({\n        id: data.id,\n        message: `\"${data.name || data.displayName}\" has no image - please attach one`,\n      });\n    } else {\n      clearIssue(data.id);\n    }\n\n    const modalImageUrl = data.cpmAssets?.[0]?.aspectRatios['3x2']?.url;\n\n    return {\n      id: data.id ?? '',\n      imageUrl: asset?.aspectRatios['3x2']?.url ?? '',\n      imageAltTxt: asset?.altText ?? '',\n      headline: data.headline,\n      shortDescription: data.shortDescription,\n      link: data.link ?? undefined,\n      links: data.links,\n      itemTitle: data?.label ?? '',\n      captionData: asset?.caption\n        ? {\n            caption: asset?.caption ?? '',\n          }\n        : undefined,\n      modalImageUrl,\n    };\n  },\n\n  function GridThreeSixNine({ items = [], listData, componentParams, mappedPage: { brandCode } }) {\n    const metrics = useMetrics();\n    const createManageContentButton = useCreateManageContentButton();\n\n    const { display } = componentParams;\n    const isWom = display === 'wom';\n\n    const isWA = brandCode === 'WA';\n\n    if (!items.length || !listData) {\n      return null;\n    }\n\n    const { id, headline, description, links, subheading } = listData;\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    const onViewItem = (selectedItemId: string) => {\n      const index = items.findIndex((item) => item.id === selectedItemId);\n      const item = items[index];\n\n      if (item?.experimentationConfiguration && item?.experimentationConfiguration.goal) {\n        const val = Number(item?.experimentationConfiguration.value);\n        sendReward(item?.experimentationConfiguration.goal, Number.isFinite(val) ? val : undefined);\n      }\n\n      metrics.trackGridItemClick?.([\n        {\n          itemNumber: index + 1,\n          totalItems: items.length,\n          gridNumber: extractInstanceIndexFromId(id),\n          is4XGrid: false,\n          label: isWom ? '' : item?.itemTitle ?? '',\n        },\n      ]);\n    };\n\n    const listLink = links[0];\n\n    const isThemeAdded = Boolean(componentParams.theme);\n    const hexEnabled =\n      brandCode === 'HP' && componentParams.backgroundIllustration === 'hx-hexagon';\n\n    if (display === 'wom') {\n      return (\n        <BrandComponentThemeInline\n          componentClassName=\"threeSixNineWOMGrid\"\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration,\n          }}\n        >\n          <HamptonHexVisual theme={componentParams.theme ?? ''} enabled={hexEnabled}>\n            <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={brandCode === 'GU'}>\n              <div\n                data-testid=\"cpm-grid369-themed-wrapper\"\n                className={cx({\n                  relative: hexEnabled,\n                  'pt-10 pb-16': hexEnabled && isThemeAdded,\n                })}\n              >\n                <DynamicGridWOM\n                  textAlign={componentParams.listTextAlign}\n                  isAnimated={componentParams.animation}\n                  listSubheading={subheading ?? ''}\n                  imageAspectRatio=\"3:2\"\n                  listHeadline={headline ?? undefined}\n                  listDescription={description ?? undefined}\n                  id={id}\n                  link={listLink}\n                  items={itemsWithManageContentButton}\n                  brandComponentTheme={componentParams.theme}\n                />\n              </div>\n            </AnimateRevealItem>\n          </HamptonHexVisual>\n        </BrandComponentThemeInline>\n      );\n    } else {\n      return (\n        <BrandComponentThemeInline\n          componentClassName=\"threeSixNineGrid\"\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration,\n          }}\n        >\n          <HamptonHexVisual theme={componentParams.theme ?? ''} enabled={hexEnabled}>\n            <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={brandCode === 'GU'}>\n              <div\n                data-testid=\"cpm-grid369-themed-wrapper\"\n                className={cx('relative', {\n                  'md:pt-10 md:pb-16': isThemeAdded,\n                })}\n              >\n                <DynamicGrid\n                  textAlign={componentParams.listTextAlign}\n                  listDescription={description ?? undefined}\n                  listHeadline={headline ?? undefined}\n                  id={id}\n                  imageAspectRatio=\"3:2\"\n                  items={itemsWithManageContentButton}\n                  onViewItem={onViewItem}\n                  brandComponentTheme={componentParams.theme}\n                  isAnimated={isWA}\n                  variant=\"card\"\n                />\n              </div>\n            </AnimateRevealItem>\n          </HamptonHexVisual>\n        </BrandComponentThemeInline>\n      );\n    }\n  }\n);\n","export { default } from './cpm-component-definition';\n","type Props = React.PropsWithChildren<{\n  theme: 'light' | 'dark' | '';\n  enabled: boolean;\n}>;\n\nexport function HamptonHexVisual({ theme, enabled, children }: Props) {\n  if (enabled && theme === 'light') {\n    return (\n      <div className=\"relative\">\n        <svg\n          aria-hidden=\"true\"\n          data-testid=\"hampton-hex-light\"\n          className=\"invisible absolute right-0 top-0 w-4/6 max-w-3xl md:visible\"\n          viewBox=\"0 0 770 167\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            fill=\"#fff\"\n            d=\"M631.553 167a283.534 283.534 0 0 1-76.876-10.601L0 0h769.553v139.138l-61.09 17.226a283.773 283.773 0 0 1-76.91 10.601V167Z\"\n          />\n        </svg>\n\n        <div className=\"relative\">{children}</div>\n      </div>\n    );\n  }\n\n  if (enabled && theme === 'dark') {\n    return (\n      <div className=\"relative\">\n        <svg\n          aria-hidden=\"true\"\n          data-testid=\"hampton-hex-dark\"\n          className=\"invisible absolute right-0 top-0 w-4/6 max-w-3xl md:visible\"\n          viewBox=\"0 0 770 167\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            fill=\"#002666\"\n            d=\"M631.553 167a283.534 283.534 0 0 1-76.876-10.601L0 0h769.553v139.138l-61.09 17.226a283.773 283.773 0 0 1-76.91 10.601V167Z\"\n          />\n        </svg>\n\n        <div className=\"relative\">{children}</div>\n      </div>\n    );\n  }\n\n  return children;\n}\n","import { createCpmComponentDefinition, useCreateManageContentButton } from '@dx-ui/cpm-sdk';\nimport type { StructuredAsset } from '@dx-ui/cpm-sdk';\n\nimport { HalfAndHalf as HalfAndHalfOsc, HalfAndHalfCarousel } from '@dx-ui/osc-marketing';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport cx from 'classnames';\nimport { mapMultimediaListToVideoProps } from '@dx-ui/osc-video-player';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { HamptonHexVisual } from './HamptonHexVisual';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\nconst odd = (index: number) => index * 2 + 1;\nconst even = (index: number) => index * 2;\n\nexport function getForcedIndex(\n  index: number,\n  imageDisplay: 'left' | 'right' | 'alternate' | 'round' | 'none'\n) {\n  const isOddIndex = imageDisplay === 'right';\n  const isEvenIndex = imageDisplay === 'left';\n\n  return isOddIndex ? odd(index) : isEvenIndex ? even(index) : index;\n}\n\nconst transformImages = (imagesArray: StructuredAsset[]) => {\n  return imagesArray.map((image) => ({\n    alt: image.altText || '',\n    url: image.aspectRatios['3x2']?.url || '',\n    captionData:\n      image.caption || image.captionLink\n        ? {\n            caption: image.caption || '',\n            captionLink: image.captionLink || '',\n          }\n        : undefined,\n  }));\n};\n\nexport default createCpmComponentDefinition(\n  'Half & Half',\n\n  function mapData({ data, componentParams: { imageDisplay }, index, mappedPage }) {\n    // in order to lean all of the components left or right, we can force index\n    // of all items to be either odd or even\n    const forcedIndex = getForcedIndex(index, imageDisplay);\n    const asset = data.cpmAssets[0];\n    const assets = data.cpmAssets;\n    const filteredAssets =\n      assets?.filter((image): image is StructuredAsset => image !== undefined) || [];\n    const carouselImages = assets ? transformImages(filteredAssets) : undefined;\n\n    const imageUrl = asset?.aspectRatios['3x2']?.url ?? '';\n    const captionData = asset\n      ? {\n          captionLink: asset.captionLink,\n          caption: asset.caption,\n        }\n      : undefined;\n    const imageAltText = asset?.altText ?? '';\n    const videoData = data?.videos?.[0];\n    const video = videoData\n      ? {\n          source: videoData.source || '',\n          title: videoData?.name || '',\n          url: videoData.url,\n        }\n      : undefined;\n\n    const multimedia = data?.multimedia?.length\n      ? mapMultimediaListToVideoProps({ multimedia: data.multimedia, mappedPage })\n      : undefined;\n\n    const link = data.link;\n\n    return {\n      imageUrl,\n      captionData,\n      imageAltText,\n      carouselImages,\n      index: forcedIndex,\n      links: data.links,\n      headline: data?.headline ?? undefined,\n      description: data?.shortDescription ?? undefined,\n      media: {\n        multimedia,\n        video,\n      },\n      link:\n        link?.url && link.label\n          ? {\n              label: link.label,\n              url: link.url,\n              isNewWindow: link.isNewWindow || false,\n              adaDescription: link.adaDescription ?? '',\n              experimentationConfiguration: link.experimentationConfiguration,\n            }\n          : undefined,\n    };\n  },\n\n  function HalfAndHalf({ items = [], listData: data, componentParams, mappedPage: { brandCode } }) {\n    const createManageContentButton = useCreateManageContentButton();\n    const isLXR = brandCode === 'OL';\n\n    if (!items.length) {\n      return null;\n    }\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    const isDark = componentParams?.theme === 'dark';\n    const isLight = componentParams?.theme === 'light';\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <HamptonHexVisual\n          theme={componentParams.theme ?? ''}\n          enabled={brandCode === 'HP' && componentParams.backgroundIllustration === 'hx-hexagon'}\n        >\n          {data?.headline || data?.description ? (\n            <div\n              className={cx('container py-8 brand-wa:py-16 xl:py-12 brand-wa:xl:py-20', {\n                'text-left': componentParams.listTextAlign === 'left',\n                'text-center': componentParams.listTextAlign === 'center',\n                'text-right': componentParams.listTextAlign === 'right',\n              })}\n            >\n              {data?.headline && (\n                <BrandTextHeader\n                  className={cx({\n                    '!text-text-inverse': isDark,\n                    'brand-ht:text-text-inverse': isLight,\n                  })}\n                >\n                  {data?.headline}\n                </BrandTextHeader>\n              )}\n\n              {data?.description && (\n                <BrandTextBody\n                  className={cx('font-sans', {\n                    'text-text-inverse': isDark,\n                    'brand-ht:text-text-inverse': isLight,\n                  })}\n                  brandComponentTheme={componentParams.theme}\n                >\n                  {data?.description}\n                </BrandTextBody>\n              )}\n            </div>\n          ) : null}\n          {componentParams?.display === 'fullCarousel' ? (\n            <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={brandCode === 'GU'}>\n              <HalfAndHalfCarousel\n                isReverse={isLXR}\n                brandComponentTheme={componentParams.theme}\n                id={data?.id ?? ''}\n                hasParallax={isLXR}\n                carouselItems={itemsWithManageContentButton}\n                index={componentParams.imageDisplay === 'right' ? 1 : 0}\n                isFullScreen={componentParams.noMargin ? true : false}\n                mediaRatio={componentParams?.mediaRatio}\n              />\n            </AnimateRevealItem>\n          ) : null}\n          {componentParams?.display !== 'fullCarousel'\n            ? itemsWithManageContentButton.map((item) => {\n                return (\n                  <AnimateRevealItem\n                    key={`${item.index}-${item?.headline}`}\n                    delay={0}\n                    animationType=\"fade-in-up\"\n                    isAnimated={brandCode === 'GU'}\n                  >\n                    <HalfAndHalfOsc\n                      brandComponentTheme={componentParams.theme}\n                      id={data?.id ?? ''}\n                      hasParallax={isLXR}\n                      hasImageCarousel={componentParams?.display === 'imageCarousel'}\n                      isFullScreen={componentParams.noMargin ? true : false}\n                      mediaRatio={componentParams?.mediaRatio}\n                      {...item}\n                    />\n                  </AnimateRevealItem>\n                );\n              })\n            : null}\n        </HamptonHexVisual>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { createCpmComponentDefinition, useCreateManageContentButton } from '@dx-ui/cpm-sdk';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { ImageHeadliner, ImageHeadlinerItem } from '@dx-ui/osc-marketing';\n\nexport default createCpmComponentDefinition(\n  'Image Headliner',\n\n  function mapData({ data }) {\n    const { headline, link } = data;\n\n    const asset = data.cpmAssets?.[0];\n\n    const imageUrl = asset?.aspectRatios['3x2']?.url;\n    const imageAltText = asset?.altText;\n\n    return {\n      headline,\n      id: `ImageHeadlinerItem-${data.id}`,\n      imageAltText,\n      imageUrl,\n      link: link?.url ? link : undefined,\n      links: data.links,\n    };\n  },\n\n  function CpmImageHeadliner({ items = [], componentParams, mappedPage: { brandCode } }) {\n    const createManageContentButton = useCreateManageContentButton();\n\n    if (!items.length) {\n      return null;\n    }\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    return (\n      <BrandComponentThemeInline componentParams={componentParams} brandCode={brandCode}>\n        <ImageHeadliner brandComponentTheme={componentParams?.theme}>\n          {itemsWithManageContentButton.map((props, index) => (\n            <ImageHeadlinerItem\n              key={props.id}\n              headline={props.headline}\n              id={props.id}\n              imageAltText={props.imageAltText}\n              imageUrl={props.imageUrl}\n              link={props.link}\n              index={index}\n              brandComponentTheme={componentParams?.theme}\n              cmsDocumentControl={props.cmsDocumentControl}\n              cmsTranslationClasses={props.cmsTranslationClasses}\n            />\n          ))}\n        </ImageHeadliner>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import type * as React from 'react';\nimport { useRef } from 'react';\nimport cx from 'classnames';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport type { VideoPlayerProps } from '@dx-ui/osc-video-player';\nimport {\n  Video,\n  VideoCaptions,\n  VideoControls,\n  VideoPlayerMarkup,\n  VideoTranscript,\n  useVideoPlayer,\n} from '@dx-ui/osc-video-player';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { Link as LinkType } from '@dx-ui/osc-link';\nimport Image from 'next/image';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\n\ntype VideoType = React.ComponentProps<typeof Video>;\n\nexport type HeroVideoType = VideoPlayerProps &\n  Pick<VideoType, 'posterImageUrl'> & {\n    videoElement?: VideoType['videoElement'];\n    /**\n     * CPM ONLY: Dark color theme or Light color theme.\n     */\n    brandComponentTheme?: CmsBrandComponentTheme;\n    /**\n     * Text content box alignment, center is default\n     */\n    alignContent?: CmsAlignContent;\n    /**\n     * Main headline of component\n     */\n    headline?: string;\n    /**\n     * Similar to a subheadline\n     */\n    shortDescription?: string;\n    /**\n     * Provides the long description\n     */\n    longDescription?: string | null;\n    /**\n     * OSC-Link\n     */\n    link?: (LinkType & { experimentationConfiguration?: CmsExperimentationConfiguration }) | null;\n    /**\n     * Allows animations to run when true, CMS option, default 'false'\n     */\n    isAnimated?: boolean;\n    /**\n     * Used to add or remove Horizontal Line between content, default 'false'\n     */\n    hasHorizontalLine?: boolean;\n    /**\n     * Small image icon in the upper left corner\n     */\n    badgeImageUrl?: string | null;\n    /**\n     * Small image icon alt text\n     */\n    badgeImageAltText: string;\n    /**\n     * Caption data\n     */\n    videoCaptionData?: VideoType['captionData'];\n    /**\n     * Markup schema\n     */\n    markupSchemas?: React.ComponentProps<typeof VideoPlayerMarkup>['markupSchemas'];\n    /**\n     * Space for a brand specific illustration overlay component\n     */\n    illustrationOverlay?: React.ReactNode;\n    /**\n     * Only for loops and cinemagraphs\n     */\n    altText?: string;\n    /**\n     * Show / Hide the volume button\n     */\n    isMuted?: boolean;\n  };\n\n/**\n * **Formerly Masthead with Video**\n *\n * The HeroVideo is a full screen width video from Cloudinary with video controls, optional added content, option badge icon, and optional gallery button.\n */\nexport const HeroVideo: React.FC<HeroVideoType> = ({\n  brandComponentTheme,\n  headline,\n  link,\n  shortDescription,\n  longDescription,\n  alignContent = 'center',\n  isAnimated = false,\n  hasHorizontalLine = false,\n  badgeImageAltText,\n  badgeImageUrl,\n  videoUrl,\n  videoGroup,\n  videoLabel,\n  videoName,\n  posterImageUrl,\n  isAutoPlay = true,\n  videoCaptionData,\n  audioTracks,\n  captionTracks,\n  transcriptTracks,\n  markupSchemas,\n  illustrationOverlay,\n  altText,\n  isMuted,\n}) => {\n  const wrapperElement = useRef<React.ElementRef<'div'>>(null);\n  const { ref: intersectionRef, isIntersecting: inView } = useIntersectionObserver({\n    threshold: [0.15],\n    freezeOnceVisible: true,\n  });\n  const attachedContentAnimate = !getIsReducedMotion() && isAnimated ? intersectionRef : null;\n  const hasAudio = !altText && !isMuted;\n  const { videoProps, videoCaptionProps, videoControlsProps, videoTranscriptProps } =\n    useVideoPlayer({\n      audioTracks,\n      captionTracks,\n      hasAudio,\n      isAutoPlay,\n      transcriptTracks,\n      videoGroup,\n      videoLabel,\n      videoName,\n      videoUrl,\n      wrapperElement,\n    });\n  const hasActiveTranscript = Boolean(videoTranscriptProps?.activeTranscript);\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isCenter = alignContent === 'center';\n  const isLeft = alignContent === 'left';\n  const isRight = alignContent === 'right';\n\n  return (\n    <div\n      ref={wrapperElement}\n      data-testid=\"heroVideoContainer\"\n      className={cx(\n        'brand-nd:bg-bg brand-ou:bg-bg-light @container/hero-video brand-gu:bg-quarternary relative block w-full overflow-hidden',\n        {\n          'bg-bg brand-ey:bg-bg-light brand-qq:bg-bg-light brand-ou:bg-secondary': isDark,\n          'bg-bg-light brand-hi-refresh:bg-bg brand-lx:bg-bg brand-ht:bg-bg brand-ou:bg-secondary':\n            isLight,\n        }\n      )}\n    >\n      {markupSchemas ? <VideoPlayerMarkup markupSchemas={markupSchemas} /> : null}\n      <div className=\"relative\">\n        <Video\n          videoUrl={videoUrl}\n          posterImageUrl={posterImageUrl}\n          videoId=\"hero-video\"\n          captionData={videoCaptionData}\n          isAutoPlay={isAutoPlay}\n          role={altText ? 'img' : undefined}\n          aria-label={altText ? altText : undefined}\n          {...videoProps}\n        />\n        <VideoCaptions\n          {...videoCaptionProps}\n          className={cx(\n            'absolute bottom-8 left-1/2 z-10 mx-auto w-[calc(100%-2rem)] -translate-x-1/2 text-center',\n            {\n              '@[640px]/hero-video:bottom-28 @[1280px]/hero-video:bottom-40 @[640px]/hero-video:w-full @[640px]/hero-video:max-w-48 @[1024px]/hero-video:max-w-lg @[640px]/hero-video:mb-1':\n                !isRight,\n              '@[640px]/hero-video:bottom-44 @[1280px]/hero-video:bottom-56 @[640px]/hero-video:max-w-fit':\n                isRight,\n            }\n          )}\n          brandComponentTheme={brandComponentTheme}\n        />\n      </div>\n      <div className=\"flex\">\n        {badgeImageUrl ? (\n          <div className=\"absolute top-8 ms-5 aspect-square h-24 sm:h-44 xl:ms-10 xl:h-52\">\n            <Image className=\"object-contain\" src={badgeImageUrl} alt={badgeImageAltText} fill />\n          </div>\n        ) : null}\n      </div>\n      <div className=\"brand-wa:pb-16 brand-wa:xl:pb-20 container relative z-10 pb-8 xl:pb-12\">\n        <div className=\"@[640px]/hero-video:-mt-40 @[1280px]/hero-video:-mt-52 relative -mt-6\">\n          <div\n            className={cx('sm:flex', {\n              'sm:max-w-xl 2xl:max-w-2xl sm:ms-auto': isRight && !hasActiveTranscript,\n            })}\n          >\n            <VideoControls\n              videoVariant={!!altText ? 'cinemagraph' : undefined}\n              {...videoControlsProps}\n              className=\"@[640px]/hero-video:mb-5 mb-2 flex justify-center\"\n              brandComponentTheme={brandComponentTheme}\n            />\n          </div>\n          <VideoTranscript\n            className=\"mb-5 shadow-lg\"\n            {...videoTranscriptProps}\n            brandComponentTheme={brandComponentTheme}\n          />\n          {headline || shortDescription || longDescription || link ? (\n            <div\n              data-testid=\"heroVideoTextBoxContainer\"\n              ref={attachedContentAnimate}\n              className={cx(\n                'bg-bg image-corner-radius mt-0 px-6 py-8 shadow-lg sm:px-12 xl:px-16 xl:py-12',\n                {\n                  'brand-ey:bg-bg-light brand-gu:bg-quarternary brand-ou:bg-secondary':\n                    !isDark && !isLight,\n                  'bg-bg-dark': isDark,\n                  'bg-bg-light brand-ey:bg-bg brand-es:bg-bg': isLight,\n                  'sm:max-w-xl 2xl:max-w-2xl': isRight || isLeft,\n                  'ms-auto': isRight,\n                }\n              )}\n            >\n              {headline ? (\n                <BrandTextHeader\n                  className={cx(\n                    'heading-4xl sm:heading-5xl whitespace-normal text-center delay-150',\n                    {\n                      'sm:text-left lg:heading-5xl': isLeft || isRight,\n                      'sm:text-center lg:heading-6xl': isCenter,\n                      '!text-text-inverse': isDark,\n                      'brand-ht:text-text-inverse': isLight,\n                      'opacity-100 translate-y-0': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                      'pb-2': hasHorizontalLine && !shortDescription,\n                    }\n                  )}\n                >\n                  {headline}\n                </BrandTextHeader>\n              ) : null}\n\n              {shortDescription ? (\n                <BrandTextBody\n                  className={cx(\n                    'text-text-alt brand-qq:!text-sm brand-qq:2xl:!text-base brand-qq:tracking-[.25em] brand-qq:uppercase pb-3 text-center font-sans !text-xl font-bold delay-300',\n                    {\n                      'sm:text-left': isLeft || isRight,\n                      'sm:text-center': isCenter,\n                      'text-text-inverse': isDark,\n                      'brand-ht:text-text-inverse': isLight,\n                      'brand-es:text-primary brand-gu:text-primary brand-lx:text-primary brand-nd:text-primary brand-ou:text-primary brand-qq:text-primary':\n                        !isDark,\n                      'opacity-100 translate-y-0': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                    }\n                  )}\n                  brandComponentTheme={brandComponentTheme}\n                >\n                  {shortDescription}\n                </BrandTextBody>\n              ) : null}\n\n              {hasHorizontalLine ? (\n                <hr\n                  className={cx(\n                    'border-text-alt brand-qq:border-t-2 brand-qq:border-[#cccccc] translate-y-2 border-t pb-6',\n                    {\n                      'border-text-inverse brand-qq:border-text-inverse brand-ou:border-secondary':\n                        isDark,\n                      'brand-ht:border-text-inverse': isLight,\n                      'opacity-100 translate-y-0': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                    }\n                  )}\n                />\n              ) : null}\n\n              {longDescription ? (\n                <BrandTextBody\n                  className={cx(\n                    'text-text brand-qq:text-primary brand-qq:!text-base brand-qq:2xl:!text-xl whitespace-normal pb-5 text-center !text-xl font-normal tracking-normal sm:pb-6 xl:pb-8',\n                    {\n                      'sm:text-left': isLeft || isRight,\n                      'sm:text-center': isCenter,\n                      'text-text-inverse brand-qq:text-text-inverse': isDark,\n                      'brand-ht:text-text-inverse': isLight,\n                      'opacity-100 translate-y-0': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                    }\n                  )}\n                  brandComponentTheme={brandComponentTheme}\n                >\n                  {longDescription}\n                </BrandTextBody>\n              ) : null}\n\n              {link ? (\n                <div\n                  className={cx('p-0 text-center delay-700', {\n                    'sm:text-left': isLeft || isRight,\n                    'sm:text-center': isCenter,\n                    'opacity-100 translate-y-0': inView && isAnimated,\n                    'translate-y-4': !inView && isAnimated,\n                    'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                      isAnimated,\n                  })}\n                >\n                  <BrandLink\n                    label={link.label}\n                    isNewWindow={link.isNewWindow}\n                    showNewWindowIcon={link.isNewWindow}\n                    url={link.url}\n                    brandComponentTheme={brandComponentTheme}\n                    data-conductrics-goal={link.experimentationConfiguration?.goal}\n                    data-conductrics-value={link.experimentationConfiguration?.value}\n                  />\n                </div>\n              ) : null}\n            </div>\n          ) : null}\n        </div>\n      </div>\n      {illustrationOverlay}\n    </div>\n  );\n};\n\nexport default HeroVideo;\n","export * from './lib/hero-video';\n","import { useRef } from 'react';\nimport cx from 'classnames';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { useTranslation } from 'next-i18next';\nimport { ResponsiveImage, getCurrentAspectRatioAndUrl } from '@dx-ui/osc-responsive-image';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { Link as LinkType } from '@dx-ui/osc-link';\nimport Image from 'next/image';\nimport { useRect } from '@dx-ui/utilities-use-rect';\n\nexport const isReducedMotion =\n  typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n    ? window.matchMedia('(prefers-reduced-motion: reduce)').matches\n    : true;\n\nexport type HeroTextOverlayProps = {\n  /**\n   * Dark opacity or Light opacity or none.\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /**\n   * Caption link and text\n   */\n  captionData?: CaptionProps;\n  /**\n   * Text content box alignment, center is default\n   */\n  alignContent?: CmsAlignContent;\n  /**\n   * Main headline of component\n   */\n  headline?: string;\n  /**\n   * Similar to subheadline\n   */\n  shortDescription?: string;\n  /**\n   * Provides the long description\n   */\n  longDescription?: string | null;\n  /**\n   * OSC-Link\n   */\n  link?: (LinkType & { experimentationConfiguration?: CmsExperimentationConfiguration }) | null;\n  /**\n   * Allows animations to run when true, CMS option\n   */\n  isAnimated?: boolean;\n  /**\n   * Alternative text of the Image (a11y)\n   */\n  imageAltText: string;\n  aspectRatios?: {\n    /**\n     * Aspect Ratio of the Image at 1280px +\n     */\n    desktop?: AspectRatio;\n    /**\n     * Aspect Ratio of the Image at 640px - 1280px\n     */\n    tablet?: AspectRatio;\n    /**\n     * Aspect Ratio of the Image at 0px - 640px\n     */\n    mobile?: AspectRatio;\n  };\n  /**\n   * Image URLs.\n   */\n  image: {\n    /**\n     * URL of the Image at 1280px +\n     */\n    desktopUrl: string;\n    /**\n     * URL of the Image at 0px - 1280px\n     */\n    mobileUrl: string;\n  };\n  /**\n   * Small image icon in the upper left corner\n   */\n  badgeImageUrl?: string | null;\n  /**\n   * Small image icon alt text\n   */\n  badgeImageAltText: string;\n  /**\n   * Opens a gallery of additional images/information\n   */\n  hasGalleryButton?: boolean;\n  brandLinkMetricsOnClick?: () => void;\n  captionMetricsOnClick?: () => void;\n};\n\n/**\n * Hero-Text Overlay is a full screen width image with text overlay which includes text, CTA and optional caption. If no additional content, only image will appear.\n */\nexport const HeroTextOverlay = ({\n  captionData,\n  image,\n  imageAltText,\n  alignContent = 'center',\n  headline,\n  shortDescription,\n  longDescription,\n  link,\n  isAnimated = false,\n  badgeImageAltText,\n  badgeImageUrl,\n  hasGalleryButton = false,\n  aspectRatios = { desktop: '16:9', tablet: '1:1', mobile: '9:16' },\n  brandComponentTheme,\n  brandLinkMetricsOnClick,\n  captionMetricsOnClick,\n}: HeroTextOverlayProps) => {\n  const { t } = useTranslation('osc-hero-text-overlay');\n  const { ref: intersectionRef, isIntersecting: inView } = useIntersectionObserver({\n    threshold: [0.15],\n    freezeOnceVisible: true,\n  });\n  const attachedContentAnimate = !isReducedMotion && isAnimated ? intersectionRef : null;\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const { desktopUrl: desktopImageUrl, mobileUrl: mobileImageUrl } = image;\n  const {\n    desktop: desktopAspectRatio,\n    tablet: tabletAspectRatio,\n    mobile: mobileAspectRatio,\n  } = aspectRatios;\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isCenter = alignContent === 'center';\n  const isLeft = alignContent === 'left';\n  const isRight = alignContent === 'right';\n\n  if (!desktopImageUrl || !mobileImageUrl) {\n    return null;\n  }\n\n  const { imageUrl, aspectRatio } = getCurrentAspectRatioAndUrl({\n    width: rect?.width || 0,\n    imageUrlMobile: mobileImageUrl,\n    imageUrlTablet: mobileImageUrl,\n    imageUrlDesktop: desktopImageUrl,\n    aspectRatioMobile: mobileAspectRatio,\n    aspectRatioTablet: tabletAspectRatio,\n    aspectRatioDesktop: desktopAspectRatio,\n  });\n\n  return (\n    <div\n      ref={ref}\n      data-testid=\"heroTextOverlayContainer\"\n      className={cx('brand-qq:bg-bg-light relative overflow-hidden bg-transparent', {\n        'bg-bg-light': isLight,\n        'bg-bg-dark': isDark,\n      })}\n    >\n      <figure className=\"absolute w-full\">\n        <ResponsiveImage\n          imageUrl={imageUrl}\n          aspectRatio={aspectRatio}\n          altText={imageAltText}\n          width={rect?.width ?? 0}\n        />\n        <div className=\"absolute inset-0\">\n          <div\n            data-testid=\"heroOverlayClassTest\"\n            className={cx('bg-bg/70 size-full', {\n              'bg-bg-inverse/60': isDark,\n              'bg-bg/70 brand-ch:bg-bg/80 brand-py:bg-bg/80': isLight,\n            })}\n          />\n        </div>\n        {captionData?.caption ? (\n          <Caption\n            caption={captionData?.caption}\n            captionLink={captionData?.captionLink}\n            metricsOnClick={captionMetricsOnClick}\n          />\n        ) : null}\n      </figure>\n\n      <div className=\"relative inset-0 mt-20 pb-20\">\n        {badgeImageUrl || hasGalleryButton ? (\n          <div className=\"relative flex h-20 justify-between px-5 sm:h-24 md:h-44 xl:h-52\">\n            {badgeImageUrl ? (\n              <div className=\"relative aspect-square h-20 sm:h-24 md:h-44 xl:ms-5 xl:h-52\">\n                <Image\n                  className=\"object-contain\"\n                  data-testid=\"badgeImage\"\n                  src={badgeImageUrl}\n                  alt={badgeImageAltText}\n                  fill\n                />\n              </div>\n            ) : null}\n\n            {hasGalleryButton ? (\n              <div className=\"absolute ltr:right-5 ltr:xl:right-10 rtl:left-5 rtl:xl:left-10\">\n                <button\n                  type=\"button\"\n                  className={cx(\n                    'btn btn-sm btn-primary brand-ol:rounded-none brand-qq:rounded-none brand-wa:rounded-none brand-wa:font-normal brand-wa:uppercase',\n                    {\n                      'btn btn-primary-outline bg-bg hover:bg-bg-alt border-0': isDark,\n                    }\n                  )}\n                >\n                  <div className=\"container px-0\">\n                    {t('galleryButton')}\n                    <svg\n                      className={cx('inline max-h-4 pl-1 pr-3 rtl:pl-3 rtl:pr-1', {\n                        'fill-text-inverse': isLight,\n                        'fill-primary': isDark,\n                        'fill-bg': brandComponentTheme === undefined,\n                      })}\n                      viewBox=\"0 0 24 24\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                      <path d=\"m0 0v24h24v-24z\" fill=\"none\" />\n                      <rect height=\"9\" rx=\"1.5\" width=\"9\" x=\"4.5\" y=\"10.5\" />\n                      <path d=\"m16 16.5c.28 0 .5-.22.5-.5v-6c0-1.38-1.12-2.5-2.5-2.5h-6c-.28 0-.5.22-.5.5s.22.5.5.5h6c.83 0 1.5.67 1.5 1.5v6c0 .28.22.5.5.5z\" />\n                      <path d=\"m19 13.5c.28 0 .5-.22.5-.5v-6c0-1.38-1.12-2.5-2.5-2.5h-6c-.28 0-.5.22-.5.5s.22.5.5.5h6c.83 0 1.5.67 1.5 1.5v6c0 .28.22.5.5.5z\" />\n                    </svg>\n                  </div>\n                </button>\n              </div>\n            ) : null}\n          </div>\n        ) : null}\n\n        <div className=\"relative block w-full\">\n          <div\n            data-testid=\"heroTextContainerTestClass\"\n            ref={attachedContentAnimate}\n            className={cx('container sm:max-w-xl md:max-w-3xl lg:max-w-5xl xl:max-w-7xl', {\n              'justify-end': isRight,\n              'justify-start': isLeft,\n              'justify-center': isCenter,\n            })}\n          >\n            {shortDescription ? (\n              <BrandTextBody\n                className={cx(\n                  'text-primary pb-3 text-center font-sans text-xl font-bold delay-150 sm:!text-3xl',\n                  {\n                    'sm:text-left': isLeft,\n                    'sm:text-right': isRight,\n                    'sm:text-center': isCenter,\n                    'text-text-inverse': isDark,\n                    'opacity-100 translate-y-0': inView && isAnimated,\n                    'translate-y-4': !inView && isAnimated,\n                    'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                      isAnimated,\n                  }\n                )}\n                brandComponentTheme={brandComponentTheme}\n              >\n                {shortDescription}\n              </BrandTextBody>\n            ) : null}\n\n            {headline ? (\n              <BrandTextHeader\n                className={cx(\n                  'xl:!heading-6xl sm:!heading-4xl heading-2xl 2xl:heading-7xl whitespace-normal break-words pb-2 text-center delay-300',\n                  {\n                    'sm:text-left': isLeft,\n                    'sm:text-right': isRight,\n                    'sm:text-center': isCenter,\n                    '!text-text-inverse brand-ou:!text-text-inverse': isDark,\n                    'opacity-100 translate-y-0': inView && isAnimated,\n                    'translate-y-4': !inView && isAnimated,\n                    'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                      isAnimated,\n                  }\n                )}\n              >\n                {headline}\n              </BrandTextHeader>\n            ) : null}\n\n            {longDescription ? (\n              <BrandTextBody\n                className={cx(\n                  'brand-ou:font-normal whitespace-normal pb-5 text-center text-xl font-bold tracking-normal delay-500 sm:pb-6 sm:!text-2xl xl:pb-8 xl:!text-4xl',\n                  {\n                    'sm:text-left': isLeft,\n                    'sm:text-right': isRight,\n                    'sm:text-center': isCenter,\n                    'text-text-inverse': isDark,\n                    'opacity-100 translate-y-0': inView && isAnimated,\n                    'translate-y-4': !inView && isAnimated,\n                    'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                      isAnimated,\n                  }\n                )}\n                brandComponentTheme={brandComponentTheme}\n              >\n                {longDescription}\n              </BrandTextBody>\n            ) : null}\n\n            {link ? (\n              <div\n                className={cx('p-0 text-center delay-700', {\n                  'sm:text-left': isLeft,\n                  'sm:text-right': isRight,\n                  'sm:text-center': isCenter,\n                  'opacity-100 translate-y-0': inView && isAnimated,\n                  'translate-y-4': !inView && isAnimated,\n                  'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                    isAnimated,\n                })}\n              >\n                <BrandLink\n                  label={link.label}\n                  isNewWindow={link.isNewWindow}\n                  showNewWindowIcon={link.isNewWindow}\n                  url={link.url}\n                  brandComponentTheme={brandComponentTheme}\n                  data-conductrics-goal={link.experimentationConfiguration?.goal}\n                  data-conductrics-value={link.experimentationConfiguration?.value}\n                  anchorClassName={cx('xl:btn-2xl', {\n                    'border-none': isDark,\n                    'brand-ht:!btn-primary brand-ht:!text-text-inverse': isLight,\n                  })}\n                  metricsOnClick={brandLinkMetricsOnClick}\n                />\n              </div>\n            ) : null}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","export * from './lib/hero-text-overlay';\n","let prefersReducedMotion: boolean | null = null;\nexport const getPrefersReducedMotion = () => {\n  if (prefersReducedMotion === null) {\n    prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  }\n  return prefersReducedMotion;\n};\n","import { type PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport { getPrefersReducedMotion } from './get-prefers-reduced-motion';\nimport { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport { useMediaQuery, useIntersectionObserver } from 'usehooks-ts';\nimport Image from 'next/image';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport { overrideImageUrl } from '@dx-ui/osc-responsive-image';\nimport { VideoControls, VideoPlayerMarkup, useVideoPlayer } from '@dx-ui/osc-video-player';\nimport { type HeroVideo } from '@dx-ui/osc-hero-video';\n\ntype OscDomLink = {\n  adaDescription: string;\n  isNewWindow: boolean;\n  label: string;\n  url: string;\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\ntype ContentBlock =\n  | { cta: OscDomLink | null; markdown: string }\n  | {\n      cta: OscDomLink | null;\n      headline: string;\n      description: string;\n    };\n\nconst getIsWindowVerticallySmall = () => window.innerHeight < 700;\n\nfunction Content({\n  content,\n  brandComponentTheme,\n}: {\n  content: ContentBlock;\n  brandComponentTheme: CmsBrandComponentTheme | undefined;\n}) {\n  const isDark = brandComponentTheme === 'dark';\n\n  if ('markdown' in content) {\n    return (\n      <div\n        className={cx(\n          'text-text brand-wa:font-serif relative mb-8 mt-4 w-full text-center lg:mt-6 lg:text-xl',\n          {\n            'brand-ey:text-text-inverse brand-gu:text-text-inverse': isDark,\n          }\n        )}\n      >\n        <CustomMarkdown brandComponentTheme={brandComponentTheme}>\n          {content.markdown}\n        </CustomMarkdown>\n      </div>\n    );\n  } else {\n    return (\n      <div className={cx('relative mt-4 w-full text-center')}>\n        <CustomMarkdown brandComponentTheme={brandComponentTheme}>\n          {content.headline}\n        </CustomMarkdown>\n        <div\n          className={cx('text-text brand-wa:font-serif mb-8 mt-4 text-center lg:mt-6 lg:text-xl', {\n            'brand-es:text-text-inverse brand-ey:text-text-inverse brand-gu:text-text-inverse brand-hi-refresh:text-text-inverse brand-nd:text-text-inverse':\n              isDark,\n          })}\n        >\n          <CustomMarkdown brandComponentTheme={brandComponentTheme}>\n            {content.description}\n          </CustomMarkdown>\n        </div>\n      </div>\n    );\n  }\n}\n\ntype CardContentAreaProps = {\n  animationPercent: number;\n  content: ContentBlock;\n  brandComponentTheme: CmsBrandComponentTheme | undefined;\n  brandLinkMetricsOnClick?: () => void;\n} & PropsWithChildren;\nconst CardContentArea = ({\n  animationPercent,\n  content,\n  brandComponentTheme,\n  children,\n  brandLinkMetricsOnClick,\n}: CardContentAreaProps) => {\n  const [isFocused, setIsFocused] = useState(false);\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      className={cx('bg-bg-alt brand-ou:bg-secondary m-auto max-w-full p-12', {\n        'motion-safe:animate-fadeInUp': animationPercent > 0.45 || isFocused,\n        'motion-safe:animate-fadeOutUp motion-safe:opacity-0':\n          animationPercent <= 0.45 && !isFocused,\n        'brand-ey:bg-bg-light brand-gu:bg-bg brand-hi-refresh:bg-bg-light brand-nd:bg-bg-light':\n          isLight,\n        'brand-es:!bg-bg-dark brand-ey:!bg-bg-dark brand-gu:bg-bg-dark brand-hi-refresh:bg-bg-dark brand-nd:bg-bg-dark':\n          isDark,\n        'brand-ey:bg-bg brand-gu:bg-quarternary brand-hi-refresh:bg-bg brand-nd:bg-bg':\n          !isDark && !isLight,\n        'brand-es:bg-bg': !isDark,\n      })}\n    >\n      {children}\n      <div className=\"flex w-full items-center justify-center\">\n        {content.cta && content.cta.label && content.cta.url ? (\n          <BrandLink\n            label={content.cta.label}\n            isNewWindow={content.cta.isNewWindow}\n            showNewWindowIcon={content.cta.isNewWindow}\n            url={content.cta.url}\n            brandComponentTheme={brandComponentTheme}\n            data-conductrics-goal={content.cta.experimentationConfiguration?.goal}\n            data-conductrics-value={content.cta.experimentationConfiguration?.value}\n            onFocus={() => {\n              setIsFocused(true);\n            }}\n            onBlur={() => {\n              setIsFocused(false);\n            }}\n            metricsOnClick={brandLinkMetricsOnClick}\n          />\n        ) : null}\n      </div>\n    </div>\n  );\n};\n\ntype ScrollAnimationProps = {\n  primaryCTA?: {\n    adaDescription: string;\n    isNewWindow: boolean;\n    label: string;\n    url: string;\n  };\n  headline: string;\n  shortDescription?: string;\n  longDescription?: string;\n  video?: Pick<\n    React.ComponentProps<typeof HeroVideo>,\n    'markupSchemas' | 'videoUrl' | 'isAutoPlay' | 'videoName'\n  >;\n  content: ContentBlock | undefined;\n  textAlign?: 'left' | 'right' | 'center';\n  image?: {\n    altText: string;\n    desktopUrl: string;\n    mobileUrl: string;\n  };\n  brandComponentTheme?: CmsBrandComponentTheme;\n  brandLinkMetricsOnClick?: () => void;\n};\n\nexport const ScrollAnimation = ({\n  headline,\n  primaryCTA,\n  shortDescription,\n  longDescription,\n  video,\n  content,\n  image,\n  textAlign = 'center',\n  brandComponentTheme,\n  brandLinkMetricsOnClick,\n}: ScrollAnimationProps) => {\n  const triggerRef = useRef<HTMLDivElement | null>(null);\n  const videoContainerRef = useRef<HTMLDivElement>(null);\n  const [animationPercent, setAnimationPercent] = useState(0);\n  const [showInitialContent, setShowInitialContent] = useState(false);\n  const [shouldAnimateWindow, setShouldAnimateWindow] = useState(false);\n  const videoUrl = video?.videoUrl || '';\n  const { videoProps, videoControlsProps } = useVideoPlayer({\n    videoName: video?.videoName,\n    videoUrl,\n    isAutoPlay: video?.isAutoPlay ?? true,\n    wrapperElement: videoContainerRef,\n    shouldControlsRemainVisible: true,\n    hasAudio: false,\n  });\n\n  const normalise = (val: number, max: number) => val / max;\n\n  const getXOffset = () => {\n    return Math.min(animationPercent, 1) * 100;\n  };\n  const getYOffset = () => {\n    return Math.min(animationPercent, 1) * 200;\n  };\n\n  const getBorderWidth = () => {\n    return `${shouldAnimateWindow ? getXOffset() : 0}px ${\n      shouldAnimateWindow ? getYOffset() : 0\n    }px`;\n  };\n\n  const getButtonOffset = () => {\n    return {\n      start: isMobile ? '20px' : `${shouldAnimateWindow ? 50 + getYOffset() : 40}px`,\n      top: isMobile ? '20px' : `${shouldAnimateWindow ? 40 + getXOffset() : 40}px`,\n    };\n  };\n\n  const { ref: inViewRef, isIntersecting: inView } = useIntersectionObserver({\n    threshold: 0,\n  });\n\n  const isMobile = useMediaQuery('(max-width: 768px)');\n\n  useEffect(() => {\n    const reduceMotion = getPrefersReducedMotion();\n    const verticallySmall = getIsWindowVerticallySmall();\n\n    if (!reduceMotion) {\n      document.documentElement.style.scrollBehavior = 'smooth';\n    }\n    if (reduceMotion || verticallySmall || isMobile) {\n      setShowInitialContent(true);\n    } else {\n      setShouldAnimateWindow(true);\n    }\n    setTimeout(() => {\n      setShowInitialContent(true);\n    }, 1500);\n    // no exhaustive dependencies needed, this should only run on first render\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    const handleScroll = () => {\n      if (!showInitialContent) setShowInitialContent(true);\n      if (inView && videoContainerRef?.current && triggerRef?.current) {\n        const triggerRect = triggerRef.current.getBoundingClientRect();\n        const videoRect = videoContainerRef.current.getBoundingClientRect();\n\n        const videoHeight = videoRect.bottom - videoRect.top;\n        const delta = Math.max(videoRect.bottom - triggerRect.bottom, 0);\n\n        const animationPercent = normalise(delta, videoHeight);\n\n        setAnimationPercent(animationPercent * 1.5);\n      }\n    };\n\n    const handleResize = () => {\n      if (getIsWindowVerticallySmall() || isMobile) {\n        setShouldAnimateWindow(false);\n      }\n    };\n\n    window.addEventListener('scroll', handleScroll);\n    window.addEventListener('resize', handleResize);\n\n    return () => {\n      window.removeEventListener('scroll', handleScroll);\n      window.removeEventListener('resize', handleResize);\n    };\n  }, [inView, triggerRef, isMobile, showInitialContent]);\n\n  // This is so we can put the inView ref and an HTML element ref on the same element\n  const setRefs = useCallback(\n    (node: HTMLDivElement) => {\n      triggerRef.current = node;\n      inViewRef(node);\n    },\n    [inViewRef]\n  );\n\n  return (\n    <div className=\"relative mb-40 md:mb-0\">\n      {video?.markupSchemas ? <VideoPlayerMarkup markupSchemas={video.markupSchemas} /> : null}\n\n      <div className=\"z-2 sticky top-0 block h-screen w-px\">\n        {video?.videoUrl ? (\n          <div\n            style={{\n              insetInlineStart: getButtonOffset().start,\n              top: getButtonOffset().top,\n            }}\n            className=\"absolute size-12\"\n          >\n            <VideoControls {...videoControlsProps} />\n          </div>\n        ) : null}\n      </div>\n      {/* Video / Image and Windowing animation area */}\n      <div ref={videoContainerRef} className=\"z-1 sticky top-0 mt-[-100vh] block h-screen\">\n        <div\n          style={{\n            opacity: `${0.7 - Math.min(animationPercent, 1) * 0.7}`,\n            borderWidth: getBorderWidth(),\n          }}\n          className=\"z-1 bg-bg-inverse border-bg absolute size-full\"\n        />\n        <div className={cx('sticky top-0 z-0 block ')}>\n          {videoUrl ? (\n            <video\n              ref={videoProps.videoElement}\n              className=\"h-screen w-screen object-cover object-center\"\n              data-testid=\"background-video\"\n              title={video?.videoName}\n              muted\n              loop\n            >\n              <source data-testid=\"masthead-background-video__track\" src={videoUrl} />\n            </video>\n          ) : null}\n          {!videoUrl && image?.desktopUrl ? (\n            <div className=\"h-screen w-screen\">\n              <Image\n                priority\n                fill\n                alt={image.altText}\n                className=\"hidden object-cover object-center md:block\"\n                src={image.desktopUrl}\n                unoptimized={true}\n              />\n              <Image\n                priority\n                fill\n                alt={image.altText}\n                className=\"block object-cover md:hidden\"\n                src={overrideImageUrl(image.mobileUrl, 600, 500)}\n                unoptimized={true}\n              />\n            </div>\n          ) : null}\n        </div>\n        <div\n          // Windowing effect\n          style={{\n            borderWidth: getBorderWidth(),\n          }}\n          className=\"brand-ou:border-secondary border-bg absolute inset-0 z-0 h-screen w-full overflow-hidden border-solid will-change-transform\"\n        />\n      </div>\n\n      {/* Use this invisible element to take overlap measurements against the video container element. Can add border to debug position. */}\n      <div ref={setRefs} id=\"observerTrigger\" className=\"z-1 relative h-0\" />\n      <div\n        className={cx('z-1 absolute top-0 w-full', {\n          invisible: !showInitialContent,\n          'visible motion-safe:animate-fadeInUp': showInitialContent,\n        })}\n      >\n        <div className=\"max-h-[75vh]\">\n          <div\n            className={cx(\n              'text-text-inverse m-auto mt-[15vh] w-11/12 text-lg md:w-9/12 lg:w-8/12',\n              {\n                'motion-safe:animate-fadeOutUp': animationPercent > 0.15,\n                'motion-safe:animate-fadeInSlow': animationPercent <= 0.15,\n                'text-center': textAlign === 'center',\n                'text-start': textAlign === 'left',\n                'text-end': textAlign === 'right',\n              }\n            )}\n          >\n            {shortDescription ? (\n              <p className=\"brand-wa:font-serif text-xl\">{shortDescription}</p>\n            ) : null}\n            <HeadingLevel className=\"!text-text-inverse heading-3xl sm:heading-4xl lg:heading-6xl mt-4 hyphens-auto\">\n              {headline}\n            </HeadingLevel>\n            {longDescription ? (\n              <p className=\"brand-wa:font-serif mt-6 text-lg lg:text-xl\">{longDescription}</p>\n            ) : null}\n\n            {primaryCTA?.url ? (\n              <div className=\"mt-8\">\n                <BrandLink\n                  label={primaryCTA.label}\n                  isNewWindow={primaryCTA.isNewWindow}\n                  showNewWindowIcon={primaryCTA.isNewWindow}\n                  url={primaryCTA.url}\n                  brandComponentTheme={brandComponentTheme}\n                  metricsOnClick={brandLinkMetricsOnClick}\n                />\n              </div>\n            ) : null}\n          </div>\n          <div\n            // Line decoration\n            className=\"border-bg start-1/2 top-[25vh] mx-auto mt-16 h-[25vh] w-2 border-s-[3px] border-solid opacity-50\"\n          />\n        </div>\n      </div>\n      <div className=\"relative min-h-[90vh]\">\n        <div className=\"z-1 relative m-auto mt-[-20vh] w-1/12 content-center items-start justify-center\">\n          <div\n            // Line decoration\n            className={cx(\n              'border-primary brand-lx:border-brand start-1/2 top-0 m-auto my-6 h-[25vh] w-2 border-s-[3px] border-solid',\n              {\n                'opacity-75': content !== undefined,\n                'opacity-0': content === undefined,\n              }\n            )}\n          />\n        </div>\n        <div\n          className={cx(\n            'z-1 relative m-auto flex min-h-min w-11/12 content-center items-start justify-center md:w-3/5 lg:w-1/2',\n            { 'z-0': animationPercent < 0.85 }\n          )}\n        >\n          {content ? (\n            <CardContentArea\n              animationPercent={Math.min(animationPercent, 1)}\n              content={content}\n              brandComponentTheme={brandComponentTheme}\n              brandLinkMetricsOnClick={brandLinkMetricsOnClick}\n            >\n              <Content content={content} brandComponentTheme={brandComponentTheme} />\n            </CardContentArea>\n          ) : null}\n        </div>\n        <div className=\"z-1 relative m-auto w-1/12 content-center items-start justify-center pb-4\">\n          <div\n            // Line decoration\n            className={cx(\n              'border-primary brand-lx:border-brand start-1/2 m-auto my-6 h-[25vh] w-2 border-s-[3px] border-solid',\n              {\n                'opacity-75': content !== undefined,\n                'opacity-0': content === undefined,\n              }\n            )}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n","export * from './ScrollAnimation';\n","export * from './lib';\n","import cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\n\ntype OverlayImageType = {\n  /** content can only show if position is given */\n  shouldAlignContentPosition?: boolean;\n  /** Url for source image/illustration */\n  imageUrl?: string;\n  /** allows for additional custom classes */\n  className?: string;\n};\n\nexport const MastheadOverlayImage: React.FC<OverlayImageType> = ({\n  shouldAlignContentPosition,\n  imageUrl,\n  className,\n}) => {\n  const [t] = useTranslation('cpm-mapping-shared');\n  return (\n    <div className=\"relative -end-8 bottom-0 z-0 -mt-10 ms-auto w-[327px] sm:-mt-32 sm:w-[491px] md:-mt-52 lg:mt-[-340px] lg:w-[703px] xl:mt-[-550px]\">\n      <img\n        className={cx(\n          {\n            'h-64 w-[327px] rtl:scale-x-[-1] object-cover sm:h-96 sm:w-[491px] lg:h-[550px] lg:w-[703px]':\n              shouldAlignContentPosition,\n          },\n          className\n        )}\n        src={imageUrl}\n        alt={t('illustrationAltTextEY')}\n      />\n    </div>\n  );\n};\n\nexport default MastheadOverlayImage;\n","import cx from 'classnames';\n\ninterface ForTheStayOverlayProps {\n  overlayPosition: 'center' | 'left' | 'right';\n}\n\nexport const ForTheStayOverlay = ({ overlayPosition }: ForTheStayOverlayProps) => {\n  return (\n    <div\n      data-testid=\"forTheStayOverlay\"\n      className={cx(\n        'pointer-events-none absolute top-0 w-40 -translate-y-full overflow-hidden pb-0 sm:w-60 sm:pb-4 md:w-80',\n        {\n          'inset-x-1/2 -translate-x-1/2': overlayPosition === 'center',\n          'start-0': overlayPosition === 'left',\n          'end-0': overlayPosition === 'right',\n        }\n      )}\n    >\n      <div className=\"h-24 w-full bg-[url('/modules/assets/img/brand/WW/backgrounds/for-the-stay.svg')] bg-contain bg-center bg-no-repeat\" />\n    </div>\n  );\n};\n","import { ImageFunction, ImageType, ImageClickID, ANALYTICS_NO_VALUE } from '@dx-ui/config-metrics';\nimport type { MastheadImageMetrics } from '../types/masthead-analytics';\n\nexport const MASTHEAD_IMAGE_POSITION = 1;\nexport const MASTHEAD_IMAGE_COUNT = 1;\n\ntype GenerateMastheadAnalyticsParams = {\n  headline: string;\n  itemTitle?: string;\n};\n\nexport const generateMastheadAnalytics = ({\n  headline,\n  itemTitle,\n}: GenerateMastheadAnalyticsParams): MastheadImageMetrics => {\n  const mastheadAnalytics = {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        headline: headline || ANALYTICS_NO_VALUE,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        position: MASTHEAD_IMAGE_POSITION,\n        count: MASTHEAD_IMAGE_COUNT,\n        type: ImageType.Masthead,\n        function: ImageFunction.Link,\n      },\n    },\n  };\n  return mastheadAnalytics;\n};\n","import { HeroImage } from '@dx-ui/osc-hero-image';\nimport { HeroVideo } from '@dx-ui/osc-hero-video';\nimport { HeroTextOverlay } from '@dx-ui/osc-hero-text-overlay';\n\nimport type { OscDomLink } from '@dx-ui/cpm-sdk';\nimport { CpmMappingError, createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { ScrollAnimation } from '@dx-ui/osc-scroll-animation';\nimport { mapMultimediaListToVideoProps } from '@dx-ui/osc-video-player';\nimport type { VideoPlayerProps } from '@dx-ui/osc-video-player';\nimport { MastheadOverlayImage } from './Masthead-overlay-image';\nimport { ForTheStayOverlay } from './ForTheStayOverlay';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport { generateMastheadAnalytics } from './utils/masthead-analytics';\n\ntype VideoHeroProps = Pick<\n  Partial<React.ComponentProps<typeof HeroVideo>>,\n  'posterImageUrl' | 'videoCaptionData' | 'altText'\n> &\n  Partial<VideoPlayerProps>;\n\ntype VideoScrollAnimationProps = Partial<\n  NonNullable<React.ComponentProps<typeof ScrollAnimation>['video']>\n>;\n\ntype VideoData = VideoHeroProps & VideoScrollAnimationProps;\n\nexport default createCpmComponentDefinition(\n  'Masthead Image',\n\n  function mapData({ data, componentParams, addIssue, clearIssue, mappedPage }) {\n    function makeContent() {\n      const markdown = data?.markdownEditor;\n\n      if (markdown) {\n        return {\n          markdown,\n          cta: data?.link,\n        } as { markdown: string; cta: OscDomLink | null };\n      }\n\n      if ((data?.contentBlock?.length ?? 0) > 0) {\n        return {\n          headline: data.contentBlock?.[0]?.heading ?? '',\n          description: data.contentBlock?.[1]?.description ?? '',\n          cta: data?.link || undefined,\n        } as { headline: string; description: string; cta: OscDomLink | null };\n      }\n\n      return undefined;\n    }\n\n    const { link } = data;\n    const asset = data.cpmAssets[0];\n    const multimedia = data.multimedia;\n    const video = data.videos?.[0];\n    let videoData: VideoData = {};\n\n    if (multimedia?.length) {\n      const firstMultimedia = multimedia[0];\n      const multimediaCaption = firstMultimedia?.captionLink;\n      const multimediaCaptionData =\n        multimediaCaption?.linkLabel && multimediaCaption?.linkUrl\n          ? {\n              caption: multimediaCaption.linkLabel,\n              captionLink: multimediaCaption.linkUrl,\n            }\n          : undefined;\n\n      videoData = mapMultimediaListToVideoProps({ multimedia, mappedPage });\n      videoData.videoCaptionData = multimediaCaptionData;\n    }\n\n    if (video) {\n      if (video.source !== 'cloudinary') {\n        throw new CpmMappingError(\n          `Masthead only supports \"cloudinary\" as a video source (${data.contentType} - ${data.displayName})`\n        );\n      }\n\n      const { caption, captionLink } = video;\n\n      videoData.videoUrl = video.url;\n      videoData.videoName = video.name ?? undefined;\n      videoData.videoCaptionData = caption && captionLink ? { caption, captionLink } : undefined;\n    }\n\n    if (!asset && !(video || multimedia)) {\n      addIssue({\n        id: data.id,\n        message: `\"${data.name || data.displayName}\" has no image or video - please attach one`,\n      });\n    } else {\n      clearIssue(data.id);\n    }\n\n    const content = makeContent();\n\n    return {\n      ...videoData,\n      links: data.links,\n      headline: data.headline,\n      longDescription: data?.longDescription,\n      shortDescription: data?.shortDescription,\n      id: data.id,\n      imageAltText: asset?.altText ?? '',\n      image: {\n        desktopUrl: componentParams.scrollingAnimation\n          ? asset?.aspectRatios['16x9']?.url ?? ''\n          : asset?.aspectRatios['18x5']?.url ?? '',\n        mobileUrl: asset?.aspectRatios['3x2']?.url ?? '',\n      },\n      aspectRatios: {\n        desktop: videoData?.videoUrl ? ('21:9' as const) : ('18:5' as const),\n        // We need to set the mobile aspect ratio manually or the video won't render properly\n        mobile: '3:2' as const,\n      },\n      content,\n      captionData: asset\n        ? {\n            captionLink: asset.captionLink,\n            caption: asset.caption,\n          }\n        : {},\n      link: link?.url ? link : null,\n      badgeImageUrl: data.badgeUrl ?? null,\n      badgeImageAltText: 'alt text', //once added we can hook up the appropriate alt text, this field is currently not in CMS\n      staticDisplay: componentParams.display === 'static',\n      textOverlayDisplay: componentParams.display === 'textOverlay',\n      alignContent: componentParams?.textboxPosition || componentParams?.textAlign || undefined,\n      brandComponentTheme: componentParams.theme,\n      isAnimated: componentParams.animation,\n      hasHorizontalLine: componentParams.horizontalLine,\n    };\n  },\n\n  function MastheadImageCpm({ items = [], componentParams, mappedPage: { brandCode, pageType } }) {\n    const {\n      scrollingAnimation,\n      theme,\n      backgroundParallax,\n      backgroundIllustration,\n      textboxPosition,\n    } = componentParams;\n\n    const isHomepage = pageType === 'brandHomepage';\n    const isEY = brandCode === 'EY';\n\n    const data = items[0];\n\n    if (!data) {\n      return null;\n    }\n\n    if (scrollingAnimation && !data.videoUrl && data.image.desktopUrl) {\n      return (\n        <BrandComponentThemeInline componentParams={componentParams} brandCode={brandCode}>\n          <ScrollAnimation\n            headline={data?.headline}\n            shortDescription={data.shortDescription}\n            longDescription={data?.longDescription || undefined}\n            content={data.content}\n            image={{\n              altText: data.imageAltText,\n              ...data.image,\n            }}\n            textAlign={data.alignContent}\n            brandComponentTheme={theme}\n            brandLinkMetricsOnClick={() =>\n              trackEvent(\n                ANALYTICS_GLOBAL_CLICK_EVENT,\n                generateMastheadAnalytics({\n                  headline: data.headline,\n                  itemTitle: data.content?.cta?.label,\n                })\n              )\n            }\n          />\n        </BrandComponentThemeInline>\n      );\n    }\n    if (scrollingAnimation && data.videoUrl) {\n      return (\n        <BrandComponentThemeInline componentParams={componentParams} brandCode={brandCode}>\n          <ScrollAnimation\n            headline={data?.headline}\n            shortDescription={data.shortDescription}\n            longDescription={data?.longDescription || undefined}\n            content={data.content}\n            video={{\n              videoUrl: data.videoUrl,\n              videoName: data.videoName,\n              isAutoPlay: data.isAutoPlay,\n              markupSchemas: data.markupSchemas,\n            }}\n            textAlign={data.alignContent}\n            brandComponentTheme={theme}\n            brandLinkMetricsOnClick={() =>\n              trackEvent(\n                ANALYTICS_GLOBAL_CLICK_EVENT,\n                generateMastheadAnalytics({\n                  headline: data.headline,\n                  itemTitle: data.content?.cta?.label,\n                })\n              )\n            }\n          />\n        </BrandComponentThemeInline>\n      );\n    }\n    if (data.staticDisplay && data.videoUrl) {\n      return (\n        <BrandComponentThemeInline\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: backgroundParallax,\n            variant: backgroundIllustration,\n          }}\n        >\n          <HeroVideo\n            headline={data.headline}\n            shortDescription={data.shortDescription}\n            longDescription={data.longDescription}\n            link={data.link}\n            brandComponentTheme={data.brandComponentTheme}\n            videoGroup={data.videoGroup}\n            videoLabel={data.videoLabel}\n            videoName={data.videoName}\n            videoUrl={data.videoUrl}\n            altText={data.altText}\n            isMuted={data.isMuted}\n            posterImageUrl={data.posterImageUrl}\n            captionTracks={data.captionTracks}\n            audioTracks={data.audioTracks}\n            transcriptTracks={data.transcriptTracks}\n            isAutoPlay={data.isAutoPlay}\n            alignContent={data.alignContent}\n            isAnimated={data.isAnimated || brandCode === 'GU'}\n            hasHorizontalLine={data.hasHorizontalLine}\n            badgeImageUrl={data.badgeImageUrl}\n            badgeImageAltText={data.badgeImageAltText}\n            videoCaptionData={data.videoCaptionData}\n            markupSchemas={data.markupSchemas}\n            illustrationOverlay={\n              isEY && isHomepage ? (\n                <MastheadOverlayImage\n                  shouldAlignContentPosition={textboxPosition === 'left'}\n                  imageUrl=\"/modules/assets/img/brand/EY/backgrounds/EY-masthead-illustration.svg\"\n                />\n              ) : null\n            }\n          />\n        </BrandComponentThemeInline>\n      );\n    }\n\n    if (data.textOverlayDisplay && data.image) {\n      return (\n        <BrandComponentThemeInline\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: backgroundParallax,\n            variant: backgroundIllustration,\n          }}\n        >\n          <HeroTextOverlay\n            headline={data.headline}\n            shortDescription={data.shortDescription}\n            longDescription={data.longDescription}\n            link={data.link}\n            captionData={data.captionData}\n            brandComponentTheme={data.brandComponentTheme}\n            image={data.image}\n            imageAltText={data.imageAltText}\n            alignContent={data.alignContent}\n            isAnimated={data.isAnimated}\n            badgeImageUrl={data.badgeImageUrl}\n            badgeImageAltText={data.badgeImageAltText}\n            hasGalleryButton={false}\n            captionMetricsOnClick={() =>\n              trackEvent(\n                ANALYTICS_GLOBAL_CLICK_EVENT,\n                generateMastheadAnalytics({\n                  headline: data.headline,\n                  itemTitle: data.captionData.caption,\n                })\n              )\n            }\n            brandLinkMetricsOnClick={() =>\n              trackEvent(\n                ANALYTICS_GLOBAL_CLICK_EVENT,\n                generateMastheadAnalytics({\n                  headline: data.headline,\n                  itemTitle: data.link?.label,\n                })\n              )\n            }\n          />\n        </BrandComponentThemeInline>\n      );\n    }\n\n    return (\n      <BrandComponentThemeInline\n        componentClassName=\"hero-image\"\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: backgroundParallax,\n          variant: backgroundIllustration,\n        }}\n      >\n        <HeroImage\n          headline={data.headline}\n          shortDescription={data.shortDescription}\n          longDescription={data.longDescription}\n          link={data.link}\n          captionData={data.captionData}\n          brandComponentTheme={data.brandComponentTheme}\n          image={data.image}\n          imageAltText={data.imageAltText}\n          alignContent={data.alignContent}\n          isAnimated={data.isAnimated || brandCode === 'GU'}\n          hasHorizontalLine={data.hasHorizontalLine}\n          badgeImageUrl={data.badgeImageUrl}\n          badgeImageAltText={data.badgeImageAltText}\n          hasGalleryButton={false}\n          aspectRatios={data.aspectRatios}\n          illustrationOverlay={\n            isEY && isHomepage ? (\n              <MastheadOverlayImage\n                shouldAlignContentPosition={textboxPosition === 'left'}\n                imageUrl=\"/modules/assets/img/brand/EY/backgrounds/EY-masthead-illustration.svg\"\n              />\n            ) : null\n          }\n          forTheStayIllustration={\n            componentParams.text === 'forTheStay' ? (\n              <ForTheStayOverlay overlayPosition={componentParams.orientation ?? 'left'} />\n            ) : null\n          }\n          captionMetricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateMastheadAnalytics({\n                headline: data.headline,\n                itemTitle: data.captionData.caption,\n              })\n            )\n          }\n          brandLinkMetricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateMastheadAnalytics({\n                headline: data.headline,\n                itemTitle: data.link?.label,\n              })\n            )\n          }\n        />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { useRef } from 'react';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { useMediaQuery, useResizeObserver } from 'usehooks-ts';\nimport cx from 'classnames';\nimport { YouTubeVideo } from '@dx-ui/osc-youtube-video';\nimport {\n  Video,\n  VideoCaptions,\n  VideoControls,\n  VideoTranscript,\n  useVideoPlayerClasses,\n  useVideoPlayer,\n  VideoPlayerMarkup,\n} from '@dx-ui/osc-video-player';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { BrandHorizontalTabPanelProps } from './brand-horizontal-tabs.types';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\n\nexport const BrandHorizontalTabbedSectionContent = ({\n  brandComponentTheme,\n  copy,\n  longDescription,\n  headline,\n  image,\n  link,\n  media,\n  id,\n}: BrandHorizontalTabPanelProps) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isYouTubeShort = media?.video?.source === 'youtube-short';\n  const isPortrait = media?.multimedia?.orientation === 'portrait';\n  const isLandscape = media?.multimedia?.orientation === 'landscape';\n  const isMultimediaVideo = Boolean(media?.multimedia?.videoUrl);\n  const isVideo = Boolean(media?.video?.url || isMultimediaVideo);\n  const isVerticalVideo = isVideo && (isYouTubeShort || isPortrait);\n  const isImage = Boolean(image?.alt && image?.url);\n  const isCinemagraph = !!media?.multimedia?.altText;\n  const hasAudio = !isCinemagraph && !media?.multimedia?.isMuted;\n  const captionData = image?.captionData;\n  const videoUrl = media?.multimedia?.videoUrl || '';\n  const playerProps = useVideoPlayer({\n    ...media?.multimedia,\n    playerId: id,\n    hasAudio,\n    videoUrl,\n    wrapperElement: ref,\n  });\n  const playerClassNames = useVideoPlayerClasses({ isLandscape });\n  const hasActiveTranscript = Boolean(playerProps.videoTranscriptProps?.activeTranscript);\n  const isLarge = useMediaQuery('(min-width: 1024px)');\n  const videoSize = useResizeObserver({ ref: playerProps.videoProps.videoElement });\n  const height = videoSize?.height ?? 0;\n  const transcriptStyle = isLarge && !isVerticalVideo ? { height: `${height}px` } : undefined;\n  const hasMediaContent = isImage || isVideo;\n\n  const Transcript = (\n    <VideoTranscript\n      {...playerProps.videoTranscriptProps}\n      style={transcriptStyle}\n      brandComponentTheme={brandComponentTheme}\n      className={cx('overflow-hidden !p-0 lg:mb-6', {\n        '[&>ol]:lg:max-h-full [&>ol]:lg:pb-20': !isVerticalVideo,\n        '[&>ol]:lg:max-h-64': isVerticalVideo,\n      })}\n    />\n  );\n\n  return (\n    <div\n      data-testid=\"tabbed-section-content-wrapper\"\n      ref={ref}\n      className={cx('brand-wa:lg:px-0 relative flex lg:mx-8 lg:mt-8', {\n        'flex-row-reverse': hasMediaContent,\n        'justify-center': isVerticalVideo,\n        'justify-between': !isVerticalVideo,\n        'items-start': hasActiveTranscript,\n      })}\n    >\n      {media?.multimedia?.markupSchemas ? (\n        <VideoPlayerMarkup markupSchemas={media.multimedia.markupSchemas} />\n      ) : null}\n      <div\n        className={cx('flex w-full flex-col justify-center', {\n          'max-w-sm': isVerticalVideo,\n          'lg:w-1/2': !isVerticalVideo && hasMediaContent,\n        })}\n      >\n        <div\n          className={cx('lg:ps-7', {\n            'lg:pt-0 pt-10': !hasActiveTranscript,\n          })}\n        >\n          <div className=\"hidden lg:block\">{Transcript}</div>\n          {headline ? (\n            <HeadingLevel\n              headingLevelFallback={3}\n              className={cx('heading-2xl lg:heading-4xl mb-4 lg:mb-6', {\n                'tabbed-section-content-header-text-dark': isDark,\n                'tabbed-section-content-header-text-light': isLight,\n              })}\n              data-testid=\"brandTextHeader\"\n            >\n              {headline}\n            </HeadingLevel>\n          ) : null}\n          {copy ? (\n            <BrandTextBody\n              brandComponentTheme={brandComponentTheme}\n              className={cx('mb-4 lg:mb-6', {\n                'tabbed-section-content-body-text-dark': isDark,\n                'tabbed-section-content-body-text-light': isLight,\n                'tabbed-section-content-body-text': !isDark && !isLight,\n              })}\n            >\n              {copy}\n            </BrandTextBody>\n          ) : null}\n        </div>\n\n        <div\n          className={cx('start-0 pe-7 lg:absolute', {\n            'top-0': hasActiveTranscript,\n            'lg:w-4/12 lg:start-[calc(100%/3/2)]': isVerticalVideo,\n            'lg:w-1/2': !isVerticalVideo && !isImage,\n            'lg:min-w-[55%]': isImage,\n          })}\n        >\n          {media?.video?.url && media?.video.title ? (\n            <YouTubeVideo\n              {...media.video}\n              wrapperClassName=\"flex-1\"\n              isAutoPlay={false}\n              isAutoLoop={false}\n            />\n          ) : videoUrl ? (\n            <>\n              <div className={cx(playerClassNames.wrapperClassNames, 'mb-8 lg:mb-0')}>\n                <Video\n                  {...playerProps.videoProps}\n                  captionData={media?.multimedia?.captionData}\n                  isAutoPlay={media?.multimedia?.isAutoPlay}\n                  posterImageUrl={media?.multimedia?.posterImageUrl}\n                  videoId={media?.multimedia?.videoId}\n                  videoUrl={videoUrl}\n                  role={isCinemagraph ? 'img' : undefined}\n                  aria-label={isCinemagraph ? media?.multimedia?.altText : undefined}\n                />\n                <VideoCaptions\n                  {...playerProps.videoCaptionProps}\n                  brandComponentTheme={brandComponentTheme}\n                  className={playerClassNames.captionClassNames}\n                />\n                <VideoControls\n                  videoVariant={isCinemagraph ? 'cinemagraph' : undefined}\n                  {...playerProps.videoControlsProps}\n                  brandComponentTheme={brandComponentTheme}\n                  className={playerClassNames.controlsClassNames['default']}\n                />\n              </div>\n              <div className=\"lg:hidden\">{Transcript}</div>\n            </>\n          ) : null}\n\n          {image?.alt && image?.url ? (\n            <ResponsiveImage\n              altText={image.alt}\n              imageUrl={image.url}\n              wrapperClassName=\"flex-[1.3]\"\n              aspectRatio=\"3:2\"\n              width={rect?.width ?? 0}\n              captionData={captionData}\n              className=\"image-corner-radius\"\n            />\n          ) : null}\n        </div>\n        <div className={cx('mt-4 md:mb-2 lg:mt-0 lg:ps-7')}>\n          {longDescription ? (\n            <BrandTextBody\n              className={cx('mb-4 font-sans lg:mb-6', {\n                'tabbed-section-content-body-text-dark': isDark,\n                'tabbed-section-content-body-text-light': isLight,\n                'pt-8 sm:pt-4': isMultimediaVideo && !hasActiveTranscript,\n              })}\n              brandComponentTheme={brandComponentTheme}\n            >\n              {longDescription}\n            </BrandTextBody>\n          ) : null}\n\n          {link && link.label && link.url ? (\n            <BrandLink\n              url={link.url}\n              label={link.label}\n              onClick={link.onClick}\n              isNewWindow={link.isNewWindow}\n              showNewWindowIcon={link.isNewWindow}\n              brandComponentTheme={brandComponentTheme}\n              data-conductrics-goal={link.experimentationConfiguration?.goal}\n              data-conductrics-value={link.experimentationConfiguration?.value}\n            />\n          ) : null}\n        </div>\n      </div>\n      {hasMediaContent ? (\n        <div\n          className={cx('hidden lg:block', {\n            'aspect-[9/16] lg:w-4/12': isVerticalVideo,\n            'aspect-[3/2] lg:w-1/2': !isVerticalVideo && !isImage,\n            'aspect-[3/2] lg:min-w-[55%]': isImage,\n          })}\n        />\n      ) : null}\n    </div>\n  );\n};\n","import { useState } from 'react';\nimport {\n  brandIconMapper,\n  iconMapper,\n  TabListButton,\n  TabPanel,\n  TabPanels,\n  Tabs,\n  TabListScrollable,\n} from '@dx-ui/osc-tabs';\nimport cx from 'classnames';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport Icon from '@dx-ui/osc-icon';\nimport Image from 'next/image';\n\nimport { mapTextAlignToClassname } from '@dx-ui/osc-textual-block';\nimport type {\n  BrandHorizontalTabProps,\n  BrandHorizontalTabsProps,\n} from './brand-horizontal-tabs.types';\nimport { BrandHorizontalTabbedSectionContent } from './brand-horizontal-tabbed-section-content';\nimport { HeadingLevelProvider } from '@dx-ui/osc-heading-level';\nimport { dispatchVideoEvent, VIDEO_EVENTS } from '@dx-ui/osc-video-player';\n\ntype TabIconProps = {\n  iconType: string;\n  isDark: boolean;\n};\n\nconst TabIcon = ({ iconType = '', isDark = false }: TabIconProps) => {\n  const brandIcon = iconType ? brandIconMapper[iconType] : null;\n  if (brandIcon) {\n    const { brandCode, name } = brandIcon;\n    if (brandCode === 'ES') {\n      const iconName = isDark ? brandIcon.invertedName : name;\n      return <Icon brandCode={brandCode} name={iconName} size=\"5xl\" />;\n    }\n    if (brandCode === 'EY') {\n      return <Icon brandCode={brandCode} name={name} size=\"lg\" />;\n    }\n    return null;\n  }\n  const name = iconMapper[iconType];\n\n  if (!name) {\n    return null;\n  }\n\n  return <Icon name={name} size=\"lg\" />;\n};\n\nexport const BrandHorizontalTabbedSection = ({\n  brandComponentTheme,\n  defaultTab,\n  listDescription,\n  listHeadline,\n  textAlign = 'left',\n  items,\n  id,\n  onTabChange,\n}: BrandHorizontalTabsProps) => {\n  const [selectedTab, setSelectedTab] = useState(defaultTab);\n\n  if (!items.length) return null;\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const hasIconOrLogo = items.some((item) => item.logoUrl || item.iconType);\n\n  return (\n    <section\n      className={cx('brand-wa:py-16 brand-wa:xl:py-20 container py-8 xl:py-12', {\n        'tabbed-bg-dark': isDark,\n        'tabbed-bg-light': isLight,\n        'tabbed-bg': !isDark && !isLight,\n      })}\n      data-testid=\"tabbedsection-items-wrapper\"\n    >\n      {items.length > 1 ? (\n        <>\n          {listHeadline ? (\n            <BrandTextHeader\n              id={id}\n              className={cx('relative', mapTextAlignToClassname(textAlign), {\n                'tabbed-list-headline-dark': isDark,\n                'tabbed-list-headline-light': isLight,\n              })}\n            >\n              {listHeadline}\n            </BrandTextHeader>\n          ) : null}\n\n          {listDescription ? (\n            <BrandTextBody\n              brandComponentTheme={brandComponentTheme}\n              className={cx('relative', mapTextAlignToClassname(textAlign), {\n                'tabbed-list-description-dark': isDark,\n                'tabbed-list-description-light': isLight,\n                'tabbed-list-description': !isDark && !isLight,\n              })}\n            >\n              {listDescription}\n            </BrandTextBody>\n          ) : null}\n\n          <Tabs\n            key={`${id}-${items.length}`}\n            changeWithArrow\n            onTabChange={(tabId = '') => {\n              setSelectedTab((currentId = '') => {\n                dispatchVideoEvent({ type: VIDEO_EVENTS.PAUSE_SELF, id: currentId });\n                return tabId;\n              });\n              onTabChange?.(tabId);\n            }}\n            defaultActive={defaultTab}\n          >\n            <TabListScrollable\n              id={id}\n              data-testid={`tablist-${id}`}\n              className={cx('scrollbar-hide flex flex-row flex-nowrap overflow-x-scroll border-b', {\n                'horizontal-tabbed-list-scrollable-dark': isDark,\n                'horizontal-tabbed-list-scrollable-light': isLight,\n                'horizontal-tabbed-list-scrollable': !isDark && !isLight,\n              })}\n              leftArrowWrapperClassName={{\n                'horizontal-tabbed-arrow-wrapper-dark': isDark,\n                'horizontal-tabbed-arrow-wrapper-light': isLight,\n                'horizontal-tabbed-arrow-wrapper': !isDark && !isLight,\n              }}\n              rightArrowWrapperClassName={{\n                'horizontal-tabbed-arrow-wrapper-dark': isDark,\n                'horizontal-tabbed-arrow-wrapper-light': isLight,\n                'horizontal-tabbed-arrow-wrapper': !isDark && !isLight,\n              }}\n            >\n              {items.map(({ id, tab: { label }, cmsTranslationClasses, logoUrl, iconType }) => (\n                <TabListButton\n                  data-testid={label}\n                  activeClassName={cx('is-selected selected brand-hp:font-bold group z-10', {\n                    'horizontal-tabbed-list-button-active-dark': isDark,\n                    'horizontal-tabbed-list-button-active-light': isLight,\n                    'horizontal-tabbed-list-button-active': !isDark && !isLight,\n                    'horizontal-tabbed-list-button-active-bg-no-icon-dark':\n                      isDark && !iconType && !logoUrl,\n                    'horizontal-tabbed-list-button-active-bg-no-icon-light':\n                      isLight && !iconType && !logoUrl,\n                    'horizontal-tabbed-list-button-active-bg-no-icon-default':\n                      !isDark && !isLight && !iconType && !logoUrl,\n                  })}\n                  className={cx(\n                    'grow cursor-pointer appearance-none border-b-4 px-4 py-2 md:whitespace-normal',\n                    'focus-visible-only-for-a11y',\n                    {\n                      'min-w-[50%] lg:min-w-[20%]': items.length > 5,\n                      'min-w-[50%] lg:min-w-fit': items.length <= 5,\n                      'flex items-baseline': logoUrl,\n                    }\n                  )}\n                  inactiveClassName={cx('text-text-alt border-transparent', {\n                    'horizontal-tabbed-list-button-inactive-dark': isDark,\n                    'horizontal-tabbed-list-button-inactive-light': isLight,\n                    'horizontal-tabbed-list-button-inactive': !isDark && !isLight,\n                  })}\n                  id={id}\n                  key={id}\n                >\n                  <div\n                    className={cx(\n                      'group m-auto flex min-w-[120px] flex-col items-center text-lg',\n                      'brand-es:font-headline',\n                      'brand-ey:font-normal',\n                      'brand-gi:font-headline brand-gi:font-bold',\n                      'brand-hp:font-serif brand-hp:shrink-0',\n                      'brand-nd:uppercase brand-nd:font-mono',\n                      'brand-wa:uppercase brand-wa:font-sans brand-wa:font-light',\n                      {\n                        'hover:text-primary-alt focus:text-primary-alt brand-dt:hover:text-brand brand-dt:focus:text-brand brand-es:hover:text-primary brand-es:focus:text-primary':\n                          id !== selectedTab,\n                        'font-bold brand-nd:font-medium ': id === selectedTab,\n                        'font-medium brand-gu:font-bold': id !== selectedTab,\n                        'text-text-inverse': isDark,\n                        'hover:text-text-inverse brand-es:hover:text-bg-light brand-es:focus:text-bg-light brand-nd:hover:!text-text-disabled brand-ey:hover:!text-brand-alt':\n                          isDark && id !== selectedTab,\n                        'brand-ht:!text-text-inverse brand-hp:text-primary': isLight,\n                        'brand-hi-refresh:hover:text-primary-alt brand-nd:hover:text-primary-alt brand-wa:hover:text-bg-dark brand-ey:hover:text-primary-alt':\n                          !isDark && id !== selectedTab,\n                        'text-text brand-ey:text-primary brand-gu:text-primary brand-hi-refresh:text-primary brand-ou:text-primary brand-hp:text-primary brand-hp:hover:text-primary-alt':\n                          !isDark,\n                        'horizontal-tabbed-list-button-active-text-no-logo-icon-dark':\n                          isDark && !iconType && !logoUrl && id === selectedTab,\n                      },\n                      cmsTranslationClasses\n                    )}\n                  >\n                    {logoUrl ? (\n                      <Image\n                        src={logoUrl}\n                        alt=\"\"\n                        width={70}\n                        height={70}\n                        unoptimized={true}\n                        aria-hidden\n                      />\n                    ) : null}\n                    {iconType ? (\n                      <div\n                        className={cx(\n                          'group-[.selected]:bg-bg-alt flex size-16 items-center justify-center rounded-full',\n                          'brand-ou:group-[.selected]:bg-bg-light',\n                          'brand-es:group-[.selected]:bg-transparent',\n                          {\n                            'text-text-inverse group-[.selected]:text-text brand-ou:group-[.selected]:bg-secondary brand-ou:group-[.selected]:text-primary':\n                              isDark,\n                            'brand-es:group-[.selected]:text-text-inverse': isDark,\n                            'brand-ey:bg-bg-light brand-ey:text-primary brand-ey:group-[.selected]:text-primary brand-ey:group-[.selected]:bg-brand-alt':\n                              isDark,\n                            'brand-gu:bg-bg-light brand-gu:text-primary brand-gu:group-[.selected]:bg-quarternary':\n                              isDark,\n                            'brand-hi-refresh:group-[.selected]:text-primary brand-hi-refresh:group-[.selected]:bg-bg-light':\n                              isDark,\n                            'brand-nd:bg-text-disabled brand-nd:text-primary brand-nd:group-[.selected]:bg-bg brand-nd:group-[.selected]:text-primary':\n                              isDark,\n                            'brand-gu:bg-bg-dark brand-gu:text-text-inverse brand-gu:group-[.selected]:bg-quarternary brand-gu:group-[.selected]:text-primary':\n                              isLight,\n                            'brand-ht:group-[.selected]:text-text': isLight,\n                            'brand-ou:group-[.selected]:bg-secondary': isLight,\n                            'brand-ey:bg-bg-dark brand-ey:group-[.selected]:bg-secondary brand-ey:text-text-inverse brand-ey:group-[.selected]:text-text-inverse':\n                              !isDark,\n                            'brand-hi-refresh:group-[.selected]:text-text-inverse brand-hi-refresh:group-[.selected]:bg-primary':\n                              !isDark,\n                            'brand-nd:bg-text-disabled brand-nd:group-[.selected]:bg-bg-dark brand-nd:group-[.selected]:text-text-inverse':\n                              !isDark,\n                            'brand-gu:bg-bg-dark brand-gu:text-text-inverse brand-gu:group-[.selected]:bg-bg-light brand-gu:group-[.selected]:text-primary brand-hp:group-[.selected]:bg-quarternary brand-hp:group-[.selected]:text-primary':\n                              !isLight,\n                          }\n                        )}\n                      >\n                        <TabIcon iconType={iconType} isDark={isDark} />\n                      </div>\n                    ) : null}\n                    <span\n                      className={cx('relative', {\n                        'py-4': hasIconOrLogo,\n                        'py-1 brand-hp:px-4 brand-hp:py-0': !hasIconOrLogo,\n                      })}\n                    >\n                      {id === selectedTab && !hasIconOrLogo ? (\n                        <span\n                          className={cx(\n                            'hidden',\n                            'brand-hp:group-[.selected]:flex brand-hp:absolute brand-hp:-start-7 h-full items-center px-4'\n                          )}\n                        >\n                          <Icon brandCode=\"HP\" name=\"hex\" size=\"md\" />\n                        </span>\n                      ) : null}\n                      {label}\n                    </span>\n                  </div>\n                </TabListButton>\n              ))}\n            </TabListScrollable>\n            <TabPanels>\n              {items.map(\n                ({\n                  id,\n                  cmsDocumentControl,\n                  panel: { media, image, headline, longDescription, copy, link },\n                  cmsTranslationClasses,\n                }: BrandHorizontalTabProps) => {\n                  return (\n                    <HeadingLevelProvider key={id} shouldIncreaseLevel={!!listHeadline}>\n                      <TabPanel id={id} className={cmsTranslationClasses}>\n                        <BrandHorizontalTabbedSectionContent\n                          brandComponentTheme={brandComponentTheme}\n                          copy={copy}\n                          longDescription={longDescription}\n                          headline={headline}\n                          image={image}\n                          link={link}\n                          media={media}\n                          id={id}\n                        />\n                        {cmsDocumentControl}\n                      </TabPanel>\n                    </HeadingLevelProvider>\n                  );\n                }\n              )}\n            </TabPanels>\n          </Tabs>\n        </>\n      ) : (\n        <>\n          <BrandHorizontalTabbedSectionContent\n            brandComponentTheme={brandComponentTheme}\n            copy={items[0]?.panel.copy ?? ''}\n            longDescription={items[0]?.panel.longDescription ?? ''}\n            headline={items[0]?.panel.headline ?? ''}\n            image={items[0]?.panel.image}\n            link={items[0]?.panel.link}\n            media={items[0]?.panel.media}\n          />\n          {items[0]?.cmsDocumentControl ?? ''}\n        </>\n      )}\n    </section>\n  );\n};\n\nexport default BrandHorizontalTabbedSection;\n","export * from './brand-horizontal-tabbed-section';\n","export * from './lib';\n","import type * as React from 'react';\nimport { TabButton } from '@dx-ui/osc-tabs';\nimport cx from 'classnames';\n\ntype TabButtonProps = {\n  tabId: string;\n  className?: string;\n  activeClassName?: string;\n  inactiveClassName?: string;\n  children: React.ReactNode;\n};\n\nconst VerticalTabButton = ({\n  tabId,\n  className,\n  activeClassName,\n  inactiveClassName,\n  children,\n}: TabButtonProps) => (\n  <TabButton\n    id={tabId}\n    key={tabId}\n    className={cx('relative mb-0 flex items-center px-4 py-3 text-start font-sans', className)}\n    activeClassName={cx(\n      'after:bg-hilton after:absolute after:start-0 after:top-0 after:h-full',\n      activeClassName\n    )}\n    inactiveClassName={cx('bg-bg-light', inactiveClassName)}\n  >\n    {children}\n  </TabButton>\n);\n\nexport { VerticalTabButton };\nexport default VerticalTabButton;\n","import type * as React from 'react';\nimport cx from 'classnames';\n\ntype TabProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst VerticalTab = ({ className, ...rest }: TabProps) => (\n  <div className={cx('relative', className)} {...rest} />\n);\n\nexport { VerticalTab };\nexport default VerticalTab;\n","import type * as React from 'react';\nimport { TabPanel } from '@dx-ui/osc-tabs';\n\ntype TabPanelProps = {\n  tabPanelId: string;\n  className?: string;\n  children: React.ReactNode;\n};\n\nconst VerticalTabPanel = ({ tabPanelId, className, children }: TabPanelProps) => (\n  <TabPanel id={tabPanelId} key={tabPanelId} className={className}>\n    {children}\n  </TabPanel>\n);\n\nexport { VerticalTabPanel };\nexport default VerticalTabPanel;\n","\"use client\";\n\n// packages/react/collapsible/src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeCollapsible,\n      open: openProp,\n      defaultOpen,\n      disabled,\n      onOpenChange,\n      ...collapsibleProps\n    } = props;\n    const [open = false, setOpen] = useControllableState({\n      prop: openProp,\n      defaultProp: defaultOpen,\n      onChange: onOpenChange\n    });\n    return /* @__PURE__ */ jsx(\n      CollapsibleProvider,\n      {\n        scope: __scopeCollapsible,\n        disabled,\n        contentId: useId(),\n        open,\n        onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            \"data-state\": getState(open),\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...collapsibleProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeCollapsible, ...triggerProps } = props;\n    const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-controls\": context.contentId,\n        \"aria-expanded\": context.open || false,\n        \"data-state\": getState(context.open),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        disabled: context.disabled,\n        ...triggerProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { forceMount, ...contentProps } = props;\n    const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n  }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n  const { __scopeCollapsible, present, children, ...contentProps } = props;\n  const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n  const [isPresent, setIsPresent] = React.useState(present);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const heightRef = React.useRef(0);\n  const height = heightRef.current;\n  const widthRef = React.useRef(0);\n  const width = widthRef.current;\n  const isOpen = context.open || isPresent;\n  const isMountAnimationPreventedRef = React.useRef(isOpen);\n  const originalStylesRef = React.useRef(void 0);\n  React.useEffect(() => {\n    const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n    return () => cancelAnimationFrame(rAF);\n  }, []);\n  useLayoutEffect(() => {\n    const node = ref.current;\n    if (node) {\n      originalStylesRef.current = originalStylesRef.current || {\n        transitionDuration: node.style.transitionDuration,\n        animationName: node.style.animationName\n      };\n      node.style.transitionDuration = \"0s\";\n      node.style.animationName = \"none\";\n      const rect = node.getBoundingClientRect();\n      heightRef.current = rect.height;\n      widthRef.current = rect.width;\n      if (!isMountAnimationPreventedRef.current) {\n        node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n        node.style.animationName = originalStylesRef.current.animationName;\n      }\n      setIsPresent(present);\n    }\n  }, [context.open, present]);\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"data-state\": getState(context.open),\n      \"data-disabled\": context.disabled ? \"\" : void 0,\n      id: context.contentId,\n      hidden: !isOpen,\n      ...contentProps,\n      ref: composedRefs,\n      style: {\n        [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n        [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n        ...props.style\n      },\n      children: isOpen && children\n    }\n  );\n});\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n  Content,\n  Root,\n  Trigger,\n  createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/accordion/src/accordion.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\nimport { createCollapsibleScope } from \"@radix-ui/react-collapsible\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ACCORDION_NAME = \"Accordion\";\nvar ACCORDION_KEYS = [\"Home\", \"End\", \"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\"];\nvar [Collection, useCollection, createCollectionScope] = createCollection(ACCORDION_NAME);\nvar [createAccordionContext, createAccordionScope] = createContextScope(ACCORDION_NAME, [\n  createCollectionScope,\n  createCollapsibleScope\n]);\nvar useCollapsibleScope = createCollapsibleScope();\nvar Accordion = React.forwardRef(\n  (props, forwardedRef) => {\n    const { type, ...accordionProps } = props;\n    const singleProps = accordionProps;\n    const multipleProps = accordionProps;\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeAccordion, children: type === \"multiple\" ? /* @__PURE__ */ jsx(AccordionImplMultiple, { ...multipleProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(AccordionImplSingle, { ...singleProps, ref: forwardedRef }) });\n  }\n);\nAccordion.displayName = ACCORDION_NAME;\nvar [AccordionValueProvider, useAccordionValueContext] = createAccordionContext(ACCORDION_NAME);\nvar [AccordionCollapsibleProvider, useAccordionCollapsibleContext] = createAccordionContext(\n  ACCORDION_NAME,\n  { collapsible: false }\n);\nvar AccordionImplSingle = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      value: valueProp,\n      defaultValue,\n      onValueChange = () => {\n      },\n      collapsible = false,\n      ...accordionSingleProps\n    } = props;\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      defaultProp: defaultValue,\n      onChange: onValueChange\n    });\n    return /* @__PURE__ */ jsx(\n      AccordionValueProvider,\n      {\n        scope: props.__scopeAccordion,\n        value: value ? [value] : [],\n        onItemOpen: setValue,\n        onItemClose: React.useCallback(() => collapsible && setValue(\"\"), [collapsible, setValue]),\n        children: /* @__PURE__ */ jsx(AccordionCollapsibleProvider, { scope: props.__scopeAccordion, collapsible, children: /* @__PURE__ */ jsx(AccordionImpl, { ...accordionSingleProps, ref: forwardedRef }) })\n      }\n    );\n  }\n);\nvar AccordionImplMultiple = React.forwardRef((props, forwardedRef) => {\n  const {\n    value: valueProp,\n    defaultValue,\n    onValueChange = () => {\n    },\n    ...accordionMultipleProps\n  } = props;\n  const [value = [], setValue] = useControllableState({\n    prop: valueProp,\n    defaultProp: defaultValue,\n    onChange: onValueChange\n  });\n  const handleItemOpen = React.useCallback(\n    (itemValue) => setValue((prevValue = []) => [...prevValue, itemValue]),\n    [setValue]\n  );\n  const handleItemClose = React.useCallback(\n    (itemValue) => setValue((prevValue = []) => prevValue.filter((value2) => value2 !== itemValue)),\n    [setValue]\n  );\n  return /* @__PURE__ */ jsx(\n    AccordionValueProvider,\n    {\n      scope: props.__scopeAccordion,\n      value,\n      onItemOpen: handleItemOpen,\n      onItemClose: handleItemClose,\n      children: /* @__PURE__ */ jsx(AccordionCollapsibleProvider, { scope: props.__scopeAccordion, collapsible: true, children: /* @__PURE__ */ jsx(AccordionImpl, { ...accordionMultipleProps, ref: forwardedRef }) })\n    }\n  );\n});\nvar [AccordionImplProvider, useAccordionContext] = createAccordionContext(ACCORDION_NAME);\nvar AccordionImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, disabled, dir, orientation = \"vertical\", ...accordionProps } = props;\n    const accordionRef = React.useRef(null);\n    const composedRefs = useComposedRefs(accordionRef, forwardedRef);\n    const getItems = useCollection(__scopeAccordion);\n    const direction = useDirection(dir);\n    const isDirectionLTR = direction === \"ltr\";\n    const handleKeyDown = composeEventHandlers(props.onKeyDown, (event) => {\n      if (!ACCORDION_KEYS.includes(event.key)) return;\n      const target = event.target;\n      const triggerCollection = getItems().filter((item) => !item.ref.current?.disabled);\n      const triggerIndex = triggerCollection.findIndex((item) => item.ref.current === target);\n      const triggerCount = triggerCollection.length;\n      if (triggerIndex === -1) return;\n      event.preventDefault();\n      let nextIndex = triggerIndex;\n      const homeIndex = 0;\n      const endIndex = triggerCount - 1;\n      const moveNext = () => {\n        nextIndex = triggerIndex + 1;\n        if (nextIndex > endIndex) {\n          nextIndex = homeIndex;\n        }\n      };\n      const movePrev = () => {\n        nextIndex = triggerIndex - 1;\n        if (nextIndex < homeIndex) {\n          nextIndex = endIndex;\n        }\n      };\n      switch (event.key) {\n        case \"Home\":\n          nextIndex = homeIndex;\n          break;\n        case \"End\":\n          nextIndex = endIndex;\n          break;\n        case \"ArrowRight\":\n          if (orientation === \"horizontal\") {\n            if (isDirectionLTR) {\n              moveNext();\n            } else {\n              movePrev();\n            }\n          }\n          break;\n        case \"ArrowDown\":\n          if (orientation === \"vertical\") {\n            moveNext();\n          }\n          break;\n        case \"ArrowLeft\":\n          if (orientation === \"horizontal\") {\n            if (isDirectionLTR) {\n              movePrev();\n            } else {\n              moveNext();\n            }\n          }\n          break;\n        case \"ArrowUp\":\n          if (orientation === \"vertical\") {\n            movePrev();\n          }\n          break;\n      }\n      const clampedIndex = nextIndex % triggerCount;\n      triggerCollection[clampedIndex].ref.current?.focus();\n    });\n    return /* @__PURE__ */ jsx(\n      AccordionImplProvider,\n      {\n        scope: __scopeAccordion,\n        disabled,\n        direction: dir,\n        orientation,\n        children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeAccordion, children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            ...accordionProps,\n            \"data-orientation\": orientation,\n            ref: composedRefs,\n            onKeyDown: disabled ? void 0 : handleKeyDown\n          }\n        ) })\n      }\n    );\n  }\n);\nvar ITEM_NAME = \"AccordionItem\";\nvar [AccordionItemProvider, useAccordionItemContext] = createAccordionContext(ITEM_NAME);\nvar AccordionItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, value, ...accordionItemProps } = props;\n    const accordionContext = useAccordionContext(ITEM_NAME, __scopeAccordion);\n    const valueContext = useAccordionValueContext(ITEM_NAME, __scopeAccordion);\n    const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n    const triggerId = useId();\n    const open = value && valueContext.value.includes(value) || false;\n    const disabled = accordionContext.disabled || props.disabled;\n    return /* @__PURE__ */ jsx(\n      AccordionItemProvider,\n      {\n        scope: __scopeAccordion,\n        open,\n        disabled,\n        triggerId,\n        children: /* @__PURE__ */ jsx(\n          CollapsiblePrimitive.Root,\n          {\n            \"data-orientation\": accordionContext.orientation,\n            \"data-state\": getState(open),\n            ...collapsibleScope,\n            ...accordionItemProps,\n            ref: forwardedRef,\n            disabled,\n            open,\n            onOpenChange: (open2) => {\n              if (open2) {\n                valueContext.onItemOpen(value);\n              } else {\n                valueContext.onItemClose(value);\n              }\n            }\n          }\n        )\n      }\n    );\n  }\n);\nAccordionItem.displayName = ITEM_NAME;\nvar HEADER_NAME = \"AccordionHeader\";\nvar AccordionHeader = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, ...headerProps } = props;\n    const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n    const itemContext = useAccordionItemContext(HEADER_NAME, __scopeAccordion);\n    return /* @__PURE__ */ jsx(\n      Primitive.h3,\n      {\n        \"data-orientation\": accordionContext.orientation,\n        \"data-state\": getState(itemContext.open),\n        \"data-disabled\": itemContext.disabled ? \"\" : void 0,\n        ...headerProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nAccordionHeader.displayName = HEADER_NAME;\nvar TRIGGER_NAME = \"AccordionTrigger\";\nvar AccordionTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, ...triggerProps } = props;\n    const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n    const itemContext = useAccordionItemContext(TRIGGER_NAME, __scopeAccordion);\n    const collapsibleContext = useAccordionCollapsibleContext(TRIGGER_NAME, __scopeAccordion);\n    const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n    return /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeAccordion, children: /* @__PURE__ */ jsx(\n      CollapsiblePrimitive.Trigger,\n      {\n        \"aria-disabled\": itemContext.open && !collapsibleContext.collapsible || void 0,\n        \"data-orientation\": accordionContext.orientation,\n        id: itemContext.triggerId,\n        ...collapsibleScope,\n        ...triggerProps,\n        ref: forwardedRef\n      }\n    ) });\n  }\n);\nAccordionTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"AccordionContent\";\nvar AccordionContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeAccordion, ...contentProps } = props;\n    const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n    const itemContext = useAccordionItemContext(CONTENT_NAME, __scopeAccordion);\n    const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n    return /* @__PURE__ */ jsx(\n      CollapsiblePrimitive.Content,\n      {\n        role: \"region\",\n        \"aria-labelledby\": itemContext.triggerId,\n        \"data-orientation\": accordionContext.orientation,\n        ...collapsibleScope,\n        ...contentProps,\n        ref: forwardedRef,\n        style: {\n          [\"--radix-accordion-content-height\"]: \"var(--radix-collapsible-content-height)\",\n          [\"--radix-accordion-content-width\"]: \"var(--radix-collapsible-content-width)\",\n          ...props.style\n        }\n      }\n    );\n  }\n);\nAccordionContent.displayName = CONTENT_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root2 = Accordion;\nvar Item = AccordionItem;\nvar Header = AccordionHeader;\nvar Trigger2 = AccordionTrigger;\nvar Content2 = AccordionContent;\nexport {\n  Accordion,\n  AccordionContent,\n  AccordionHeader,\n  AccordionItem,\n  AccordionTrigger,\n  Content2 as Content,\n  Header,\n  Item,\n  Root2 as Root,\n  Trigger2 as Trigger,\n  createAccordionScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as RadixAccordion from '@radix-ui/react-accordion';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport Icon from '@dx-ui/osc-icon';\nimport { getLanguageDirection } from '@dx-ui/utilities-get-language-direction';\nimport { useRouter } from 'next/router';\n\nexport type HeadingLevel = 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nexport type Item = {\n  /**\n   * Content that will be displayed when the accordion is expanded\n   */\n  content: React.ReactNode;\n  /** Trigger text to display hidden content\n   *\n   * Defaults to “Open”\n   */\n  collapsedButtonLabel?: string | React.ReactNode;\n  /** Screen-reader only trigger text to display hidden content\n   */\n  collapsedButtonAccessibleLabel?: string;\n  /**\n   * Applies to Accordion when it is not expanded\n   */\n  collapsedClassName?: string;\n  /**\n   * Screen-reader only trigger text to hide displayed content\n   */\n  expandedButtonAccessibleLabel?: string;\n  /** Trigger text to hide displayed content\n   *\n   * Defaults to “Close”\n   */\n  expandedButtonLabel?: string | React.ReactNode;\n  /**\n   * Applies to Accordion when it is expanded\n   */\n  expandedClassName?: string;\n  /**\n   * Styles for the wrapper(div) of the accordion button\n   */\n  buttonWrapperClassName?: string;\n  /** A stable key to identify the accordion */\n  key: string;\n};\n\nexport type AccordionBase = {\n  /** Classes apply to trigger button\n   *\n   * To style accordion content, apply relevant classes directly to passed-in children\n   */\n  className?: string;\n  /** Accordion item including labels and content */\n  items: Item[];\n  /** Passed into `<section />` element that contains children\n   */\n  containerClassName?: string;\n  /**\n   * Optional heading level that should wrap the Accordion Trigger. Defaults to a span if undefined.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Controls the fill color for the indicator icon\n   */\n  iconIndicatorFillColor?: string;\n  /**\n   * Applies color when expanded\n   */\n  iconIndicatorExpandedFillColor?: string;\n  /**\n   * Controls whether children should be unmounted when accordion is collapsed\n   */\n  shouldUnmountChildrenWhenCollapsed?: boolean;\n  /**\n   * Controls accordion variant type, single or stacked.  Defaults to single.\n   *\n   * Single - only one accordion can be expanded at a time (other accordion items will collapse)\n   *\n   * Multiple - multiple accordion items can be expanded at the same time. (other accordion items will remain expanded)\n   */\n  variant?: 'single' | 'stacked';\n};\n\nexport type AccordionProps = AccordionBase & React.ComponentProps<typeof RadixAccordion.Root>;\n\nconst setInitialExpandedAccordions = (items: Item[], defaultValue?: string | string[]) => {\n  if (typeof defaultValue === 'string') {\n    const isExpanded = defaultValue === items[0]?.key;\n    return [isExpanded];\n  }\n  return Array.from({ length: items?.length }, (_, idx) => {\n    return Boolean(defaultValue?.includes(items?.[idx]?.key ?? ''));\n  });\n};\n/**\n *\n * An Accordion component based off of Radix UI's Accordion component. This component is used to display a list of items that can be expanded or collapsed to show or hide content. Root level component that rest props will pass to is <Accordion.Root />.\n * @see {@link Radix UI Accordion Documentation} https://www.radix-ui.com/primitives/docs/components/accordion\n */\nexport const Accordion = ({\n  className,\n  items,\n  containerClassName,\n  iconIndicatorFillColor,\n  iconIndicatorExpandedFillColor,\n  // eslint-disable-next-line @typescript-eslint/unbound-method -- This is a bug with radix definition using : void sytnax.\n  onValueChange,\n  variant = 'single',\n  shouldUnmountChildrenWhenCollapsed = false,\n  headingLevel,\n  ...rest\n}: AccordionProps) => {\n  const [uncontrolledExpandedAccordion, setUncontrolledExpandedAccordion] = React.useState(\n    setInitialExpandedAccordions(items, rest.defaultValue)\n  );\n\n  const isUncontrolledComponent = !rest?.value;\n\n  const { t } = useTranslation('osc-accordion');\n  const { locale = 'en' } = useRouter();\n  const languageDirection = getLanguageDirection(locale);\n\n  const isStackedAccordion = variant === 'stacked';\n  const handleIconType = isStackedAccordion ? 'arrowhead-down-circle' : 'arrowhead-small-down';\n  const iconSize = isStackedAccordion ? 'lg' : 'md';\n\n  /**\n   *\n   * Value can be string | string[] if `type` prop is `single` or `multiple` respectively.\n   */\n  const handleValueChange = (values: string | string[]) => {\n    if (typeof values === 'string') {\n      isUncontrolledComponent &&\n        setUncontrolledExpandedAccordion([!uncontrolledExpandedAccordion[0]]);\n      (onValueChange as (value: string) => void)?.(values);\n    } else {\n      isUncontrolledComponent &&\n        setUncontrolledExpandedAccordion(\n          uncontrolledExpandedAccordion.map((_, idx) => values.includes(items?.[idx]?.key ?? ''))\n        );\n      (onValueChange as (value: string[]) => void)?.(values);\n    }\n  };\n\n  if (!items?.length) return null;\n\n  return (\n    <RadixAccordion.Root\n      {...rest}\n      dir={languageDirection}\n      {...(rest.type === 'single' && { collapsible: true })}\n      onValueChange={handleValueChange}\n    >\n      {items.map((item, idx) => {\n        const isExpanded = isUncontrolledComponent\n          ? uncontrolledExpandedAccordion[idx]\n          : typeof rest?.value === 'string'\n          ? rest?.value === item.key\n          : !!rest?.value?.includes(item.key);\n\n        const buttonLabel = isExpanded\n          ? item?.expandedButtonLabel ?? t('close')\n          : item?.collapsedButtonLabel ?? t('open');\n\n        const accessibleButtonLabel = isExpanded\n          ? item?.expandedButtonAccessibleLabel\n          : item?.collapsedButtonAccessibleLabel;\n        const iconVariant = isStackedAccordion && isExpanded ? 'solid' : 'regular';\n        const shouldRenderChildren =\n          !isExpanded && shouldUnmountChildrenWhenCollapsed ? false : true;\n\n        return (\n          <RadixAccordion.Item\n            key={item.key}\n            value={item.key}\n            className={item.buttonWrapperClassName}\n            data-osc=\"accordion-item\"\n          >\n            <RadixAccordion.Header asChild={true}>\n              <TriggerWrapper as={headingLevel}>\n                <RadixAccordion.Trigger asChild>\n                  <button\n                    type=\"button\"\n                    className={cx('items-center', className, {\n                      [item?.expandedClassName as string]: isExpanded && !!item?.expandedClassName,\n                      [item?.collapsedClassName as string]:\n                        !isExpanded && !!item?.collapsedClassName,\n                    })}\n                    data-osc={`accordion-trigger-${item.key}`}\n                  >\n                    <span aria-hidden={Boolean(accessibleButtonLabel)}>{buttonLabel}</span>\n                    {accessibleButtonLabel ? (\n                      <span className=\"sr-only\">{accessibleButtonLabel}</span>\n                    ) : null}\n                    <span\n                      className={cx(\n                        'accordion-indicator-wrapper duration-150 ease-in-out motion-safe:transition',\n                        {\n                          '-rotate-180': isExpanded,\n                        }\n                      )}\n                      data-osc=\"accordion-indicator-wrapper\"\n                    >\n                      <Icon\n                        name={handleIconType}\n                        variant={iconVariant}\n                        size={iconSize}\n                        className={cx(iconIndicatorFillColor, {\n                          [iconIndicatorExpandedFillColor as string]:\n                            isExpanded && !!iconIndicatorExpandedFillColor,\n                        })}\n                      />\n                    </span>\n                  </button>\n                </RadixAccordion.Trigger>\n              </TriggerWrapper>\n            </RadixAccordion.Header>\n            <RadixAccordion.Content className={containerClassName} data-osc=\"accordion-panel\">\n              {shouldRenderChildren ? item.content : null}\n            </RadixAccordion.Content>\n          </RadixAccordion.Item>\n        );\n      })}\n    </RadixAccordion.Root>\n  );\n};\n\nfunction TriggerWrapper({\n  as: Wrapper = 'span',\n  children,\n  ...rest\n}: {\n  as?: HeadingLevel | 'span';\n  children: React.ReactNode;\n}) {\n  return <Wrapper {...rest}>{children}</Wrapper>;\n}\n\nexport default Accordion;\n","export * from './lib/accordion';\n","import type { ReactNode } from 'react';\nimport { Children, isValidElement } from 'react';\nimport { TabList, TabPanels, Tabs } from '@dx-ui/osc-tabs';\nimport { Accordion } from '@dx-ui/osc-accordion';\nimport VerticalTabButton from './vertical-tab-button';\nimport VerticalTab from './vertical-tab';\nimport VerticalTabPanel from './vertical-tab-panel';\nimport cx from 'classnames';\n\nexport type VerticalTabProps = {\n  /**\n   * Styles for both the collapsed and the expanded state of the accordion\n   */\n  accordionClassName?: string;\n  /**\n   * Styles for the collapsed state of the accordion\n   */\n  accordionCollapsedClassName?: string;\n  /**\n   * Styles for the expanded state of the accordion\n   */\n  accordionExpandedClassName?: string;\n  /**\n   * Styles for the wrapper(div) of the accordion button\n   */\n  accordionButtonWrapperClassName?: string;\n  /**\n   * Controls the fill color for the accordion indicator icon\n   */\n  accordionIconIndicatorFillColor?: string;\n  /**\n   * Controls the fill color for expanded accordion icons\n   */\n  accordionIconIndicatorExpandedFillColor?: string;\n  children: ReactNode;\n  defaultActiveId?: string;\n  id?: string;\n  /**\n   * For changing breakpoint between mobile/desktop layout\n   */\n  mobileDesktopBreakpoint?: 'sm' | 'md' | 'lg';\n  onAccordionClick?: (value: string[]) => void;\n  onTabChange?: (id?: string) => void;\n};\n\nconst VerticalTabs = ({\n  accordionClassName,\n  accordionCollapsedClassName,\n  accordionExpandedClassName,\n  accordionButtonWrapperClassName,\n  accordionIconIndicatorFillColor,\n  accordionIconIndicatorExpandedFillColor,\n  children,\n  defaultActiveId,\n  id,\n  mobileDesktopBreakpoint = 'lg',\n  onAccordionClick,\n  onTabChange,\n}: VerticalTabProps) => {\n  const arrayChildren = Children.toArray(children);\n\n  const tabList = Children.map(\n    arrayChildren,\n    (child) => isValidElement(child) && child.type === VerticalTab && child\n  )?.filter(Boolean);\n\n  // Filter out anything where the first two children are not VerticalTabButton then VerticalTabPanel\n  const validTabs = Children.map(tabList, (child) => {\n    if (\n      isValidElement(child) &&\n      child?.props?.children[0].type === VerticalTabButton &&\n      child?.props?.children[1].type === VerticalTabPanel\n    ) {\n      return child;\n    }\n    return null;\n  });\n\n  const items = validTabs?.map((tab) => {\n    const header = tab?.props?.children[0];\n    const content = tab?.props?.children[1];\n\n    return {\n      content: <section className=\"px-2 py-4\">{content?.props?.children}</section>,\n      key: header.props?.tabId,\n      collapsedClassName: accordionCollapsedClassName,\n      collapsedButtonLabel: header?.props?.children,\n      expandedClassName: accordionExpandedClassName,\n      expandedButtonLabel: header?.props?.children,\n      buttonWrapperClassName: accordionButtonWrapperClassName,\n      iconIndicatorFillColor: accordionIconIndicatorFillColor,\n      iconIndicatorExpandedFillColor: accordionIconIndicatorExpandedFillColor,\n    };\n  });\n\n  return (\n    <>\n      <section\n        className={cx('hidden', {\n          'sm:block': mobileDesktopBreakpoint === 'sm',\n          'md:block': mobileDesktopBreakpoint === 'md',\n          'lg:block': mobileDesktopBreakpoint === 'lg',\n        })}\n      >\n        <Tabs\n          defaultActive={defaultActiveId}\n          className=\"flex\"\n          onTabChange={onTabChange}\n          changeWithArrow\n          useUpDownArrows\n        >\n          <TabList\n            className=\"mb-4 flex-col !overflow-x-hidden pb-2\"\n            aria-orientation=\"vertical\"\n            aria-labelledby={id}\n          >\n            {validTabs?.map((tab) => tab?.props?.children[0])}\n          </TabList>\n\n          <TabPanels className=\"flex-1 pt-2\">\n            {validTabs?.map((tab) => tab?.props?.children[1])}\n          </TabPanels>\n        </Tabs>\n      </section>\n      <section\n        className={cx({\n          'sm:hidden': mobileDesktopBreakpoint === 'sm',\n          'md:hidden': mobileDesktopBreakpoint === 'md',\n          'lg:hidden': mobileDesktopBreakpoint === 'lg',\n        })}\n      >\n        <Accordion\n          className={cx(\n            'accordion-stacked hh-accordion text-primary hover:text-primary-alt px-5 text-start',\n            accordionClassName\n          )}\n          {...(defaultActiveId && { defaultValue: [defaultActiveId] })}\n          items={items}\n          onValueChange={onAccordionClick}\n          variant=\"stacked\"\n          type=\"multiple\"\n          headingLevel=\"h3\"\n        />\n      </section>\n    </>\n  );\n};\nexport { VerticalTabs };\nexport default VerticalTabs;\n","export * from './vertical-tab-button';\nexport * from './vertical-tab';\nexport * from './vertical-tab-panel';\nexport * from './vertical-tabs';\n","export * from './lib';\n","import { useRef } from 'react';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport cx from 'classnames';\nimport type { TVerticalTabBody } from './brand-vertical-tabs.types';\n\nexport const BrandVerticalTabBody = ({\n  imageUrl,\n  captionData,\n  brandComponentTheme,\n  altText,\n  headline,\n  text,\n  link,\n}: TVerticalTabBody) => {\n  const { url, label, isNewWindow } = link;\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const isImage = imageUrl && altText ? true : false;\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      className={cx({\n        'flex flex-col xl:flex-row xl:items-start': isImage,\n        'px-0 lg:px-6': !isImage,\n      })}\n    >\n      {imageUrl && altText ? (\n        <div\n          ref={ref}\n          style={{ flex: 1.3 }}\n          className=\"flex items-center justify-center overflow-hidden\"\n        >\n          <ResponsiveImage\n            imageUrl={imageUrl}\n            altText={altText}\n            aspectRatio=\"3:2\"\n            width={rect?.width ?? 0}\n            captionData={captionData}\n            className=\"image-corner-radius\"\n          />\n        </div>\n      ) : null}\n      <div\n        className={cx({\n          'z-1 flex flex-1 flex-col items-center justify-center text-left': isImage,\n        })}\n      >\n        <div\n          className={cx({\n            'pt-12 md:pt-4 md:ps-4 lg:ps-10': isImage,\n          })}\n        >\n          <BrandTextHeader\n            className={cx({\n              'tabbed-section-content-header-text-dark': isDark,\n              'tabbed-section-content-header-text-light': isLight,\n            })}\n          >\n            {headline}\n          </BrandTextHeader>\n          <BrandTextBody\n            className={cx('mb-8 pe-8 sm:pe-6 lg:mb-12', {\n              'tabbed-section-content-body-text-dark': isDark,\n              'tabbed-section-content-body-text-light': isLight,\n              'tabbed-section-content-body-text': !isDark && !isLight,\n            })}\n            brandComponentTheme={brandComponentTheme}\n          >\n            {text}\n          </BrandTextBody>\n\n          {label && url ? (\n            <BrandLink\n              url={url}\n              label={label}\n              isNewWindow={isNewWindow}\n              showNewWindowIcon={isNewWindow}\n              brandComponentTheme={brandComponentTheme}\n              data-conductrics-goal={link.experimentationConfiguration?.goal}\n              data-conductrics-value={link.experimentationConfiguration?.value}\n            />\n          ) : null}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default BrandVerticalTabBody;\n","import {\n  VerticalTabButton,\n  VerticalTab,\n  VerticalTabPanel,\n  VerticalTabs,\n} from '@dx-ui/osc-vertical-tabs';\nimport { iconMapper } from '@dx-ui/osc-tabs';\nimport cx from 'classnames';\nimport Image from 'next/image';\nimport Icon from '@dx-ui/osc-icon';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport type { TVerticalTabs } from './brand-vertical-tabs.types';\nimport BrandVerticalTabBody from './brand-vertical-tabbed-section-content';\nimport { mapTextAlignToClassname } from '@dx-ui/osc-textual-block';\nimport { HeadingLevelProvider } from '@dx-ui/osc-heading-level';\n\nexport const BrandVerticalTabbedSection = ({\n  listHeadline,\n  listDescription,\n  textAlign = 'left',\n  items,\n  brandComponentTheme,\n  onTabChange,\n  id: cmsId,\n}: TVerticalTabs) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const id = `tabs${cmsId}`;\n\n  return (\n    <section\n      className={cx('brand-wa:py-16 brand-wa:xl:py-20 container py-8 xl:py-12', {\n        'tabbed-bg-dark': isDark,\n        'tabbed-bg-light': isLight,\n        'tabbed-bg': !isDark && !isLight,\n      })}\n    >\n      {listHeadline ? (\n        <BrandTextHeader\n          id={id}\n          className={cx('relative', mapTextAlignToClassname(textAlign), {\n            'tabbed-list-headline-dark': isDark,\n            'tabbed-list-headline-light': isLight,\n          })}\n        >\n          {listHeadline}\n        </BrandTextHeader>\n      ) : null}\n\n      {listDescription ? (\n        <BrandTextBody\n          className={cx('relative pb-8', mapTextAlignToClassname(textAlign), {\n            'tabbed-list-description-dark': isDark,\n            'tabbed-list-description-light': isLight,\n            'tabbed-list-description': !isDark && !isLight,\n          })}\n          brandComponentTheme={brandComponentTheme}\n        >\n          {listDescription}\n        </BrandTextBody>\n      ) : null}\n\n      <VerticalTabs\n        defaultActiveId={items[0]?.id}\n        id={id}\n        accordionExpandedClassName={cx('border-b !font-normal', {\n          'vertical-tabbed-accordion-expanded-light': isLight,\n          'vertical-tabbed-accordion-expanded-dark': isDark,\n          'vertical-tabbed-accordion-expanded': !isDark && !isLight,\n        })}\n        accordionCollapsedClassName={cx('font-normal', {\n          'vertical-tabbed-accordion-collapsed-dark': isDark,\n          'vertical-tabbed-accordion-collapsed-light': isLight,\n          'vertical-tabbed-accordion-collapsed-default': !isDark && !isLight,\n        })}\n        accordionButtonWrapperClassName={cx('last:has-[button]:border-b', {\n          'vertical-tabbed-accordion-dark': isDark,\n          'vertical-tabbed-accordion-light': isLight,\n          'vertical-tabbed-accordion': !isDark && !isLight,\n        })}\n        accordionClassName={cx('relative border-t', {\n          'vertical-tabbed-accordion-dark': isDark,\n          'vertical-tabbed-accordion-light': isLight,\n          'vertical-tabbed-accordion': !isDark && !isLight,\n        })}\n        accordionIconIndicatorFillColor={cx({\n          'vertical-tabbed-accordion-icon-indicator-fill-color-light': isLight,\n          'vertical-tabbed-accordion-icon-indicator-fill-color-dark': isDark,\n          'vertical-tabbed-accordion-icon-indicator-fill-color': !isDark && !isLight,\n        })}\n        accordionIconIndicatorExpandedFillColor={cx({\n          'vertical-tabbed-accordion-icon-indicator-expanded-fill-color-light': isLight,\n        })}\n        onTabChange={onTabChange}\n      >\n        {items.map((item) => {\n          const icon = item.iconType ? iconMapper[item.iconType] : null;\n\n          return (\n            <VerticalTab key={item.tab.label} className=\"pb-10\">\n              <VerticalTabButton\n                tabId={item.id}\n                inactiveClassName={cx(\n                  \"vertical-tabbed-button-inactive-text brand-hi-refresh:hover:before:absolute brand-hi-refresh:hover:before:start-0 brand-hi-refresh:hover:before:h-full brand-hi-refresh:hover:before:w-2 brand-hi-refresh:hover:before:content-[''] border-b-2 first:border-t-2\",\n                  {\n                    'vertical-tabbed-button-inactive-light': isLight,\n                    'vertical-tabbed-button-inactive-dark first:border-tab-button-panel-dark':\n                      isDark,\n                    'vertical-tabbed-button-inactive-default': !isDark && !isLight,\n                  }\n                )}\n                activeClassName={cx(\n                  \"vertical-tabbed-button-active-text [&_.hampton-icon]:brand-hp:block z-10 border-b-2 before:absolute before:start-0 before:h-full before:w-2 before:content-[''] first:border-t-2\",\n                  {\n                    'vertical-tabbed-button-active-dark first:border-tab-button-panel-dark': isDark,\n                    'vertical-tabbed-button-active-light': isLight,\n                    'vertical-tabbed-button-active-default': !isDark && !isLight,\n                  }\n                )}\n                /* eslint-disable tailwindcss/no-custom-classname, tailwindcss/classnames-order */\n                className=\"w-80 focus-visible-only-for-a11y\"\n              >\n                <div className=\"flex items-center lg:flex-row\">\n                  {icon ? (\n                    <Icon name={icon} size=\"lg\" className=\"!rotate-0\" />\n                  ) : item.logoUrl ? (\n                    <Image\n                      width={50}\n                      height={50}\n                      src={item.logoUrl}\n                      alt=\"\"\n                      unoptimized={true}\n                      aria-hidden\n                    />\n                  ) : (\n                    <span className={cx('hidden hampton-icon', 'ps-2 -me-3')}>\n                      <Icon brandCode=\"HP\" name={isDark ? 'hex_inverted' : 'hex'} size=\"md\" />\n                    </span>\n                  )}\n\n                  {item.tab.label ? (\n                    <span className=\"ms-3.5 pe-6 text-lg\">{item.tab.label}</span>\n                  ) : null}\n                </div>\n              </VerticalTabButton>\n\n              <VerticalTabPanel\n                tabPanelId={item.id}\n                className={cx('-translate-x-1 border-t-2 ps-10 pt-8 rtl:translate-x-1', {\n                  'vertical-tabbed-panel-border-dark': isDark,\n                  'vertical-tabbed-panel-border-light': isLight,\n                  'vertical-tabbed-panel-border': !isDark && !isLight,\n                })}\n              >\n                <HeadingLevelProvider shouldIncreaseLevel={!!listHeadline}>\n                  <BrandVerticalTabBody\n                    imageUrl={item.panel.image?.url}\n                    captionData={item.panel.image?.captionData}\n                    altText={item.panel.image?.alt}\n                    headline={item.panel.headline}\n                    text={item.panel.copy}\n                    brandComponentTheme={brandComponentTheme}\n                    link={item.panel.link}\n                  />\n                </HeadingLevelProvider>\n              </VerticalTabPanel>\n            </VerticalTab>\n          );\n        })}\n      </VerticalTabs>\n    </section>\n  );\n};\n\nexport default BrandVerticalTabbedSection;\n","export * from './brand-vertical-tabbed-section';\n","export * from './lib';\n","import * as React from 'react';\n\ntype Props = React.PropsWithChildren<{\n  theme: 'light' | 'dark' | '';\n  enabled: boolean;\n}>;\n\nexport function HamptonHexVisual({ theme, enabled, children }: Props) {\n  if (enabled && theme === 'light') {\n    return (\n      <React.Fragment>\n        <svg\n          data-testid=\"hampton-hex-light\"\n          className=\"invisible absolute inset-y-0 right-0 h-full md:visible\"\n          viewBox=\"0 0 184 712\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M184 712V0H131.52C128.978 4.8022 126.907 9.93313 125.382 15.3337L6.51498 436.321C2.19295 451.651 0 467.512 0 483.5H0.0213165C0.0213165 499.489 2.21426 515.371 6.5363 530.701L57.7289 712H184Z\"\n            fill=\"white\"\n          />\n        </svg>\n\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  if (enabled && theme === 'dark') {\n    return (\n      <React.Fragment>\n        <svg\n          data-testid=\"hampton-hex-dark\"\n          className=\"invisible absolute inset-y-0 right-0 h-full md:visible\"\n          viewBox=\"0 0 184 712\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M184 712V0H131.52C128.978 4.8022 126.907 9.93313 125.382 15.3337L6.51498 436.321C2.19295 451.651 0 467.512 0 483.5H0.0213165C0.0213165 499.489 2.21426 515.371 6.5363 530.701L57.7289 712H184Z\"\n            fill=\"#002666\"\n          />\n        </svg>\n\n        {children}\n      </React.Fragment>\n    );\n  }\n\n  return children;\n}\n","import { createCpmComponentDefinition, useCreateManageContentButton } from '@dx-ui/cpm-sdk';\nimport { useId } from 'react';\nimport { extractInstanceIndexFromId } from '../../utils';\nimport { mapMultimediaListToVideoProps } from '@dx-ui/osc-video-player';\nimport { BrandHorizontalTabbedSection } from '@dx-ui/osc-brand-horizontal-tabbed-section';\nimport { BrandVerticalTabbedSection as VerticalTabbedSection } from '@dx-ui/osc-brand-vertical-tabbed-section';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { HamptonHexVisual } from './HamptonHexVisual';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  'Tabbed Section',\n\n  function mapData({ data, mappedPage }) {\n    const { link, id, label, headline, shortDescription, longDescription, logoUrl, iconType } =\n      data;\n    const videoData = data.videos?.[0];\n    const multimediaList = data.multimedia;\n    const asset = data.cpmAssets[0];\n    const imageUrl = asset?.aspectRatios?.['3x2']?.url;\n    const captionData = asset\n      ? {\n          captionLink: asset.captionLink,\n          caption: asset.caption,\n        }\n      : undefined;\n    const video = videoData\n      ? {\n          source: videoData.source || '',\n          title: videoData?.name || '',\n          url: videoData.url,\n        }\n      : undefined;\n    const multimedia = multimediaList?.length\n      ? mapMultimediaListToVideoProps({ multimedia: multimediaList, mappedPage })\n      : undefined;\n    const hasImage = imageUrl && asset?.altText;\n    const hasVideo = multimedia?.videoUrl || video?.url;\n\n    return {\n      id,\n      links: data.links,\n      ...(logoUrl && { logoUrl }),\n      ...(iconType && { iconType }),\n      tab: {\n        label,\n      },\n      panel: {\n        media: {\n          multimedia,\n          video,\n        },\n        image:\n          hasImage && !hasVideo\n            ? {\n                alt: asset?.altText || '',\n                url: imageUrl ?? '',\n                captionData,\n              }\n            : undefined,\n        headline,\n        copy: shortDescription,\n        longDescription: longDescription || undefined,\n        link: {\n          label: link?.label ?? '',\n          url: link?.url ?? '',\n          adaDescription: link?.adaDescription ?? '',\n          isNewWindow: link?.isNewWindow,\n        },\n      },\n    };\n  },\n\n  function TabbedSection({\n    items = [],\n    listData: data,\n    componentParams,\n    mappedPage: { brandCode },\n  }) {\n    const metrics = useMetrics();\n    const id = useId();\n    const createManageContentButton = useCreateManageContentButton();\n    const { tabbedSectionDisplay } = componentParams;\n\n    if (!items.length) {\n      return null;\n    }\n\n    const filteredItems = items.map((item) => {\n      return {\n        ...item,\n        cmsDocumentControl: createManageContentButton(item?.$ref),\n        panel: {\n          ...item.panel,\n          // Replace link with one that has been filtered by experimentation agent. Links are filtered by the CPM SDK.\n          // The link will be the same one as the mapping function if no experimentation agent(s) have been defined.\n          link: item.links?.[0] ?? { url: '', label: '' },\n        },\n      };\n    });\n\n    const onTabChange = (tabId: string) => {\n      if (metrics && tabId) {\n        const targetTabIndex = filteredItems.findIndex((item) => item.id === tabId);\n        const label = filteredItems?.[targetTabIndex]?.tab?.label ?? '';\n        metrics.trackTabItemClick?.([\n          {\n            label,\n            tabComponentNumber: extractInstanceIndexFromId(id),\n            itemNumber: targetTabIndex + 1,\n            totalItems: filteredItems.length,\n          },\n        ]);\n      }\n    };\n\n    return (\n      <BrandComponentThemeInline\n        brandCode={brandCode}\n        componentParams={componentParams}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <HamptonHexVisual\n          theme={componentParams.theme ?? ''}\n          enabled={brandCode === 'HP' && componentParams.backgroundIllustration === 'hx-hexagon'}\n        >\n          <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={brandCode === 'GU'}>\n            {tabbedSectionDisplay === 'vertical' ? (\n              <VerticalTabbedSection\n                textAlign={componentParams.listTextAlign}\n                listDescription={data?.description ?? undefined}\n                listHeadline={data?.headline ?? undefined}\n                items={filteredItems}\n                brandComponentTheme={componentParams.theme}\n                id={id}\n              />\n            ) : (\n              <BrandHorizontalTabbedSection\n                textAlign={componentParams.listTextAlign}\n                listDescription={data?.description ?? undefined}\n                listHeadline={data?.headline ?? undefined}\n                id={id}\n                items={filteredItems}\n                defaultTab={filteredItems[0]?.id}\n                onTabChange={onTabChange}\n                brandComponentTheme={componentParams.theme}\n              />\n            )}\n          </AnimateRevealItem>\n        </HamptonHexVisual>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\nimport {\n  TextualBlock,\n  makeHeadingOverrides,\n  makeDescriptionClassName,\n  makeLinkClassName,\n  makeOrderedListClassName,\n  makeUnorderedListClassName,\n  makeOrderedListItemClassName,\n} from '@dx-ui/osc-textual-block';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { useIntersectionObserver } from 'usehooks-ts';\n\nexport type MarkdownBlockProps = {\n  markdown: string;\n  className?: string;\n  isAnimated: boolean;\n  textAlign?: 'left' | 'right' | 'center';\n  isBorderTrim?: boolean;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport function MarkdownBlock({\n  markdown,\n  brandComponentTheme,\n  textAlign = 'left',\n  isBorderTrim,\n  isAnimated = false,\n}: MarkdownBlockProps) {\n  const { ref: intersectionRef, isIntersecting: inView } = useIntersectionObserver({\n    threshold: 0.3,\n    freezeOnceVisible: true,\n  });\n  const wrapperRef = !getIsReducedMotion() && isAnimated ? intersectionRef : null;\n\n  const options: Exclude<React.ComponentProps<typeof CustomMarkdown>['options'], undefined> = {\n    overrides: {\n      ...makeHeadingOverrides({\n        brandComponentTheme,\n        isAnimated,\n        isInView: inView,\n        textAlign,\n      }),\n\n      p: {\n        props: {\n          className: makeDescriptionClassName({\n            brandComponentTheme,\n            isAnimated,\n            isInView: inView,\n            textAlign,\n          }),\n        },\n      },\n\n      a: {\n        props: { className: makeLinkClassName({ brandComponentTheme }) },\n      },\n\n      ol: {\n        props: {\n          className: makeOrderedListClassName({\n            isAnimated,\n            isInView: inView,\n            brandComponentTheme,\n          }),\n        },\n      },\n\n      ul: {\n        props: {\n          className: makeUnorderedListClassName({\n            isAnimated,\n            isInView: inView,\n            brandComponentTheme,\n          }),\n        },\n      },\n\n      li: { props: { className: makeOrderedListItemClassName({ brandComponentTheme }) } },\n    },\n  };\n\n  return (\n    <TextualBlock\n      brandComponentTheme={brandComponentTheme}\n      textAlign={textAlign}\n      hasBorderTrim={isBorderTrim ?? false}\n      ref={wrapperRef}\n    >\n      {/*\n      language and origin are used by Markdown to construct Anchor Tag props, but we are overriding them.\n      so we don't need to set anything here\n      */}\n      <CustomMarkdown options={options}>{markdown}</CustomMarkdown>\n    </TextualBlock>\n  );\n}\n","import cx from 'classnames';\nimport { useId, useRef } from 'react';\nimport { useRect } from '@dx-ui/utilities-use-rect';\n\nimport { useHasUserModifiedFontDefaults } from '@dx-ui/utilities-accessibility';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\n\nexport type TCurvedHeading = {\n  /** Text to curve along the SVG path. */\n  curvedText: string;\n  /** Pass additional classes to the parent `<h2>` wrapper. */\n  className?: string;\n  /** Pass additional classes to the text elements. */\n  textClassNames?: string;\n  /** Used to calculate the intensity of the circular arc on which the text is placed. Defaults to `0.5`. Suggested value is between `0` and `1`. */\n  curvature?: number;\n  /** Optional heading text to display below the curved header. */\n  textBelow?: string;\n  /** Optional second node to display below the 'textBelow'. */\n  nodeBelow?: React.ReactNode;\n  /** Optional prop to designate heading level, default is h2. */\n  headingLevel?: HeadingLevel;\n  /** Used to disable the curve */\n  shouldDisable?: boolean;\n};\n\nexport const CurvedHeading = ({\n  className,\n  textClassNames,\n  curvedText,\n  curvature = 0.5,\n  textBelow,\n  nodeBelow,\n  headingLevel,\n  shouldDisable,\n}: TCurvedHeading) => {\n  const id = useId();\n  const curvedHeadingId = `curved-heading-${id}`;\n  const textRef = useRef(null);\n  const svgTextDimensions = useRect({ ref: textRef });\n  const calculatedCurvature = Math.sin((curvature * Math.PI) / 2);\n  const viewBoxWidth = 200;\n  const viewBoxHeight = viewBoxWidth * calculatedCurvature;\n  const shouldDisableCurve = useHasUserModifiedFontDefaults() || shouldDisable;\n\n  return (\n    <HeadingLevel\n      headingLevelFallback={headingLevel}\n      className={cx(className, { 'flex flex-col': shouldDisableCurve })}\n    >\n      {shouldDisableCurve ? (\n        <span\n          className={cx(\n            'heading-2xl md:heading-3xl lg:heading-4xl text-balance sm:text-wrap',\n            textClassNames\n          )}\n        >\n          {curvedText}\n        </span>\n      ) : (\n        <span\n          className={cx('block w-full min-w-48 text-center', {\n            'min-w-56 md:min-w-80 lg:min-w-96': !textBelow,\n          })}\n          style={{ height: svgTextDimensions?.height }}\n        >\n          <svg\n            className=\"top-1/2 -translate-y-1/2 overflow-visible\"\n            viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n            role=\"img\"\n          >\n            <title>{curvedText}</title>\n            <defs>\n              <path\n                id={curvedHeadingId}\n                fill=\"transparent\"\n                d={`M 0, ${viewBoxHeight} Q ${viewBoxWidth / 2} ${\n                  viewBoxHeight * (1 - calculatedCurvature)\n                } ${viewBoxWidth}, ${viewBoxHeight}`}\n              />\n            </defs>\n            <text\n              ref={textRef}\n              className={cx('heading-3xl fill-current text-center', textClassNames)}\n            >\n              <textPath xlinkHref={`#${curvedHeadingId}`} startOffset=\"50%\" textAnchor=\"middle\">\n                {curvedText}\n              </textPath>\n            </text>\n          </svg>\n        </span>\n      )}\n\n      {textBelow ? (\n        <span\n          className={cx(\n            'heading-4xl md:heading-5xl lg:heading-6xl text-balance sm:text-wrap',\n            textClassNames\n          )}\n        >\n          {textBelow}\n        </span>\n      ) : null}\n      {nodeBelow ? nodeBelow : null}\n    </HeadingLevel>\n  );\n};\n","export * from './curved-heading';\n","export * from './lib';\n","interface ByHilton {\n  className?: string;\n  fill?: string;\n}\n\nexport const ByHilton: React.FC<ByHilton> = ({ fill = 'fill-text-heading', className }) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"140\" height=\"15\" className={className}>\n    <title>by Hilton</title>\n    <g id=\"graduate-by-hilton\" className={fill}>\n      <path d=\"M0 .41h6.59c1.62 0 2.9.45 3.71 1.26.65.65.97 1.44.97 2.41v.04c0 1.6-.85 2.49-1.87 3.06 1.64.63 2.66 1.58 2.66 3.49v.04c0 2.6-2.11 3.89-5.31 3.89H0V.41Zm8.17 4.2c0-.93-.73-1.46-2.05-1.46H3.04v3h2.88c1.38 0 2.25-.45 2.25-1.5v-.04ZM6.65 8.75H3.04v3.12h3.71c1.38 0 2.21-.49 2.21-1.54v-.04c0-.95-.71-1.54-2.31-1.54ZM20.87 9.01 15.41.41h3.65l3.39 5.7L25.9.41h3.55l-5.46 8.54v5.66h-3.12v-5.6ZM99.21 7.13c.01-1.44.53-3.1 1.7-4.52.91-1.11 2.07-1.85 3.45-2.24 1.96-.56 3.9-.49 5.77.33 1.94.84 3.24 2.31 3.86 4.32.79 2.55.49 4.97-1.09 7.15-1.07 1.48-2.55 2.34-4.33 2.68-1.53.3-3.05.24-4.53-.27-1.76-.6-3.08-1.74-3.95-3.38-.61-1.15-.88-2.38-.88-4.07Zm7.6 4.94h.33c.11 0 .22-.02.33-.04 1.34-.19 2.33-.89 2.94-2.09.57-1.13.67-2.33.44-3.56-.32-1.71-1.54-3.11-3.32-3.36-.76-.1-1.51-.07-2.23.19-1.27.46-2.04 1.39-2.43 2.65-.3.96-.32 1.94-.11 2.92.2.95.64 1.78 1.4 2.41.76.63 1.66.89 2.64.87ZM120.63.42H123.81c.14 0 .21.04.27.16 1.57 2.93 3.15 5.86 4.73 8.79.03.05.06.1.13.21V.43h3.13v14.18H128.9c-.15 0-.22-.05-.28-.17l-4.68-8.73c-.04-.07-.08-.15-.15-.22v9.1h-3.14V.42ZM45.02 8.98v5.62h-3.28V.43h3.27v5.72h4.92V.43h3.29V14.6h-3.27V8.98h-4.92ZM90.7 14.61h-3.27V3.34h-3.9V.43H94.6v2.9h-3.9V14.6ZM74.68 11.69h5.27v2.91H71.4V.43h3.28v11.26ZM64.3 14.61h-3.26V.43h3.26v14.18ZM134.31.82h-.68V.41h1.84v.41h-.69v1.61h-.47V.82ZM136.05.42h.65l.56 1.28.56-1.28h.66v2.02h-.47V.99l-.63 1.44h-.23l-.63-1.44v1.44h-.47V.42Z\" />\n    </g>\n  </svg>\n);\n","import type * as React from 'react';\nimport cx from 'classnames';\n\nimport { TextBlock } from '@dx-ui/osc-text-block';\nimport type { ExperimentationConfiguration, OscDomLink } from '@dx-ui/cpm-sdk';\nimport { createCpmComponentDefinition, CpmMappingError } from '@dx-ui/cpm-sdk';\n\nimport { MarkdownBlock } from './MarkdownBlock';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\nimport { CurvedHeading } from '@dx-ui/osc-curved-heading';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { ByHilton } from './svg/by-hilton';\n\nexport type ParsedContentSection = Exclude<\n  React.ComponentProps<typeof TextBlock>['data'],\n  undefined\n>[number];\n\nexport default createCpmComponentDefinition(\n  'Text Component',\n\n  function mapData({\n    data,\n    cmsDocumentType,\n    componentParams,\n    mappedPage: { brandCode },\n    addIssue,\n    clearIssue,\n  }) {\n    if (data.markdownEditor) {\n      return {\n        experimentationConfiguration: data.experimentationConfiguration,\n        links: data.links,\n        markdown: data.markdownEditor,\n      } as {\n        markdown: string;\n        experimentationConfiguration?: ExperimentationConfiguration;\n        links: OscDomLink[];\n      };\n    }\n\n    const isStory = cmsDocumentType === 'Story';\n    const isGraduateBrand = brandCode === 'GU';\n\n    const mappedContentBlocks: Array<ParsedContentSection | null> = (data.contentBlock ?? []).map(\n      (section): ParsedContentSection | null => {\n        if (section?.description) {\n          return { kind: 'description', content: section.description };\n        }\n        if (section?.heading) {\n          return { kind: 'heading', content: section.heading };\n        }\n        if (section?.orderedList) {\n          return { kind: 'orderedList', content: section.orderedList };\n        }\n        if (section?.unorderedList) {\n          return { kind: 'unorderedList', content: section.unorderedList };\n        }\n\n        return null;\n      }\n    );\n\n    if (isStory && data?.links?.length) {\n      const link = data.links[0];\n\n      if (link) {\n        mappedContentBlocks.push({\n          kind: 'cta',\n          content: {\n            _id: '',\n            url: link.url,\n            label: link.label,\n            adaDescription: link.adaDescription || '',\n            isNewWindow: link.isNewWindow || false,\n            experimentationConfiguration: link.experimentationConfiguration,\n          },\n        });\n      }\n    }\n\n    const blocks = mappedContentBlocks.filter((section): section is ParsedContentSection =>\n      Boolean(section)\n    );\n\n    if (componentParams?.curvedHeader) {\n      const headlineTooLong = data?.headline?.length > 12;\n      const isTextAlignUsed =\n        componentParams?.textAlign === 'left' || componentParams?.textAlign === 'right';\n\n      if (!isGraduateBrand) {\n        throw new CpmMappingError(\n          `Curved Header parameter is only supported on Graduate brand pages.`\n        );\n      }\n\n      if (headlineTooLong) {\n        throw new CpmMappingError(`Curved Header headline has a hard limit of 12 characters.`);\n      }\n\n      if (!isStory) {\n        throw new CpmMappingError(`Curved Header is only supported in Story Documents.`);\n      }\n\n      if (isTextAlignUsed) {\n        addIssue({\n          id: data.id,\n          message:\n            'Curved Header is always centered. Setting Text Display to Left or Right will have no effect.',\n        });\n      } else {\n        clearIssue(data.id);\n      }\n    }\n\n    if (componentParams?.headerSvg === 'byHilton') {\n      if (!isGraduateBrand) {\n        throw new CpmMappingError(\n          `Curved Header SVG parameter is only supported on Graduate brand pages.`\n        );\n      }\n    }\n\n    if (!blocks.length && (!data.headline || !data.shortDescription)) {\n      addIssue({\n        id: data.id,\n        message: `\"${data.name || data.displayName}\" has no content attached`,\n      });\n    } else {\n      clearIssue(data.id);\n    }\n\n    return {\n      links: data.links,\n      headline: data.headline,\n      shortDescription: data.shortDescription,\n      longDescription: data.longDescription,\n      blocks,\n    };\n  },\n\n  function TextBlockCpm({ items = [], componentParams, mappedPage: { brandCode, languageCode } }) {\n    const { textAlign, animation, theme, borderTrim } = componentParams;\n\n    const data = items[0];\n\n    if (!data) {\n      return null;\n    }\n\n    if ('headline' in data && 'shortDescription' in data) {\n      const isCurvedHeader = componentParams.curvedHeader;\n      const disableCurve = languageCode !== 'en' ? true : false;\n\n      if (isCurvedHeader) {\n        return (\n          <BrandComponentThemeInline\n            componentParams={componentParams}\n            brandCode={brandCode}\n            backgroundIllustration={{\n              isParallax: componentParams?.backgroundParallax,\n              variant: componentParams?.backgroundIllustration,\n            }}\n          >\n            <div className=\"container\">\n              <div className=\"flex justify-center overflow-y-hidden\">\n                <CurvedHeading\n                  curvedText={data?.headline}\n                  textBelow={data?.shortDescription}\n                  shouldDisable={disableCurve}\n                  textClassNames={\n                    theme === 'dark' ? 'text-text-inverse' : 'brand-ht:text-text-inverse'\n                  }\n                  className=\"py-6 text-center\"\n                  nodeBelow={\n                    componentParams.headerSvg === 'byHilton' && (\n                      <ByHilton\n                        className=\"mx-auto mt-3\"\n                        fill={theme === 'dark' ? 'fill-text-inverse' : 'fill-text-heading'}\n                      />\n                    )\n                  }\n                />\n              </div>\n              {data?.longDescription ? (\n                <BrandTextBody\n                  brandComponentTheme={theme}\n                  className={cx('pb-6 text-center', theme === 'dark' ? 'text-text-inverse' : '')}\n                >\n                  {data?.longDescription}\n                </BrandTextBody>\n              ) : null}\n            </div>\n          </BrandComponentThemeInline>\n        );\n      }\n    }\n\n    if ('blocks' in data) {\n      if (!data?.blocks.length) {\n        return null;\n      }\n\n      const filteredBlocks = data.blocks.map((block) => {\n        // Replace link with one that has been filtered by experimentation agent. Links are filtered by the CPM SDK.\n        // The link will be the same one as the mapping function if no experimentation agent(s) have been defined.\n        if (block.kind === 'cta' && data.links?.[0]) {\n          block.content = data.links[0];\n        }\n\n        return block;\n      });\n\n      return (\n        <BrandComponentThemeInline\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration,\n          }}\n        >\n          <TextBlock\n            textAlign={textAlign}\n            isAnimated={animation || brandCode === 'GU'}\n            isBorderTrim={borderTrim}\n            data={filteredBlocks}\n            brandComponentTheme={theme}\n          />\n        </BrandComponentThemeInline>\n      );\n    }\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <MarkdownBlock\n          textAlign={textAlign}\n          isAnimated={animation || brandCode === 'GU'}\n          isBorderTrim={borderTrim}\n          markdown={data.markdown}\n          brandComponentTheme={theme}\n        />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { Alerts, Alert } from '@dx-ui/osc-alert';\nimport { Link } from '@dx-ui/osc-link';\nimport { createCpmComponentDefinition, useCreateManageContentButton } from '@dx-ui/cpm-sdk';\n\nimport { extractInstanceIndexFromId } from '../../utils';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  'Text Highlight',\n\n  function mapData({ data }) {\n    const { link } = data;\n\n    return {\n      ...data,\n      id: data.id ?? '',\n      link: link?.url ? link : null,\n      links: data.links,\n    };\n  },\n\n  function TextHighlight({\n    items = [],\n    componentParams,\n    listData: data,\n    mappedPage: { brandCode },\n  }) {\n    const metrics = useMetrics();\n    const createManageContentButton = useCreateManageContentButton();\n    const id = data?.id ?? '';\n\n    if (!items.length) {\n      return null;\n    }\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    const onChange = (index: number, direction: 'previous' | 'next' | undefined) => {\n      metrics?.trackTextHeadlinerClick?.([\n        {\n          textHeadlinerNumber: extractInstanceIndexFromId(id),\n          itemNumber: index + 1,\n          totalItems: items.length,\n          leftArrow: direction === 'previous',\n          rightArrow: direction === 'next',\n        },\n      ]);\n    };\n\n    return itemsWithManageContentButton?.length > 0 ? (\n      <BrandComponentThemeInline componentParams={componentParams} brandCode={brandCode}>\n        <div data-testid=\"text-highlight-wrapper\">\n          <Alerts onChangeIndex={(index, direction) => onChange(index, direction)} loop>\n            {itemsWithManageContentButton.map((item) => (\n              <Alert\n                status=\"normal\"\n                title={item.headline}\n                isTruncated={false}\n                key={item.id}\n                className={item.cmsTranslationClasses}\n              >\n                {item?.link?.url ? (\n                  <Link\n                    url={item.link.url}\n                    showNewWindowIcon={item.link.isNewWindow}\n                    isNewWindow={item.link.isNewWindow}\n                    data-conductrics-goal={item.link.experimentationConfiguration?.goal}\n                    data-conductrics-value={item.link.experimentationConfiguration?.value}\n                    className=\"text-text\"\n                  >\n                    {item?.link?.label}\n                  </Link>\n                ) : null}\n                {item.cmsDocumentControl}\n              </Alert>\n            ))}\n          </Alerts>\n        </div>\n      </BrandComponentThemeInline>\n    ) : null;\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport cx from 'classnames';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { Link as Linktype } from '@dx-ui/osc-link';\n\nexport type AttachedContentProps = {\n  headline?: string;\n  description?: string | null;\n  link?: (Linktype & { experimentationConfiguration?: CmsExperimentationConfiguration }) | null;\n  alignContent?: CmsAlignContent;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport const DocsTAttachedContent: React.FC<React.PropsWithChildren<AttachedContentProps>> = () =>\n  null;\n\nexport const AttachedContent = ({\n  headline,\n  description,\n  link,\n  alignContent = 'center',\n  brandComponentTheme,\n}: AttachedContentProps) => {\n  const textAlignCss = {\n    'text-left': alignContent === 'left',\n    'text-right': alignContent === 'right',\n    'text-center': alignContent === 'center',\n  };\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      data-testid=\"carousel-attached-content\"\n      className={cx('container relative py-8 text-center xl:pb-12 xl:pt-10', {\n        'bg-bg-light': isLight,\n        'bg-bg-dark': isDark,\n      })}\n    >\n      {headline ? (\n        <BrandTextHeader\n          className={cx(textAlignCss, 'heading-4xl sm:heading-5xl lg:heading-6xl', {\n            '!text-text-inverse': isDark,\n            'video-poster-headline-light': isLight,\n          })}\n        >\n          {headline}\n        </BrandTextHeader>\n      ) : null}\n\n      {description ? (\n        <BrandTextBody\n          className={cx(textAlignCss, {\n            'text-text-inverse': isDark,\n            'video-poster-long-description-light': isLight,\n          })}\n          brandComponentTheme={brandComponentTheme}\n        >\n          {description}\n        </BrandTextBody>\n      ) : null}\n\n      {link ? (\n        <div className={cx('mt-2 p-0 xl:mt-4', textAlignCss)}>\n          <BrandLink\n            isNewWindow={link.isNewWindow}\n            showNewWindowIcon={link.isNewWindow}\n            url={link.url}\n            label={link.label}\n            brandComponentTheme={brandComponentTheme}\n            data-conductrics-goal={link.experimentationConfiguration?.goal}\n            data-conductrics-value={link.experimentationConfiguration?.value}\n          />\n        </div>\n      ) : null}\n    </div>\n  );\n};\n","import { VideoPlayer } from '@dx-ui/osc-video-player';\nimport { AttachedContent, type AttachedContentProps } from './AttachedContent';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\n\nexport interface VideoProps extends React.ComponentProps<typeof VideoPlayer> {\n  attachedContent?: AttachedContentProps;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  shouldAnimateReveal: boolean;\n  altText?: string;\n}\n\n/**\n * Full screen width video component, auto-play, with video controls and optional attached content with text and CTA link/button.\n */\nexport const VideoPoster = ({\n  videoUrl,\n  videoGroup,\n  videoLabel,\n  videoName,\n  posterImageUrl,\n  orientation = 'landscape',\n  attachedContent,\n  brandComponentTheme,\n  isAutoPlay = true,\n  captionData,\n  audioTracks,\n  captionTracks,\n  transcriptTracks,\n  markupSchemas,\n  shouldAnimateReveal,\n  altText,\n  isMuted,\n}: VideoProps) => {\n  const hasAudio = !altText && !isMuted;\n  return (\n    <>\n      <div data-testid=\"video-poster-wrapper\">\n        <VideoPlayer\n          markupSchemas={markupSchemas}\n          videoUrl={videoUrl}\n          videoGroup={videoGroup}\n          videoLabel={videoLabel}\n          videoName={videoName}\n          posterImageUrl={posterImageUrl}\n          orientation={orientation}\n          videoId=\"video-poster\"\n          captionData={captionData}\n          audioTracks={audioTracks}\n          captionTracks={captionTracks}\n          transcriptTracks={transcriptTracks}\n          isAutoPlay={isAutoPlay}\n          brandComponentTheme={brandComponentTheme}\n          role={altText ? 'img' : undefined}\n          aria-label={altText ? altText : undefined}\n          hasAudio={hasAudio}\n          videoControlsProps={{\n            ...(altText && { videoVariant: 'cinemagraph' }),\n          }}\n        />\n      </div>\n      {attachedContent && (\n        <AnimateRevealItem delay={0} isAnimated={shouldAnimateReveal} animationType=\"fade-in-up\">\n          <AttachedContent\n            headline={attachedContent.headline}\n            description={attachedContent.description}\n            link={attachedContent.link}\n            brandComponentTheme={brandComponentTheme}\n            alignContent={attachedContent.alignContent}\n          />\n        </AnimateRevealItem>\n      )}\n    </>\n  );\n};\n\nexport default VideoPoster;\n","import { useIsClient } from 'usehooks-ts';\n\nimport { CpmMappingError, createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { mapMultimediaListToVideoProps } from '@dx-ui/osc-video-player';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport VideoPoster from './VideoPoster';\n\nexport default createCpmComponentDefinition(\n  'Video Poster',\n  function mapData({ data, mappedPage }) {\n    const video = data?.videos?.[0];\n    const multimedia = data?.multimedia;\n    const link = data.link;\n    const attachedContent = {\n      link: link?.url ? link : undefined,\n      description: data.longDescription,\n      headline: data.headline,\n    };\n\n    if (multimedia?.length) {\n      const firstMultimedia = multimedia[0];\n      const multimediaCaption = firstMultimedia?.captionLink;\n      const multimediaCaptionData =\n        multimediaCaption?.linkLabel && multimediaCaption?.linkUrl\n          ? {\n              caption: multimediaCaption.linkLabel,\n              captionLink: multimediaCaption.linkUrl,\n            }\n          : undefined;\n\n      return {\n        id: data.id,\n        links: data.links,\n        ...mapMultimediaListToVideoProps({ multimedia, mappedPage }),\n        attachedContent,\n        captionData: multimediaCaptionData,\n      };\n    }\n\n    if (video) {\n      if (video.source !== 'cloudinary') {\n        throw new CpmMappingError(\n          `Video Poster only supports Cloudinary videos, but this document's video source is set to \"${video.source}\" (${data.contentType} - ${data.displayName})`\n        );\n      }\n\n      const { caption, captionLink, url: videoUrl, transcript } = video;\n      const captionData = caption && captionLink ? { caption, captionLink } : undefined;\n\n      return {\n        id: data.id,\n        links: data.links,\n        videoUrl,\n        //The \"transcript\" field in the CMS is being used as an interim measure.\n        //https://jira.hilton.com/browse/NHCBP-5914 will be a better long term solution\n        altText: transcript,\n        captionData,\n        attachedContent,\n      };\n    }\n\n    if (!video && !multimedia) {\n      throw new CpmMappingError(\n        `Video Poster must have a video or multimedia asset (${data.contentType} - ${data.displayName})`\n      );\n    }\n\n    return {\n      id: data.id,\n      links: data.links,\n      videoUrl: '',\n    };\n  },\n\n  function VideoPosterCpm({ items = [], componentParams, mappedPage: { brandCode } }) {\n    // the VideoPoster fails to load the video asset on initial render\n    // Triggering a re-render causes the asset to be loaded correctly\n    const isClient = useIsClient();\n\n    const data = items[0];\n\n    if (!data) {\n      return null;\n    }\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <VideoPoster\n          {...data}\n          key={String(isClient)}\n          brandComponentTheme={componentParams.theme}\n          shouldAnimateReveal={brandCode === 'GU'}\n        />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import {\n  ANALYTICS_NO_VALUE,\n  type BaseImageMetrics,\n  ImageClickID,\n  ImageFunction,\n  ImageType,\n} from '@dx-ui/config-metrics';\nimport type { PatchworkGridMetrics } from '../types/patchwork-grid-analytics';\n\ntype GeneratePatchworkGridMetricsParams = {\n  metrics?: Partial<BaseImageMetrics>;\n  position: number;\n  count?: number;\n  itemTitle?: string;\n  headline?: string;\n  imageType?: (typeof ImageType)['Patchwork'];\n};\n\n/**\n * Utility function to generate Patchwork Grid metrics\n */\nexport function generatePatchworkGridMetrics({\n  metrics,\n  position,\n  count = 0,\n  itemTitle = ANALYTICS_NO_VALUE,\n  headline = ANALYTICS_NO_VALUE,\n  imageType = ImageType.Patchwork,\n}: GeneratePatchworkGridMetricsParams): PatchworkGridMetrics {\n  const patchworkGridMetrics = {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      ...metrics?.osc,\n      image: {\n        ...metrics?.osc?.image,\n        count,\n        itemTitle,\n        type: imageType,\n        headline,\n        position,\n        function: ImageFunction.Link,\n      },\n    },\n  };\n\n  return patchworkGridMetrics;\n}\n","import type * as React from 'react';\nimport cx from 'classnames';\nimport { Image } from 'next/dist/client/image-component';\nimport { useEffect, useRef, useState } from 'react';\nimport type { Variant } from '@dx-ui/osc-brand-buttons';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport type { Link } from '@dx-ui/osc-link';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { getAspectRatioUrl } from '@dx-ui/utilities-images';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ANALYTICS_NO_VALUE,\n  clearImageAnalyticsData,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generatePatchworkGridMetrics } from './utils/patchwork-grid-analytics';\n\ntype PatchworkGridImage = {\n  altText?: string;\n  url: string;\n  variants?: {\n    '2x1': string;\n  };\n  captionData?: CaptionProps;\n};\n\ntype RowImageType = {\n  imageCount: number;\n  image: PatchworkGridImage;\n  index: number;\n  isAnimated?: boolean;\n  delay: number;\n  shouldUseGetAspectRatio?: boolean;\n  headline?: string;\n  numImages: number;\n  imageIndex: number;\n  patchWorkHeadline?: string;\n};\n\ntype RowHeadlineType = Pick<\n  PatchWorkGridRowType,\n  | 'link'\n  | 'description'\n  | 'headline'\n  | 'brandComponentTheme'\n  | 'rowHeadlineClassName'\n  | 'customContent'\n> &\n  Pick<React.ComponentProps<typeof AnimateRevealItem>, 'isAnimated' | 'delay'>;\n\nexport type PatchWorkGridRowType = {\n  /** Headline for Copy section in Row */\n  headline?: string;\n  /** Description for section in Row */\n  description?: string;\n  /** CTA for section in Row */\n  link?: React.ComponentProps<typeof Link> & {\n    experimentationConfiguration?: CmsExperimentationConfiguration;\n    /** Optional link variant @see {@linkcode Variant} */\n    variant?: Variant;\n  };\n  /** Flip the direction of the Image / Copy sections */\n  isReverse?: boolean;\n  /** An array of PatchworkGridImage objects */\n  images?: PatchworkGridImage[];\n  /** Brand color themes, \"light\" | \"dark\" */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** Add Tailwind classes to the row headline */\n  rowHeadlineClassName?: string;\n  /** Use getAspectRatioUrl for Images */\n  shouldUseGetAspectRatio?: boolean;\n  /** Enable scrolling animations */\n  isAnimated?: boolean;\n  /** Render custom content instead of heading / description / link */\n  customContent?: React.ReactNode;\n  /** Number of total PatchworkGrid Rows - used for analytics */\n  numImages?: number;\n  /** Starting index for images for that row - used by analytics to compute the image position */\n  startingImageIndex?: number;\n  /** The first non-empty headline in the row data - used for analytics */\n  patchWorkHeadline?: string;\n};\n\nexport function PatchworkGridRow({\n  isReverse,\n  brandComponentTheme,\n  headline,\n  description,\n  link,\n  images,\n  isAnimated,\n  rowHeadlineClassName,\n  shouldUseGetAspectRatio,\n  customContent,\n  numImages = 0,\n  startingImageIndex = 0,\n  patchWorkHeadline,\n}: PatchWorkGridRowType) {\n  // If a headline is provided, the row can only display a single image. Strip out the other images.\n  (headline || description || link) && images && images?.length > 1 && images.splice(1);\n\n  const delay = isReverse ? [200, 100] : [100, 200];\n  const numImagesInRow = images?.length || 0;\n\n  const rowImages =\n    (images && images?.length >= 1 && (headline || description || link)) ||\n    (images && images?.length > 1)\n      ? images\n          .filter((image) => !!image)\n          .map((image, index) => {\n            const normalizedImageIndex = isReverse ? numImagesInRow - index - 1 : index;\n\n            // The imageIndex should be adjusted to account for the startingImageIndex.\n            const imageIndex = startingImageIndex + normalizedImageIndex;\n\n            return RowImage({\n              imageCount: images?.length,\n              image,\n              index,\n              isAnimated,\n              delay: delay[index] ?? 0,\n              shouldUseGetAspectRatio,\n              numImages,\n              imageIndex,\n              patchWorkHeadline,\n            });\n          })\n      : [];\n\n  const orderedElements = [\n    ...rowImages,\n    <RowHeadline\n      link={link}\n      description={description}\n      headline={headline}\n      brandComponentTheme={brandComponentTheme}\n      isAnimated={isAnimated}\n      customContent={customContent}\n      delay={delay[1] ?? 0}\n      rowHeadlineClassName={rowHeadlineClassName}\n      key=\"headline\"\n    />,\n  ];\n\n  return isReverse ? orderedElements.reverse() : orderedElements;\n}\n\nconst RowHeadline: React.FC<RowHeadlineType> = ({\n  link,\n  description,\n  headline,\n  brandComponentTheme,\n  isAnimated,\n  delay,\n  rowHeadlineClassName = '',\n  customContent,\n}) => {\n  if (!headline && !description && !link) return null;\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      className={cx(\n        'col-span-1 flex flex-col justify-center px-8 py-11 sm:col-span-2 sm:py-8 xl:px-32',\n        {\n          [rowHeadlineClassName]: !!rowHeadlineClassName,\n        }\n      )}\n    >\n      {customContent ? (\n        customContent\n      ) : (\n        <AnimateRevealItem delay={delay} isAnimated={isAnimated}>\n          {headline ? (\n            <HeadingLevel\n              headingLevelFallback={3}\n              className={cx('heading-xl patchwork-grid-row-headline-text pb-4', {\n                '!text-text-inverse': isDark,\n                'patchwork-grid-row-headline-text-light': isLight,\n              })}\n            >\n              {headline}\n            </HeadingLevel>\n          ) : null}\n\n          {description ? (\n            <BrandTextBody\n              className={cx(\n                'text-text pb-4 text-base font-normal sm:text-xl',\n                'patchwork-grid-row-description-text',\n                {\n                  'text-text-inverse': isDark,\n                  'patchwork-grid-row-description-text-light': isLight,\n                }\n              )}\n              brandComponentTheme={brandComponentTheme}\n            >\n              {description}\n            </BrandTextBody>\n          ) : null}\n\n          {link ? (\n            <BrandLink\n              url={link.url}\n              label={link.label}\n              isNewWindow={link.isNewWindow}\n              showNewWindowIcon={link.isNewWindow}\n              brandComponentTheme={brandComponentTheme}\n              variant={link.variant}\n              data-conductrics-goal={link.experimentationConfiguration?.goal}\n              data-conductrics-value={link.experimentationConfiguration?.value}\n              onClick={() => clearImageAnalyticsData()}\n            />\n          ) : null}\n        </AnimateRevealItem>\n      )}\n    </div>\n  );\n};\n\nconst RowImage: React.FC<RowImageType> = ({\n  imageCount,\n  image,\n  isAnimated,\n  delay,\n  index,\n  shouldUseGetAspectRatio,\n  numImages,\n  imageIndex,\n  patchWorkHeadline,\n}) => {\n  const imageRef = useRef<HTMLDivElement | null>(null);\n\n  // If two images are provided to a row, the first image should display at a 2x1 aspect ratio.\n  const imageSize = imageCount === 2 && index === 0 ? '2x1' : '1x1';\n\n  // If two images are provided to a row, the first image should display the 2x1 variant, if it exists.\n  const imageSource =\n    imageCount === 2 && index === 0 ? image?.variants?.['2x1'] ?? image?.url : image?.url;\n\n  const [imageSrc, setImageSrc] = useState(imageSource);\n\n  useEffect(() => {\n    const aspectRatioImage = getAspectRatioUrl({\n      src: imageSource,\n      width: imageRef.current ? imageRef.current.offsetWidth : 0,\n    }).twoXimgUrl;\n\n    setImageSrc(shouldUseGetAspectRatio && aspectRatioImage ? aspectRatioImage : imageSource);\n  }, [imageSource, imageRef, shouldUseGetAspectRatio]);\n\n  if (!imageSrc) {\n    return null;\n  }\n\n  return (\n    <figure\n      className={cx('relative col-span-1 overflow-hidden', {\n        'aspect-[2/1] sm:col-span-2 sm:aspect-auto': imageSize === '2x1',\n        'aspect-square': imageSize === '1x1',\n      })}\n      key={index}\n      ref={imageRef}\n    >\n      <AnimateRevealItem delay={delay} className=\"size-full\" isAnimated={isAnimated}>\n        <Image\n          unoptimized={true}\n          src={imageSrc}\n          alt={image?.altText || ''}\n          fill\n          style={{ objectFit: 'cover' }}\n          className=\"image-corner-radius\"\n        />\n        {image.captionData && (\n          <Caption\n            caption={image?.captionData?.caption}\n            captionLink={image?.captionData?.captionLink}\n            metricsOnClick={() => {\n              trackEvent(\n                ANALYTICS_GLOBAL_CLICK_EVENT,\n                generatePatchworkGridMetrics({\n                  count: numImages,\n                  position: imageIndex,\n                  itemTitle: image?.captionData?.caption || ANALYTICS_NO_VALUE,\n                  headline: patchWorkHeadline || ANALYTICS_NO_VALUE,\n                })\n              );\n            }}\n          />\n        )}\n      </AnimateRevealItem>\n    </figure>\n  );\n};\n\nexport default PatchworkGridRow;\n","import type * as React from 'react';\nimport cx from 'classnames';\n\nimport { type PatchWorkGridRowType, PatchworkGridRow } from './patchwork-grid-row';\nimport { HeadingLevel, HeadingLevelProvider } from '@dx-ui/osc-heading-level';\nimport { useMemo } from 'react';\n\nexport type PatchworkGridType = {\n  /** Headline for Patchwork Grid */\n  listHeadline?: string;\n  /** Long Description sits underneath Headline */\n  listDescription?: string;\n  /** Flip the direction of the Image / Copy sections */\n  isReverse?: boolean;\n  /** An array of PatchWorkRowType objects */\n  rows: PatchWorkGridRowType[];\n  /** Theme variable for dark/light theming */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** Add Tailwind classes to root element */\n  className?: string;\n  /** Add Tailwind classes to the row headline */\n  rowHeadlineClassName?: string;\n  /** Use getAspectRatioUrl for Images */\n  shouldUseGetAspectRatio?: boolean;\n  /** Enable scrolling animations */\n  isAnimated?: boolean;\n  /** Render custom content instead of heading / description / link */\n  customContent?: React.ReactNode;\n};\n\nexport const PatchworkGrid: React.FC<PatchworkGridType> = ({\n  listHeadline,\n  listDescription,\n  isReverse = false,\n  rows,\n  brandComponentTheme,\n  className = '',\n  rowHeadlineClassName,\n  shouldUseGetAspectRatio,\n  isAnimated = false,\n  customContent,\n}) => {\n  // Count the total number of images in the Patchwork Grid\n  const imageCount = rows.reduce((total, row) => {\n    return total + (Array.isArray(row.images) ? row.images.length : 0);\n  }, 0);\n\n  // Get the first non-empty headline from the rows\n  const patchWorkHeadline = useMemo(() => {\n    const rowWithHeadline = rows.find((row) => row.headline);\n    return rowWithHeadline ? rowWithHeadline.headline : undefined;\n  }, [rows]);\n\n  let imageIndex = 1;\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <section\n      className={cx('relative', {\n        'bg-bg-transparent': !isLight && !isDark,\n        'bg-bg-light': isLight,\n        'bg-bg-dark': isDark,\n      })}\n    >\n      <div\n        className={cx('container overflow-hidden px-4 sm:px-10', {\n          [className]: !!className,\n        })}\n        data-testid=\"patchworkGrid\"\n      >\n        {listHeadline ? (\n          <HeadingLevel\n            headingLevelFallback={2}\n            className={cx(\n              'heading-2xl lg:heading-4xl patchwork-grid-headline-text mb-2 py-6 xl:mb-4',\n              {\n                '!text-text-inverse': isDark,\n                'patchwork-grid-headline-text-light': isLight,\n              }\n            )}\n          >\n            {listHeadline}\n          </HeadingLevel>\n        ) : null}\n        {listDescription ? (\n          <p\n            className={cx(\n              'text-text mb-4 py-6 text-base font-normal xl:text-xl',\n              'patchwork-grid-description-text',\n              {\n                'text-text-inverse': isDark,\n                'patchwork-grid-description-text-light': isLight,\n              }\n            )}\n          >\n            {listDescription}\n          </p>\n        ) : null}\n        {rows?.map((row, i) => {\n          // Keep track of the current row's image count\n          const numImagesInRow = Array.isArray(row.images) ? row.images.length : 0;\n          const currentImageIndex = imageIndex;\n          imageIndex += numImagesInRow;\n          return (\n            <div\n              // eslint-disable-next-line react/no-array-index-key --- Use i to guard against missing or duplicate headlines\n              key={`${row.headline}${i}`}\n              className=\"grid grid-cols-1 gap-y-4 pb-4 sm:grid-cols-3 sm:gap-x-4\"\n            >\n              <HeadingLevelProvider\n                isEnabled\n                shouldIncreaseLevel={!!listHeadline}\n                level={!listHeadline ? 2 : 3}\n              >\n                <PatchworkGridRow\n                  {...row}\n                  isReverse={isReverse}\n                  brandComponentTheme={brandComponentTheme}\n                  isAnimated={isAnimated}\n                  rowHeadlineClassName={rowHeadlineClassName}\n                  shouldUseGetAspectRatio={shouldUseGetAspectRatio}\n                  customContent={customContent}\n                  numImages={imageCount}\n                  startingImageIndex={currentImageIndex}\n                  patchWorkHeadline={patchWorkHeadline}\n                />\n              </HeadingLevelProvider>\n            </div>\n          );\n        })}\n      </div>\n    </section>\n  );\n};\n\nexport default PatchworkGrid;\n","export * from './lib/patchwork-grid';\n","import { createCpmComponentDefinition, type StructuredAsset } from '@dx-ui/cpm-sdk';\nimport { PatchworkGrid, type PatchworkGridType } from '@dx-ui/patchwork-grid';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport cx from 'classnames';\n\ntype ImageObjectTypes = {\n  aspectRatios: {\n    [key: string]: {\n      url: string;\n    };\n  };\n  altText?: string;\n  caption?: string;\n  captionLink?: string;\n};\n\nconst createImageObject = (image: ImageObjectTypes) => {\n  return {\n    url: image?.aspectRatios['1x1']?.url ?? image?.aspectRatios['3x2']?.url ?? '',\n    variants: {\n      '2x1': image?.aspectRatios?.['2x1']?.url ?? image?.aspectRatios['16x9']?.url ?? '',\n    },\n    altText: image?.altText ?? '',\n    captionData: image?.caption\n      ? {\n          caption: image?.caption,\n          captionLink: image?.captionLink ?? '',\n        }\n      : undefined,\n  };\n};\n\nexport default createCpmComponentDefinition(\n  'Patchwork Grid',\n\n  function mapComponentData({ data, componentParams }) {\n    const images = data.cpmAssets;\n\n    const rows: PatchworkGridType['rows'] = [\n      {\n        headline: data.headline ?? '',\n        description: data.longDescription ?? '',\n        link: {\n          label: data.link?.label ?? '',\n          url: data.link?.url ?? '',\n          isNewWindow: data.link?.isNewWindow ?? false,\n          adaDescription: data.link?.adaDescription ?? '',\n          experimentationConfiguration: data.link?.experimentationConfiguration,\n        },\n        // The first row only gets a single image\n        // min 1 / max 1 image for row 1\n        images: images.length > 0 && images[0] ? [createImageObject(images[0])] : [],\n      },\n    ];\n\n    if (images.length > 1) {\n      // If more than one image is supplied in the doc, these fall onto the second row.\n      // min 2  / max 3 images for row 2\n      const additionalImages = images\n        .slice(1, 4)\n        .filter((image): image is StructuredAsset => image !== undefined)\n        .map(createImageObject);\n\n      rows.push({\n        images: additionalImages,\n      });\n    }\n\n    return {\n      id: data.id,\n      links: data.links,\n      brandComponentTheme: componentParams?.theme,\n      rows,\n    };\n  },\n\n  function PatchworkGridCpm({ items = [], componentParams, mappedPage: { brandCode } }) {\n    const isWA = brandCode === 'WA';\n\n    if (!items.length) {\n      return null;\n    }\n\n    const patchworks = items.map((data) => {\n      data.rows = data.rows.map((row) => {\n        // Replace link with one that has been filtered by experimentation agent. Links are filtered by the CPM SDK.\n        // The link will be the same one as the mapping function if no experimentation agent(s) have been defined.\n        if (row.link) {\n          row.link = data.links[0];\n        }\n\n        return row;\n      });\n\n      return data;\n    });\n\n    return (\n      <BrandComponentThemeInline\n        componentClassName={cx({\n          'pt-8 xl:p-12 brand-wa:pt-16 brand-wa:xl:pt-20': componentParams.topPadding === 'default',\n          'pb-8 xl:p-12 brand-wa:pb-16 brand-wa:xl:pb-20':\n            componentParams.bottomPadding === 'default',\n        })}\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        {patchworks.map((data, index) => (\n          <AnimateRevealItem\n            key={data.id}\n            delay={0}\n            animationType=\"fade-in-up\"\n            isAnimated={brandCode === 'GU'}\n          >\n            <PatchworkGrid\n              key={data.id}\n              isReverse={componentParams.display === 'mirror' || Boolean(index % 2)}\n              brandComponentTheme={data?.brandComponentTheme}\n              rows={data.rows}\n              isAnimated={isWA}\n            />\n          </AnimateRevealItem>\n        ))}\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import Icon from '@dx-ui/osc-icon';\nimport { useState } from 'react';\n\nexport type TImageControlButton = {\n  icon: 'next' | 'previous';\n  className: string;\n  labelText: string;\n  navigationText: string;\n  onClick: () => void;\n};\n\nconst ImageControlButton = ({\n  icon,\n  className,\n  labelText,\n  navigationText,\n  onClick,\n}: TImageControlButton) => {\n  const [justClicked, setJustClicked] = useState(false);\n\n  const onButtonClick = () => {\n    if (onClick) onClick();\n    setJustClicked(true);\n    let timeout: number | null = null;\n    timeout = window.setTimeout(() => {\n      setJustClicked(false);\n    }, 150);\n    return () => timeout && window.clearTimeout(timeout);\n  };\n\n  const onButtonFocus = () => {\n    setJustClicked(true);\n    let timeout: number | null = null;\n    timeout = window.setTimeout(() => {\n      setJustClicked(false);\n    }, 150);\n    return () => timeout && window.clearTimeout(timeout);\n  };\n\n  return (\n    <>\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {justClicked ? labelText.replace('Next slide,', '').replace('Previous slide', '') : ''}\n      </span>\n      <button className={className} onClick={onButtonClick} onFocus={onButtonFocus} type=\"button\">\n        <span className=\"sr-only\">{navigationText}</span>\n        <Icon\n          className=\"fill-bg-alt\"\n          name={icon === 'next' ? 'arrowhead-right' : 'arrowhead-left'}\n          size=\"xl\"\n        />\n      </button>\n    </>\n  );\n};\n\nexport default ImageControlButton;\n","import Image from 'next/image';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport { GetHeightForWidthAndAspectRatio } from '@dx-ui/osc-responsive-image';\n\ntype FilmstripImage = {\n  id?: string;\n  alt: string;\n  src: string;\n  width: number;\n  aspectRatio: AspectRatio;\n  className?: string;\n  onLoad?: () => void;\n};\n\nconst NextImage = ({\n  id,\n  alt,\n  src,\n  width,\n  aspectRatio,\n  onLoad,\n  className = 'object-cover',\n}: FilmstripImage) => (\n  <Image\n    id={id}\n    alt={alt}\n    src={src}\n    width={width}\n    height={GetHeightForWidthAndAspectRatio(width, aspectRatio)}\n    className={className}\n    placeholder=\"blur\"\n    blurDataURL=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mN88h8AAs0B5QWO2loAAAAASUVORK5CYII=\"\n    onLoad={onLoad}\n  />\n);\n\nexport { NextImage as Image };\n","import {\n  ANALYTICS_NO_VALUE,\n  type BaseImageMetrics,\n  ImageClickID,\n  type ImageClickIDType,\n  ImageFunction,\n  ImageType,\n} from '@dx-ui/config-metrics';\nimport type { FilmstripMetrics } from '../types/filmstrip-analytics';\n\ntype GenerateFilmstripMetricsParams = {\n  metrics?: Partial<BaseImageMetrics>;\n  position?: number;\n  count?: number;\n  headline?: string;\n  itemTitle?: string;\n  clickID: ImageClickIDType;\n  imageFunction?: (typeof ImageFunction)['Link'];\n};\n\n/**\n * Utility function to generate carousel metrics\n */\nexport const generateFilmstripMetrics = ({\n  metrics,\n  position = 0,\n  headline = ANALYTICS_NO_VALUE,\n  itemTitle = ANALYTICS_NO_VALUE,\n  clickID = ImageClickID.Scroll,\n  count = 0,\n  imageFunction,\n}: GenerateFilmstripMetricsParams): FilmstripMetrics => {\n  const filmstripMetrics = {\n    click: {\n      ...metrics?.click,\n      clickID,\n    },\n    osc: {\n      ...metrics?.osc,\n      image: {\n        ...metrics?.osc?.image,\n        headline,\n        count,\n        position,\n        itemTitle,\n        type: ImageType.Filmstrip,\n      },\n    },\n  };\n\n  if (imageFunction === ImageFunction.Link) {\n    filmstripMetrics.osc.image.function = ImageFunction.Link;\n  }\n\n  return filmstripMetrics;\n};\n","import { useState, useRef } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport ImageControlButton from './image-control-button';\nimport { Image } from './utils';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { ImageClickIDType } from '@dx-ui/config-metrics';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ImageClickID,\n  ImageFunction,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateFilmstripMetrics } from './utils/filmstrip-analytics';\n\nexport type FilmstripImageProps = {\n  id?: string;\n  altText: string;\n  desktopImageUrl: string;\n  mobileImageUrl: string;\n  captionData?: CaptionProps;\n  headline?: string;\n  linkHref?: string;\n  linkText?: string;\n  text?: string;\n};\n\nexport type FilmstripProps = {\n  /** An array of FilmstripImageProps **/\n  headline?: string;\n  images: FilmstripImageProps[];\n  /** The desired width of the Images within the Filmstrip. **/\n  imageWidth?: number;\n};\n\nconst getDisplayIndex = (activeIndex: number, imagesLength: number) => {\n  if ((activeIndex + 1) % imagesLength !== 0) return (activeIndex + 1) % imagesLength;\n  else return imagesLength;\n};\n\nconst getPreviousPreviousIndex = (activeIndex: number, imagesLength: number) => {\n  if (activeIndex - 2 === -1) return imagesLength - 1;\n  if (activeIndex - 2 === -2) return imagesLength - 2;\n  else return activeIndex - 2;\n};\n\nconst getPreviousIndex = (activeIndex: number, imagesLength: number) => {\n  if (activeIndex - 1 < 0) return imagesLength - 1;\n  else return activeIndex - 1;\n};\nconst getNextIndex = (activeIndex: number, imagesLength: number) => {\n  if (activeIndex + 1 > imagesLength - 1) return 0;\n  else return activeIndex + 1;\n};\nconst getNextNextIndex = (activeIndex: number, imagesLength: number) => {\n  if (activeIndex + 2 === imagesLength) return 0;\n  if (activeIndex + 2 === imagesLength + 1) return 1;\n  else return activeIndex + 2;\n};\n\nconst getOffsets = (imageWidth: number) => {\n  const doubleOffset = imageWidth * 2 + 16 * 2;\n\n  return {\n    previousPreviousOffset: `-${doubleOffset}px 0px`,\n    previousOffset: `-${imageWidth + 16}px 0px`,\n    nextOffset: `${imageWidth + 16}px -432px`,\n    nextNextOffset: `${doubleOffset}px -432px`,\n  };\n};\n\nexport const Filmstrip = ({ headline, images, imageWidth = 768 }: FilmstripProps) => {\n  const [t] = useTranslation('osc-filmstrip');\n  const [activeIndex, setActiveIndex] = useState(0);\n  const [touchStart, setTouchStart] = useState(0);\n  const [touchEnd, setTouchEnd] = useState(0);\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const itemText = t('itemLabel') || 'slide';\n  const imageCount = (Array.isArray(images) && images.length) || 0;\n  const nextText = t('next', {\n    itemLabel: itemText,\n    count: images.length,\n    activeIndexLabel: getDisplayIndex(activeIndex, imageCount),\n  });\n  const previousText = t('previous', {\n    itemLabel: itemText,\n    count: imageCount,\n    activeIndexLabel: getDisplayIndex(activeIndex, imageCount),\n  });\n\n  const selectors =\n    'cursor-pointer absolute flex justify-center items-center bg-bg-inverse opacity-80';\n  const imgBaseAspectRatio = '16:9';\n  const imgBaseClassName = 'object-contain aspect-[16/9] image-corner-radius';\n\n  const trackFilmstripMetrics = (\n    index: number,\n    images: FilmstripImageProps[],\n    clickID: ImageClickIDType,\n    imageFunction?: (typeof ImageFunction)['Link']\n  ) =>\n    trackEvent(ANALYTICS_GLOBAL_CLICK_EVENT, {\n      ...generateFilmstripMetrics({\n        position: index + 1,\n        count: images.length,\n        clickID,\n        headline,\n        itemTitle: images[index]?.altText || undefined,\n        imageFunction,\n      }),\n    });\n\n  const scroll = (direction: string) => {\n    switch (direction) {\n      case 'next':\n        if (activeIndex === imageCount - 1) {\n          setActiveIndex(0);\n        } else {\n          setActiveIndex(activeIndex + 1);\n        }\n        trackFilmstripMetrics(activeIndex, images, ImageClickID.Scroll);\n        break;\n      case 'previous':\n        if (activeIndex === 0) {\n          setActiveIndex(imageCount - 1);\n        } else {\n          setActiveIndex(activeIndex - 1);\n        }\n        trackFilmstripMetrics(activeIndex, images, ImageClickID.Scroll);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handleTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n    e.stopPropagation();\n    setTouchStart(e.targetTouches[0]?.clientX ?? 0);\n  };\n  const handleTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n    setTouchEnd(e.targetTouches[0]?.clientX ?? 0);\n  };\n  const handleTouchEnd = () => {\n    // swipe sensitivity can be adjusted - travel distance in [number] pixels of user swipe event\n    const SWIPE_SENSITIVITY = 50;\n    // swipe left\n    if (touchStart - touchEnd > SWIPE_SENSITIVITY && touchEnd > 0) scroll('next');\n    // swipe right\n    if (touchStart - touchEnd < -SWIPE_SENSITIVITY && touchEnd > 0) scroll('previous');\n\n    setTouchStart(0);\n    setTouchEnd(0);\n  };\n\n  if (images && images.length) {\n    return (\n      <div\n        ref={ref}\n        className=\"relative overflow-hidden\"\n        data-testid=\"filmstrip-wrapper\"\n        onTouchEnd={handleTouchEnd}\n        onTouchMove={handleTouchMove}\n        onTouchStart={handleTouchStart}\n      >\n        <div className=\"my-4 flex justify-center overflow-hidden\">\n          <ImageControlButton\n            icon=\"previous\"\n            className={`${selectors} left-0 top-1/2 z-20 h-12 w-8 text-2xl`}\n            labelText={previousText}\n            navigationText={t('previousNavText')}\n            onClick={() => scroll('previous')}\n          />\n          <div className=\"z-10\">\n            {(rect?.width ?? 0) >= 2364 ? (\n              <div\n                className=\"absolute\"\n                style={{\n                  width: imageWidth,\n                  translate: getOffsets(imageWidth).previousPreviousOffset,\n                }}\n                role=\"presentation\"\n              >\n                {images.map((image, index) => (\n                  <div\n                    key={image.altText}\n                    className={cx('relative snap-center rounded', {\n                      hidden: index !== getPreviousPreviousIndex(activeIndex, images.length),\n                    })}\n                  >\n                    <Image\n                      alt={image.altText}\n                      src={image.desktopImageUrl}\n                      width={imageWidth}\n                      aspectRatio={imgBaseAspectRatio}\n                      className={imgBaseClassName}\n                    />\n                  </div>\n                ))}\n              </div>\n            ) : null}\n\n            <div\n              className=\"absolute\"\n              style={{\n                width: imageWidth,\n                translate: getOffsets(imageWidth).previousOffset,\n              }}\n              role=\"presentation\"\n            >\n              {images.map((image, index) => (\n                <div\n                  key={image.altText}\n                  className={cx('relative snap-center rounded', {\n                    hidden: index !== getPreviousIndex(activeIndex, images.length),\n                  })}\n                >\n                  <Image\n                    alt={image.altText}\n                    src={image.desktopImageUrl}\n                    width={imageWidth}\n                    aspectRatio={imgBaseAspectRatio}\n                    className={imgBaseClassName}\n                  />\n                </div>\n              ))}\n            </div>\n            <div>\n              {images.map((image, index) => (\n                <div\n                  key={image.altText}\n                  className={cx('relative snap-center rounded', {\n                    hidden: index !== activeIndex,\n                  })}\n                >\n                  <Image\n                    alt={image.altText}\n                    src={image.desktopImageUrl}\n                    width={imageWidth}\n                    aspectRatio={imgBaseAspectRatio}\n                    className={imgBaseClassName}\n                  />\n                  {image.captionData && (\n                    <Caption\n                      caption={image?.captionData?.caption}\n                      captionLink={image?.captionData?.captionLink}\n                      metricsOnClick={() =>\n                        trackFilmstripMetrics(index, images, ImageClickID.Img, ImageFunction.Link)\n                      }\n                    />\n                  )}\n                </div>\n              ))}\n            </div>\n            <div\n              className=\"absolute\"\n              style={{\n                width: imageWidth,\n                translate: getOffsets(imageWidth).nextOffset,\n              }}\n              role=\"presentation\"\n            >\n              {images.map((image, index) => (\n                <div\n                  key={image.altText}\n                  className={cx('relative snap-center rounded', {\n                    hidden: index !== getNextIndex(activeIndex, images.length),\n                  })}\n                >\n                  <Image\n                    alt={image.altText}\n                    src={image.desktopImageUrl}\n                    width={imageWidth}\n                    aspectRatio={imgBaseAspectRatio}\n                    className={imgBaseClassName}\n                  />\n                </div>\n              ))}\n            </div>\n            {(rect?.width ?? 0) >= 2364 ? (\n              <div\n                className=\"absolute\"\n                style={{\n                  width: imageWidth,\n                  translate: getOffsets(imageWidth).nextNextOffset,\n                }}\n                role=\"presentation\"\n              >\n                {images.map((image, index) => (\n                  <div\n                    key={image.altText}\n                    className={cx('relative snap-center rounded', {\n                      hidden: index !== getNextNextIndex(activeIndex, images.length),\n                    })}\n                  >\n                    <Image\n                      alt={image.altText}\n                      src={image.desktopImageUrl}\n                      width={imageWidth}\n                      aspectRatio={imgBaseAspectRatio}\n                      className={imgBaseClassName}\n                    />\n                  </div>\n                ))}\n              </div>\n            ) : null}\n          </div>\n          <ImageControlButton\n            icon=\"next\"\n            className={`${selectors} right-0 top-1/2 z-20 h-12 w-8 text-2xl`}\n            labelText={nextText}\n            navigationText={t('nextNavText')}\n            onClick={() => scroll('next')}\n          />\n          <div\n            className={`${selectors} text-bg-alt bottom-4 right-0 z-20 h-8 w-12 px-8 py-4 text-sm`}\n          >\n            {getDisplayIndex(activeIndex, images.length)}/{images.length}\n          </div>\n        </div>\n      </div>\n    );\n  } else {\n    return null;\n  }\n};\n\nexport default Filmstrip;\n","export * from './lib/filmstrip';\n","import { Filmstrip } from '@dx-ui/osc-filmstrip';\nimport type { FilmstripProps } from '@dx-ui/osc-filmstrip';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { BrandLinkProps } from '@dx-ui/osc-brand-buttons';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport cx from 'classnames';\n\nexport interface BrandFilmstripProps extends FilmstripProps {\n  headline?: string;\n  description?: string;\n  link?: BrandLinkProps & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  brandComponentTheme?: 'light' | 'dark';\n  textAlign: CmsAlignContent | undefined;\n}\n\nexport const BrandFilmstrip = ({\n  headline,\n  description,\n  link,\n  images,\n  brandComponentTheme,\n  textAlign = 'center',\n}: BrandFilmstripProps) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div className=\"py-8 brand-wa:py-16 xl:py-12 brand-wa:xl:py-20\">\n      <div\n        className={cx('container', {\n          'text-start': textAlign === 'left',\n          'text-center': textAlign === 'center',\n          'text-end': textAlign === 'right',\n        })}\n        data-testid=\"filmstrip\"\n      >\n        {headline ? (\n          <HeadingLevel\n            headingLevelFallback={2}\n            className={cx('heading-2xl pb-2 xl:heading-4xl xl:pb-4', {\n              '!text-text-inverse': isDark,\n              '!filmstrip-headline-text-light': isLight,\n            })}\n          >\n            {headline}\n          </HeadingLevel>\n        ) : null}\n        {description ? (\n          <p\n            className={cx('pb-4 text-base font-normal text-text md:text-lg xl:pb-8 xl:text-xl', {\n              'text-text-inverse': isDark,\n              '!filmstrip-description-text-light': isLight,\n            })}\n          >\n            {description}\n          </p>\n        ) : null}\n      </div>\n      <Filmstrip images={images} headline={headline} />\n      <div className={cx('container overflow-hidden px-4 text-center sm:px-10')}>\n        {link ? (\n          <BrandLink\n            url={link.url}\n            label={link.label}\n            isNewWindow={link.isNewWindow}\n            showNewWindowIcon={link.isNewWindow}\n            brandComponentTheme={brandComponentTheme}\n            data-conductrics-goal={link.experimentationConfiguration?.goal}\n            data-conductrics-value={link.experimentationConfiguration?.value}\n            variant=\"solid\"\n          />\n        ) : null}\n      </div>\n    </div>\n  );\n};\n","import { createCpmComponentDefinition, type StructuredAsset } from '@dx-ui/cpm-sdk';\nimport { BrandFilmstrip } from './BrandFilmstrip';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\ntype ImageObjectTypes = {\n  aspectRatios: {\n    [key: string]: {\n      url: string;\n    };\n  };\n  altText?: string;\n  caption?: string;\n  captionLink?: string;\n  id?: string;\n};\n\nconst createImageObject = (image: ImageObjectTypes) => {\n  const imageObject = {\n    id: image?.aspectRatios['16x9']?.url ?? '',\n    desktopImageUrl: image?.aspectRatios['16x9']?.url ?? '',\n    mobileImageUrl: image?.aspectRatios['3x2']?.url ?? '',\n    altText: image?.altText ?? '',\n    captionData: image?.caption\n      ? {\n          caption: image?.caption,\n          captionLink: image?.captionLink ?? '',\n        }\n      : undefined,\n  };\n\n  return imageObject;\n};\n\nexport default createCpmComponentDefinition(\n  'Film Strip',\n\n  function mapComponentData({ data }) {\n    const images = data.cpmAssets;\n\n    if (!images) {\n      throw new Error(`${data.displayName || data.name} is missing an image`);\n    }\n\n    const filmStripImages = images\n      .filter((image): image is StructuredAsset => image !== undefined)\n      .map(createImageObject);\n\n    return {\n      id: data.id,\n      links: data.links,\n      images: filmStripImages,\n    };\n  },\n\n  function CpmFilmStrip({ items = [], listData, componentParams, mappedPage: { brandCode } }) {\n    const data = items[0];\n\n    if (!data || !data.images) {\n      return null;\n    }\n\n    const headline = listData?.headline ?? '';\n    const description = listData?.description ?? '';\n    const links = listData?.links ?? [];\n    const listLink = links.length ? links[0] : undefined;\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={brandCode === 'GU'}>\n          <BrandFilmstrip\n            images={data.images}\n            headline={headline}\n            description={description}\n            link={listLink}\n            textAlign={componentParams?.textAlign}\n            brandComponentTheme={componentParams?.theme}\n          />\n        </AnimateRevealItem>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { ANALYTICS_NO_VALUE, ImageClickID, ImageFunction, ImageType } from '@dx-ui/config-metrics';\nimport type { FullWidthMediaMetrics } from '../types/full-width-media-analytics';\n\nexport const FULL_WIDTH_MEDIA_POSITION = 1;\nexport const FULL_WIDTH_MEDIA_COUNT = 1;\n\nexport type GenerateFullWidthMediaMetricsParams = {\n  metrics?: Partial<FullWidthMediaMetrics>;\n  headline?: string;\n  itemTitle?: string;\n};\n\nexport const generateFullWidthMediaMetrics = ({\n  headline,\n  itemTitle,\n  metrics,\n}: GenerateFullWidthMediaMetricsParams): FullWidthMediaMetrics => {\n  const fullWidthMediaMetrics = {\n    click: {\n      ...metrics?.click,\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      ...metrics?.osc,\n      image: {\n        ...metrics?.osc?.image,\n        headline: metrics?.osc?.image?.headline || headline || ANALYTICS_NO_VALUE,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        position: FULL_WIDTH_MEDIA_POSITION,\n        count: FULL_WIDTH_MEDIA_COUNT,\n        type: ImageType.Full,\n        function: ImageFunction.Link,\n      },\n    },\n  };\n  return fullWidthMediaMetrics;\n};\n\nexport const generatePartialFullWidthMediaMetrics = (\n  headline: string | null | undefined\n): Partial<FullWidthMediaMetrics> => {\n  return {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        headline: headline || ANALYTICS_NO_VALUE,\n        type: ImageType.Full,\n        function: ImageFunction.Link,\n      },\n    },\n  };\n};\n","import Image from 'next/image';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { Caption } from '@dx-ui/osc-caption';\nimport cx from 'classnames';\nimport { useRef } from 'react';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport { generateFullWidthMediaMetrics } from './utils/full-width-media-analytics';\nimport type { FullWidthMediaMetrics } from './types/full-width-media-analytics';\nimport type { VideoPlayer } from '@dx-ui/osc-video-player';\nimport {\n  Video,\n  VideoCaptions,\n  VideoControls,\n  useVideoPlayerClasses,\n  useVideoPlayer,\n  VideoPlayerMarkup,\n} from '@dx-ui/osc-video-player';\n\nexport type FullWidthMediaProps = {\n  image: {\n    altText: string;\n    mobileImageUrl: string;\n    desktopImageUrl: string;\n  };\n  captionData?: CaptionProps;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  imageWrapperClass?: string;\n  children: React.ReactNode;\n  alignment: 'left' | 'center' | 'right';\n  metrics?: Partial<FullWidthMediaMetrics>;\n  media?: React.ComponentProps<typeof VideoPlayer>;\n};\n\nexport type FullWidthMediaContentProps = Pick<FullWidthMediaProps, 'alignment'> & {\n  longDescription: string;\n  headline: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  link?: {\n    label: string;\n    url: string;\n    adaDescription?: string;\n    isNewWindow?: boolean;\n    experimentationConfiguration?: CmsExperimentationConfiguration;\n  };\n};\n\nexport function FullWidthMediaContentBlock({\n  alignment = 'center',\n  longDescription,\n  headline,\n  brandComponentTheme,\n  link,\n}: FullWidthMediaContentProps) {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isCentered = alignment === 'center';\n\n  return (\n    <div\n      className={cx('flex w-full items-center lg:min-h-full', {\n        'justify-end': alignment === 'right',\n      })}\n    >\n      <div\n        className={cx('relative w-full max-w-screen-lg lg:w-1/2 xl:w-[45%]', {\n          'lg:start-1/2 lg:-translate-x-1/2 rtl:lg:translate-x-1/2': isCentered,\n        })}\n      >\n        <div\n          className={cx('px-16 py-8', {\n            'bg-bg': !isDark && !isLight,\n            'bg-bg-dark': isDark,\n            'bg-bg-light': isLight,\n          })}\n        >\n          {headline ? (\n            <BrandTextHeader\n              className={cx('text-center lg:mb-4 ', {\n                'text-center': isCentered,\n                'lg:text-start': !isCentered,\n                '!text-text-inverse': isDark,\n                'brand-ht:text-text-inverse': isLight,\n              })}\n            >\n              {headline}\n            </BrandTextHeader>\n          ) : null}\n          {longDescription ? (\n            <BrandTextBody\n              brandComponentTheme={brandComponentTheme}\n              className={cx('text-center ', {\n                'text-center': !isCentered,\n                'lg:text-start': !isCentered,\n                'text-text-inverse': isDark,\n                'brand-ht:text-text-inverse': isLight,\n              })}\n            >\n              {longDescription}\n            </BrandTextBody>\n          ) : null}\n          {link?.label && link?.url ? (\n            <div\n              className={cx('mt-4 flex w-full justify-center', {\n                'lg:justify-center': isCentered,\n                'lg:justify-normal': !isCentered,\n              })}\n            >\n              <BrandLink\n                url={link.url}\n                label={link.label}\n                isNewWindow={link.isNewWindow}\n                showNewWindowIcon={link.isNewWindow}\n                brandComponentTheme={brandComponentTheme}\n                data-conductrics-goal={link.experimentationConfiguration?.goal}\n                data-conductrics-value={link.experimentationConfiguration?.value}\n                metricsOnClick={() =>\n                  trackEvent(\n                    ANALYTICS_GLOBAL_CLICK_EVENT,\n                    generateFullWidthMediaMetrics({\n                      headline,\n                      itemTitle: link.label,\n                    })\n                  )\n                }\n              />\n            </div>\n          ) : null}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport function FullWidthMedia({\n  image,\n  captionData,\n  children,\n  imageWrapperClass,\n  alignment,\n  metrics,\n  media,\n  brandComponentTheme,\n}: FullWidthMediaProps) {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const playerClassNames = useVideoPlayerClasses({});\n  const isCinemagraph = media ? !!media.altText : false;\n  const hasAudio = !media?.altText && !media?.isMuted;\n  const videoUrl = media?.videoUrl || '';\n  const playerProps = useVideoPlayer({\n    ...media,\n    hasAudio,\n    videoUrl,\n    wrapperElement: ref,\n  });\n  const controlsAlignment =\n    alignment === 'left'\n      ? 'right'\n      : alignment === 'right'\n      ? 'left'\n      : alignment === 'center'\n      ? 'center'\n      : 'default';\n\n  return (\n    <div className=\"relative md:aspect-[16/9]\">\n      {media && playerProps ? (\n        <>\n          {media?.markupSchemas ? <VideoPlayerMarkup markupSchemas={media?.markupSchemas} /> : null}\n          <div\n            className={cx(\n              'relative mb-4 aspect-square size-full md:aspect-[16/9] lg:absolute lg:mb-0',\n              imageWrapperClass\n            )}\n          >\n            <Video\n              {...playerProps.videoProps}\n              captionData={media?.captionData}\n              isAutoPlay={media?.isAutoPlay}\n              posterImageUrl={media?.posterImageUrl}\n              videoId={media?.videoId}\n              videoUrl={media?.videoUrl}\n              role={isCinemagraph ? 'img' : undefined}\n              aria-label={isCinemagraph ? media?.altText : undefined}\n              className=\"h-full\"\n              figureClassName=\"h-full\"\n              videoClassName=\"h-full object-cover\"\n            />\n            <VideoCaptions\n              {...playerProps.videoCaptionProps}\n              brandComponentTheme={brandComponentTheme}\n              className={playerClassNames.captionClassNames}\n            />\n            <VideoControls\n              videoVariant={isCinemagraph ? 'cinemagraph' : undefined}\n              {...playerProps.videoControlsProps}\n              brandComponentTheme={brandComponentTheme}\n              className={cx(playerClassNames.controlsClassNames[controlsAlignment])}\n            />\n          </div>\n        </>\n      ) : null}\n      {!media && (\n        <div\n          className={cx(\n            'relative -z-10 aspect-square md:aspect-[16/9] md:w-full lg:absolute lg:aspect-auto lg:size-full',\n            imageWrapperClass\n          )}\n        >\n          <Image\n            className=\"hidden object-cover lg:block\"\n            unoptimized={true}\n            src={image.desktopImageUrl}\n            alt={image?.altText || ''}\n            fill\n          />\n          <Image\n            className=\"block object-cover lg:hidden\"\n            unoptimized={true}\n            src={image.mobileImageUrl}\n            alt={image?.altText || ''}\n            fill\n          />\n        </div>\n      )}\n      {children}\n      {!media && captionData ? (\n        <Caption\n          {...captionData}\n          align={alignment === 'right' ? 'start' : 'end'}\n          metricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetrics({\n                metrics,\n                itemTitle: captionData?.caption,\n              })\n            )\n          }\n        />\n      ) : null}\n    </div>\n  );\n}\n\nexport default FullWidthMedia;\n","import { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\n\nexport type HexVariant =\n  | 'hxHexagonBlue'\n  | 'hxHexagonDarkBlue'\n  | 'hxHexagonDarkOrange'\n  | 'hxHexagonDarkPurple'\n  | 'hxHexagonDarkRed'\n  | 'hxHexagonRed';\nconst getHamptonHexColor = (variant: HexVariant) => {\n  if (variant === 'hxHexagonBlue') return '0047B5';\n  if (variant === 'hxHexagonDarkBlue') return '002666';\n  if (variant === 'hxHexagonDarkOrange') return 'C55426';\n  if (variant === 'hxHexagonDarkPurple') return '6F79BD';\n  if (variant === 'hxHexagonDarkRed') return '801F40';\n  if (variant === 'hxHexagonRed') return 'CF3242';\n};\n\ntype HamptonHexBlockProps = {\n  headline: string;\n  variant: HexVariant;\n  link?: {\n    label: string;\n    url: string;\n    adaDescription?: string;\n    isNewWindow?: boolean;\n    experimentationConfiguration?: CmsExperimentationConfiguration;\n  };\n  metricsOnClick?: () => void;\n};\n\nexport const HamptonHexBlock = ({\n  headline,\n  variant,\n  link,\n  metricsOnClick,\n}: HamptonHexBlockProps) => {\n  return (\n    <div className=\"relative start-0 top-0 flex min-h-full w-full items-center justify-center\">\n      <div className=\"flex size-full flex-col flex-wrap items-center justify-center gap-12\">\n        <article className=\"font-headline text-text-inverse relative inline-flex w-full font-bold uppercase md:my-16 md:w-auto\">\n          <div\n            className=\"absolute inset-y-0 start-1/2 z-[-1] hidden aspect-[640/400] -translate-x-1/2 bg-auto bg-center bg-no-repeat md:block\"\n            style={{\n              backgroundImage: `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 640 400\"><path fill=\"%23${getHamptonHexColor(\n                variant\n              )}\" d=\"M320 400c-10 0-19-1-29-4L34 323c-20-5-34-23-34-43V120c0-20 14-38 34-43L291 4a106 106 0 0 1 58 0l257 73c20 5 34 23 34 43v160c0 20-14 38-34 43l-257 73c-10 3-19 4-29 4\" /></svg>')`,\n            }}\n          />\n          <div\n            style={{ backgroundColor: `#${getHamptonHexColor(variant)}` }}\n            className=\"bg-bg-dark flex min-h-[2.4em] w-full flex-col content-center items-center hyphens-auto text-balance break-words py-6 text-center text-4xl md:mx-4 md:w-auto md:max-w-[20ch] md:!bg-transparent md:pb-[calc((100%*(72/400)))] md:pt-[calc((100%*(72/400))+0.1em)] md:text-5xl lg:text-7xl\"\n          >\n            <HeadingLevel headingLevelFallback={2} className=\"w-full px-12 py-4 text-center\">\n              {headline}\n            </HeadingLevel>\n            {link?.label && link?.url ? (\n              <>\n                <BrandLink\n                  anchorClassName=\"md:hidden\"\n                  brandComponentTheme=\"dark\"\n                  url={link.url}\n                  label={link.label}\n                  isNewWindow={link.isNewWindow}\n                  showNewWindowIcon={link.isNewWindow}\n                  data-conductrics-goal={link.experimentationConfiguration?.goal}\n                  data-conductrics-value={link.experimentationConfiguration?.value}\n                  metricsOnClick={metricsOnClick}\n                />\n                <BrandLink\n                  anchorClassName=\"hidden md:block absolute -bottom-16\"\n                  url={link.url}\n                  label={link.label}\n                  isNewWindow={link.isNewWindow}\n                  showNewWindowIcon={link.isNewWindow}\n                  data-conductrics-goal={link.experimentationConfiguration?.goal}\n                  data-conductrics-value={link.experimentationConfiguration?.value}\n                  metricsOnClick={metricsOnClick}\n                />\n              </>\n            ) : null}\n          </div>\n        </article>\n      </div>\n    </div>\n  );\n};\n","export * from './full-width-media';\nexport * from './hampton-hex-block';\nexport * from './types/full-width-media-analytics';\nexport * from './utils/full-width-media-analytics';\n","export * from './lib';\n","import { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport { type CpmMappedComponentData, type CpmMappingFunctionInput } from '@dx-ui/cpm-sdk';\nimport type { HexVariant } from '@dx-ui/libs/osc-full-width-media';\nimport {\n  FullWidthMedia,\n  FullWidthMediaContentBlock,\n  HamptonHexBlock,\n  generateFullWidthMediaMetrics,\n  generatePartialFullWidthMediaMetrics,\n} from '@dx-ui/libs/osc-full-width-media';\nimport { mapMultimediaListToVideoProps } from '@dx-ui/osc-video-player';\n\nexport function mapData({\n  data,\n  mappedPage,\n}: CpmMappingFunctionInput<'Full-Width Media and Copy Overlay' | 'Full-Width Media and Copy'>) {\n  const asset = data.cpmAssets[0];\n  const multimedia = data.multimedia;\n  let captionData, media;\n\n  if (multimedia?.length) {\n    media = multimedia?.length\n      ? mapMultimediaListToVideoProps({ multimedia, mappedPage })\n      : undefined;\n\n    const { captionLink } = multimedia[0] ?? {};\n    if (captionLink?.linkLabel && captionLink?.linkUrl) {\n      captionData = {\n        caption: captionLink.linkLabel,\n        captionLink: captionLink.linkUrl,\n      };\n    }\n  } else if (asset) {\n    captionData = {\n      caption: asset.caption,\n      captionLink: asset.captionLink,\n    };\n  }\n\n  return {\n    $ref: data.ref?.$ref,\n    id: data.id,\n    description: data.shortDescription,\n    title: data.headline,\n    link: data.link ?? undefined,\n    desktopImageUrl: asset?.aspectRatios['16x9']?.url ?? '',\n    mobileImageUrl: asset?.aspectRatios['1x1']?.url ?? '',\n    media,\n    captionData,\n    imageAltText: asset?.altText ?? '',\n    segmentIds: data.segmentIds,\n    experimentationConfiguration: data.experimentationConfiguration,\n    links: data.links,\n  };\n}\n\nexport function FullWidthMediaAndCopyOverlay({\n  items = [],\n  componentParams,\n  mappedPage,\n}: CpmMappedComponentData<\n  'Full-Width Media and Copy Overlay' | 'Full-Width Media and Copy',\n  ReturnType<typeof mapData>\n>) {\n  const data = items[0];\n\n  if (!data) {\n    return null;\n  }\n\n  const shouldDisplayStandardContent =\n    !componentParams.display ||\n    componentParams.display === 'mediaWithCopy' ||\n    componentParams.display === 'static' ||\n    componentParams.display === '';\n  const shouldDisplayHamptonHex =\n    [\n      'hxHexagonBlue',\n      'hxHexagonDarkBlue',\n      'hxHexagonDarkOrange',\n      'hxHexagonDarkPurple',\n      'hxHexagonDarkRed',\n      'hxHexagonRed',\n    ].includes(componentParams.display) && mappedPage.brandCode === 'HP';\n\n  return (\n    <FullWidthMedia\n      alignment={componentParams.textAlign}\n      imageWrapperClass={shouldDisplayHamptonHex ? 'md:absolute md:size-full' : ''}\n      image={{\n        altText: data.imageAltText,\n        mobileImageUrl: data.mobileImageUrl,\n        desktopImageUrl: data.desktopImageUrl,\n      }}\n      captionData={data.captionData}\n      metrics={generatePartialFullWidthMediaMetrics(data.title)}\n      media={data?.media}\n      brandComponentTheme={componentParams.theme}\n    >\n      {shouldDisplayStandardContent ? (\n        <FullWidthMediaContentBlock\n          link={data.link}\n          headline={data.title}\n          alignment={componentParams.textAlign}\n          longDescription={data.description}\n          brandComponentTheme={componentParams.theme}\n        />\n      ) : null}\n      {shouldDisplayHamptonHex ? (\n        <HamptonHexBlock\n          link={data.link}\n          variant={componentParams.display as HexVariant}\n          headline={data.title}\n          metricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetrics({\n                headline: data.title,\n                itemTitle: data.link?.label,\n              })\n            )\n          }\n        />\n      ) : null}\n    </FullWidthMedia>\n  );\n}\n","import { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\n\nimport {\n  mapData,\n  FullWidthMediaAndCopyOverlay,\n} from '../../components/brand/full-width-media-copy-overlay/definition';\n\nexport default createCpmComponentDefinition(\n  'Full-Width Media and Copy',\n  mapData,\n  FullWidthMediaAndCopyOverlay\n);\n","export { default } from './cpm-component-definition';\n","import { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\n\nimport {\n  mapData,\n  FullWidthMediaAndCopyOverlay,\n} from '../../components/brand/full-width-media-copy-overlay/definition';\n\nexport default createCpmComponentDefinition(\n  'Full-Width Media and Copy Overlay',\n  mapData,\n  FullWidthMediaAndCopyOverlay\n);\n","export { default } from './cpm-component-definition';\n","import { useRect } from '@dx-ui/utilities-use-rect';\nimport { useRef } from 'react';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport type { OffsetImage } from './offset';\nimport cx from 'classnames';\n\ntype ImageProps = OffsetImage & {\n  aspectRatio: AspectRatio;\n  className?: string;\n  onClick?: () => void;\n};\nexport const Image = ({ src, alt, captionData, aspectRatio, className, onClick }: ImageProps) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n\n  return src && alt ? (\n    <div ref={ref}>\n      <ResponsiveImage\n        altText={alt}\n        imageUrl={src}\n        aspectRatio={aspectRatio}\n        width={rect?.width ?? 0}\n        captionData={captionData}\n        className={cx('image-corner-radius', className)}\n        onClick={onClick}\n      />\n    </div>\n  ) : null;\n};\n","import type { ImageFunction } from '@dx-ui/config-metrics';\nimport { ANALYTICS_NO_VALUE, ImageClickID, ImageType } from '@dx-ui/config-metrics';\nimport type { OffsetMetrics } from '../types/offset-analytics';\n\nexport const DEFAULT_OFFSET_IMAGE_POSITION = 1;\nexport const OFFSET_IMAGE_COUNT = 2;\n\ntype GenerateOffsetMetricsParam = {\n  headline?: string;\n  itemTitle?: string;\n  position?: number;\n  imageFunction?: (typeof ImageFunction)['Link'];\n};\n\nexport const generateOffsetMetrics = ({\n  headline,\n  itemTitle,\n  position,\n  imageFunction,\n}: GenerateOffsetMetricsParam): OffsetMetrics => {\n  const offsetMetrics = {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        // pass in innerText from headline\n        //itemTitle: pass in alt from image.small OR image.large\n        headline: headline || ANALYTICS_NO_VALUE,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        type: ImageType.Offset,\n        function: imageFunction,\n        count: OFFSET_IMAGE_COUNT,\n        position,\n      },\n    },\n  } as const;\n\n  return offsetMetrics;\n};\n","import type { ReactElement, ReactNode } from 'react';\n\ntype ReactNodeWithChildren = ReactElement<{ children: ReactNode }>;\n\n/**\n * Type for `getReactNodeInnerText`\n * - Accepts any `ReactNode`\n * - Returns a `string`\n */\ntype ReactNodeInnerText = {\n  (jsx: ReactNode): string;\n  default: ReactNodeInnerText;\n};\n\nconst hasProps = (jsx: ReactNode): jsx is ReactNodeWithChildren =>\n  jsx !== null &&\n  typeof jsx === 'object' &&\n  Object.prototype.hasOwnProperty.call(jsx, 'props') &&\n  'children' in (jsx as ReactElement).props;\n\nconst reduceJsxToString = (previous: string, current: ReactNode): string =>\n  previous + getReactNodeInnerText(current);\n\nexport const getReactNodeInnerText: ReactNodeInnerText = (jsx: ReactNode): string => {\n  // Empty\n  if (jsx === null || typeof jsx === 'boolean' || typeof jsx === 'undefined') {\n    return '';\n  }\n\n  // Numeric children\n  if (typeof jsx === 'number') {\n    return jsx.toString();\n  }\n\n  // String literals\n  if (typeof jsx === 'string') {\n    return jsx;\n  }\n\n  // Array of JSX\n  if (Array.isArray(jsx)) {\n    return jsx.reduce<string>(reduceJsxToString, '');\n  }\n\n  // React elements with children\n  if (hasProps(jsx)) {\n    return getReactNodeInnerText(jsx.props.children);\n  }\n\n  // Default\n  return '';\n};\n\ngetReactNodeInnerText.default = getReactNodeInnerText;\n","export * from './get-react-node-inner-text';\n","export * from './lib';\n","import { Image } from './utils';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport type { ReactNode } from 'react';\nimport cx from 'classnames';\n\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, ImageFunction, trackEvent } from '@dx-ui/config-metrics';\nimport { generateOffsetMetrics } from './utils/offset-analytics';\nimport { getReactNodeInnerText } from '@dx-ui/utilities-get-react-node-inner-text';\n\nconst OFFSET_LARGE_IMAGE_POSITION = 1;\nconst OFFSET_SMALL_IMAGE_POSITION = 2;\n\nexport type OffsetImage = { alt: string; src: string; captionData?: CaptionProps };\n\nexport interface TOffset {\n  image: { small: OffsetImage; large: OffsetImage };\n  headline: ReactNode;\n  /**\n   * Content and images are displayed in the reverse order\n   */\n  isInversePattern?: boolean;\n  /** Add Tailwind classes to root element */\n  className?: string;\n}\n\nexport const Offset: React.FC<React.PropsWithChildren<TOffset>> = ({\n  image,\n  headline,\n  children,\n  isInversePattern = false,\n  className = '',\n}) => {\n  const innerString = getReactNodeInnerText(headline);\n  const handleOffsetMetric = (image: OffsetImage, position: number) =>\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateOffsetMetrics({\n        headline: innerString,\n        itemTitle: image.alt,\n        imageFunction: ImageFunction.Link,\n        position,\n      })\n    );\n  return (\n    <div\n      className={cx('relative', {\n        [className]: !!className,\n      })}\n    >\n      <div\n        className={cx('grid gap-8 md:grid-rows-3 md:gap-6 lg:gap-8', {\n          'md:grid-cols-[2fr_1fr]': isInversePattern,\n          'md:grid-cols-[1fr_2fr]': !isInversePattern,\n        })}\n      >\n        <div\n          className={cx('self-end md:translate-y-20 lg:translate-y-14 xl:translate-y-0', {\n            'md:order-2': isInversePattern,\n          })}\n        >\n          {headline}\n        </div>\n        <div\n          className={cx('md:row-span-2 md:self-end', {\n            'md:order-1': isInversePattern,\n          })}\n        >\n          {image?.large ? (\n            <Image\n              {...image.large}\n              aspectRatio=\"4:2\"\n              onClick={() => handleOffsetMetric(image.large, OFFSET_LARGE_IMAGE_POSITION)}\n            />\n          ) : null}{' '}\n        </div>\n        <div\n          className={cx('self-center md:row-span-2', {\n            'md:order-3': isInversePattern,\n          })}\n        >\n          {image?.small ? (\n            <Image\n              {...image.small}\n              aspectRatio=\"4:2\"\n              onClick={() => handleOffsetMetric(image.small, OFFSET_SMALL_IMAGE_POSITION)}\n            />\n          ) : null}{' '}\n        </div>\n        <div className={cx({ 'md:order-4': isInversePattern })}>{children}</div>\n      </div>\n    </div>\n  );\n};\n\nexport default Offset;\n","export * from './lib/offset';\nexport * from './lib/utils/offset-analytics';\nexport * from './lib/types/offset-analytics';\n","import type { OscDomLink } from '@dx-ui/cpm-sdk';\nimport { Offset, generateOffsetMetrics, DEFAULT_OFFSET_IMAGE_POSITION } from '@dx-ui/osc-offset';\nimport type { TOffset } from '@dx-ui/osc-offset';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport cx from 'classnames';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, ImageFunction, trackEvent } from '@dx-ui/config-metrics';\nimport { getReactNodeInnerText } from '@dx-ui/utilities-get-react-node-inner-text';\nexport interface BrandOffsetProps extends TOffset {\n  shortDescription?: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  link?: OscDomLink;\n}\n\n/**\n * Brand Offset utilizes the OSC-Offset and adds a stylized headline, short description, and link.\n */\nexport const BrandOffset = ({\n  image,\n  headline,\n  isInversePattern = false,\n  link,\n  shortDescription,\n  brandComponentTheme,\n}: BrandOffsetProps) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const headlineString = getReactNodeInnerText(headline);\n\n  return (\n    <div className=\"container py-8 brand-wa:py-16 xl:py-12 brand-wa:xl:py-20\">\n      <Offset\n        image={image}\n        headline={\n          headline && (\n            <HeadingLevel\n              headingLevelFallback={2}\n              className={cx(\n                'heading-2xl brand-ey:heading-3xl brand-nd:sm:heading-4xl brand-es:lg:heading-4xl brand-gu:lg:heading-4xl brand-hi-refresh:lg:heading-4xl brand-lx:font-serif brand-wa:font-serif brand-wa:normal-case',\n                {\n                  '!text-text-inverse': isDark,\n                  'brand-ht:!text-text-inverse': isLight,\n                }\n              )}\n            >\n              {headline}\n            </HeadingLevel>\n          )\n        }\n        isInversePattern={isInversePattern}\n      >\n        {shortDescription && (\n          <BrandTextBody\n            className={cx('mb-3 py-2 text-sm text-text brand-wa:font-serif md:text-base', {\n              'text-text-inverse': isDark,\n              'brand-ht:!text-text-inverse': isLight,\n              'brand-ou:text-primary': !isDark,\n            })}\n            brandComponentTheme={brandComponentTheme}\n          >\n            {shortDescription}\n          </BrandTextBody>\n        )}\n        {link?.url && (\n          <BrandLink\n            url={link?.url}\n            label={link?.label}\n            isNewWindow={link?.isNewWindow}\n            showNewWindowIcon={link?.isNewWindow}\n            brandComponentTheme={brandComponentTheme}\n            data-conductrics-goal={link.experimentationConfiguration?.goal}\n            data-conductrics-value={link.experimentationConfiguration?.value}\n            metricsOnClick={() =>\n              trackEvent(\n                ANALYTICS_GLOBAL_CLICK_EVENT,\n                generateOffsetMetrics({\n                  headline: headlineString,\n                  itemTitle: link.label,\n                  imageFunction: ImageFunction.Link,\n                  position: DEFAULT_OFFSET_IMAGE_POSITION,\n                })\n              )\n            }\n          />\n        )}\n      </Offset>\n    </div>\n  );\n};\n\nexport default BrandOffset;\n","import { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\n\nimport BrandOffset from './BrandOffset';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\nexport default createCpmComponentDefinition(\n  'Offset Grid',\n\n  function mapComponentData({ data, componentParams }) {\n    const images = data.cpmAssets;\n\n    return {\n      id: data.id,\n      links: data.links,\n      headline: data?.headline ?? '',\n      shortDescription: data?.shortDescription ?? '',\n      isInversePattern: componentParams?.display === 'mirror' || false,\n      images: {\n        small: {\n          alt: images[0]?.altText ?? '',\n          src:\n            images[0]?.aspectRatios['2x1']?.url ??\n            images[0]?.aspectRatios['16x9']?.url ??\n            images[0]?.aspectRatios['3x2']?.url ??\n            '',\n          captionData: {\n            caption: images[0]?.caption ?? '',\n            captionLink: images[0]?.captionLink ?? '',\n          },\n        },\n        large: {\n          alt: images[1]?.altText ?? '',\n          src:\n            images[1]?.aspectRatios['2x1']?.url ??\n            images[1]?.aspectRatios['16x9']?.url ??\n            images[1]?.aspectRatios['3x2']?.url ??\n            '',\n          captionData: {\n            caption: images[1]?.caption ?? '',\n            captionLink: images[1]?.captionLink ?? '',\n          },\n        },\n      },\n      link: data.link?.url\n        ? {\n            _id: data.link?._id ?? '',\n            adaDescription: data.link?.adaDescription ?? '',\n            isNewWindow: data.link?.isNewWindow ?? false,\n            label: data.link?.label ?? '',\n            url: data.link?.url ?? '',\n            experimentationConfiguration: data.link.experimentationConfiguration,\n          }\n        : undefined,\n    };\n  },\n\n  function OffsetCpm({ items = [], componentParams, mappedPage: { brandCode } }) {\n    const data = items[0];\n\n    if (!data) {\n      return null;\n    }\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration,\n        }}\n      >\n        <AnimateRevealItem delay={0} animationType=\"fade-in-up\" isAnimated={brandCode === 'GU'}>\n          <BrandOffset\n            image={data?.images}\n            headline={data?.headline}\n            isInversePattern={data?.isInversePattern}\n            shortDescription={data?.shortDescription}\n            link={data?.link}\n            brandComponentTheme={componentParams?.theme}\n          />\n        </AnimateRevealItem>\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import * as React from 'react';\nimport type { HeadingLevel as AccordionHeadingLevel } from '@dx-ui/osc-accordion';\nimport { Accordion as Details } from '@dx-ui/osc-accordion';\nimport { useTranslation } from 'next-i18next';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport cx from 'classnames';\nimport { HeadingLevel, useHeadingLevel } from '@dx-ui/osc-heading-level';\n\nexport type AccordionDetails = {\n  key: string;\n  collapsedButtonLabel: string;\n  expandedButtonLabel: string;\n  content: React.ReactNode;\n};\n\ntype AccordionProps = {\n  details: Array<AccordionDetails>;\n  headline?: string;\n  description?: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport const Accordion = ({\n  details,\n  headline,\n  description,\n  brandComponentTheme,\n}: AccordionProps) => {\n  const [t] = useTranslation('cpm-mapping-shared');\n  const [, level] = useHeadingLevel();\n  let _accordionHeadingLevel: number | undefined = headline ? level + 1 : level;\n\n  if (_accordionHeadingLevel > 6) {\n    _accordionHeadingLevel = undefined;\n  }\n\n  const headingLevel = _accordionHeadingLevel\n    ? (`h${_accordionHeadingLevel}` as AccordionHeadingLevel)\n    : undefined;\n\n  const [expandedAccordions, setExpandedAccordions] = React.useState<Array<string>>([]);\n\n  const areAllExpanded = details.length === expandedAccordions.length;\n\n  const expandAll = () => {\n    setExpandedAccordions(\n      details.map((detail) => {\n        return detail.key;\n      })\n    );\n  };\n  const collapseAll = () => {\n    setExpandedAccordions([]);\n  };\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div className=\"container\">\n      {headline ? (\n        <HeadingLevel\n          headingLevelFallback={2}\n          className={cx('heading-2xl lg:heading-2xl brand-hi:text-text lg:mb-2', {\n            '!text-text-inverse': isDark,\n            'brand-ht:text-text-inverse': isLight,\n          })}\n        >\n          {headline}\n        </HeadingLevel>\n      ) : null}\n\n      {description ? (\n        <BrandTextBody\n          className={cx('mb-6', {\n            '!text-text-inverse': isDark,\n            'brand-ht:text-text-inverse': isLight,\n          })}\n        >\n          {description}\n        </BrandTextBody>\n      ) : null}\n      <button\n        onClick={areAllExpanded ? collapseAll : expandAll}\n        className={cx('btn btn-xl btn-primary-link mb-6', {\n          'text-text-inverse': isDark,\n          'brand-ht:text-text-inverse': isLight,\n        })}\n        type=\"button\"\n      >\n        {areAllExpanded ? t('collapseAll') : t('expandAll')}\n      </button>\n      <Details\n        className={cx('accordion-stacked border-b border-border', {\n          'text-text-inverse': isDark,\n          'brand-ou:border-primary brand-ht:text-text-inverse': isLight,\n        })}\n        items={details}\n        type=\"multiple\"\n        variant=\"stacked\"\n        onValueChange={(keys) => {\n          setExpandedAccordions(keys);\n        }}\n        value={expandedAccordions}\n        headingLevel={headingLevel}\n      />\n    </div>\n  );\n};\n\nexport default Accordion;\n","import { Markdown } from '@dx-ui/osc-markdown';\nimport { useRouter } from 'next/router';\nimport { Link } from '@dx-ui/osc-link';\nimport cx from 'classnames';\nimport type { BrandPageComponentThemeType } from '@dx-ui/gql-types';\nimport type { ReactNode } from 'react';\nimport type { ContentBlock } from 'dx-shared-schema/dist/types/couchbase/story';\nimport { type OscDomLink } from '@dx-ui/cpm-sdk';\nimport type { AgentsSelection } from '@dx-ui/framework-conductrics';\nimport { useShouldRenderExperiment } from '@dx-ui/framework-conductrics';\n\nexport function ContentWrapper({\n  children,\n  theme,\n}: {\n  children: ReactNode;\n  theme: BrandPageComponentThemeType | undefined;\n}) {\n  const isDark = theme === 'dark';\n  const isLight = theme === 'light';\n\n  return (\n    <div\n      className={cx('border-b border-border p-6', {\n        'text-text-inverse': isDark,\n        'brand-ou:border-primary brand-ht:text-text-inverse': isLight,\n      })}\n    >\n      {children}\n    </div>\n  );\n}\n\nexport type ContentData = ContentBlock & {\n  key: string;\n  links?: OscDomLink[];\n};\n\nexport function Content({\n  content,\n  experimentationAgents,\n}: {\n  content: ContentData;\n  experimentationAgents: AgentsSelection;\n}) {\n  const { locale = 'en' } = useRouter();\n  const shouldRenderExperiment = useShouldRenderExperiment();\n  const origin = typeof window !== 'undefined' ? window.location.origin : '';\n  const markdownProps = { language: locale, origin };\n\n  if ('description' in content) {\n    return <Markdown {...markdownProps}>{content.description!}</Markdown>;\n  }\n\n  if ('heading' in content) {\n    return (\n      <div className=\"mb-2 text-xl font-bold\">\n        <Markdown {...markdownProps}>{content.heading!}</Markdown>\n      </div>\n    );\n  }\n\n  if ('unorderedList' in content) {\n    return Array.isArray(content.unorderedList) ? (\n      <ul className=\"ms-7 list-disc\">\n        {content.unorderedList.map((listItem) => (\n          <li key={listItem}>\n            <Markdown {...markdownProps}>{listItem}</Markdown>\n          </li>\n        ))}\n      </ul>\n    ) : null;\n  }\n\n  if ('orderedList' in content) {\n    return Array.isArray(content.orderedList) ? (\n      <ol className=\"ms-7 list-decimal\">\n        {content.orderedList.map((listItem) => (\n          <li key={listItem}>\n            <Markdown {...markdownProps}>{listItem}</Markdown>\n          </li>\n        ))}\n      </ol>\n    ) : null;\n  }\n\n  if ('links' in content) {\n    return Array.isArray(content.links)\n      ? content.links\n          .filter((link) =>\n            shouldRenderExperiment(experimentationAgents, link.experimentationConfiguration)\n          )\n          .map((link) => (\n            <div key={link.url + link.label}>\n              <Link\n                url={link.url}\n                adaDescription={link.adaDescription}\n                isNewWindow={link.isNewWindow}\n                data-conductrics-goal={link.experimentationConfiguration?.goal}\n                data-conductrics-value={link.experimentationConfiguration?.value}\n              >\n                {link.label}\n              </Link>\n            </div>\n          ))\n      : null;\n  }\n\n  return null;\n}\n","import type { OscDomLink } from '@dx-ui/cpm-sdk';\nimport { createCpmComponentDefinition, removeNullyFromArray } from '@dx-ui/cpm-sdk';\nimport Accordion, { type AccordionDetails } from './Accordion';\nimport { Content, ContentWrapper, type ContentData } from './AccordionContent';\nimport type { ContentBlock } from 'dx-shared-schema/dist/types/couchbase/story';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\n\ninterface FaqItem {\n  question?: string;\n  answerParagraph?: string[];\n  answerOrderedList?: string[];\n  answerUnOrderedList?: string[];\n  links?: OscDomLink[];\n}\n\ninterface FaqBlock {\n  faq?: FaqItem[];\n}\n\ntype AccordionDetailsData = Omit<AccordionDetails, 'content'> & {\n  content: ContentData[];\n};\n\nfunction hash<T>(x: T): string {\n  let hash = 0;\n  const str = JSON.stringify(x);\n  for (let i = 0; i < str.length; i++) {\n    hash = (hash * 31 + str.charCodeAt(i)) >>> 0;\n  }\n  return hash.toString(16);\n}\n\nfunction remapFaqContentToDetails(faqContent: FaqBlock[]): AccordionDetailsData[] {\n  const faqBlocks = removeNullyFromArray(faqContent.flatMap((x) => x.faq));\n\n  return faqBlocks.map((faqItem): AccordionDetailsData => {\n    const content: ContentData[] = [];\n\n    if (Array.isArray(faqItem.answerParagraph) && faqItem.answerParagraph.length > 0) {\n      faqItem.answerParagraph.forEach((paragraph) => {\n        content.push({\n          description: paragraph,\n          key: hash(paragraph),\n        });\n      });\n    }\n\n    if (Array.isArray(faqItem.answerOrderedList) && faqItem.answerOrderedList.length > 0) {\n      content.push({\n        orderedList: faqItem.answerOrderedList,\n        key: hash(faqItem.answerOrderedList),\n      });\n    }\n\n    if (Array.isArray(faqItem.answerUnOrderedList) && faqItem.answerUnOrderedList.length > 0) {\n      content.push({\n        unorderedList: faqItem.answerUnOrderedList,\n        key: hash(faqItem.answerUnOrderedList),\n      });\n    }\n\n    if (Array.isArray(faqItem.links) && faqItem.links.length > 0) {\n      content.push({\n        links: faqItem.links,\n        key: hash(faqItem.links),\n      });\n    }\n\n    return {\n      key: hash(faqItem),\n      collapsedButtonLabel: faqItem.question ?? '',\n      expandedButtonLabel: faqItem.question ?? '',\n      content,\n    };\n  });\n}\n\nfunction keyContent(blockContent: ContentBlock[]): ContentData[] {\n  return blockContent.map((block) => ({\n    ...block,\n    key: hash(block),\n  }));\n}\n\nexport default createCpmComponentDefinition(\n  'Accordion',\n\n  function mapComponentData({ data }) {\n    return {\n      key: `acc${data.id}`,\n      links: data.links,\n      collapsedButtonLabel: data.headline || data.label || data.title || '',\n      expandedButtonLabel: data.headline || data.label || data.title || '',\n      content: keyContent(data.contentBlock ?? []),\n      faqContent:\n        data.contentType === 'dxcms:Faq' ? remapFaqContentToDetails(data.subTopic ?? []) : null,\n    };\n  },\n\n  function CpmAccordion({\n    items = [],\n    listData,\n    componentParams,\n    mappedPage: { brandCode },\n    experimentationAgents,\n  }) {\n    const firstItem = items[0];\n\n    if (!firstItem) {\n      return null;\n    }\n\n    const renderedItems: AccordionDetailsData[] =\n      (items[0]?.faqContent ? firstItem.faqContent : items) ?? [];\n\n    return (\n      <BrandComponentThemeInline\n        componentParams={componentParams}\n        brandCode={brandCode}\n        backgroundIllustration={{\n          isParallax: componentParams?.backgroundParallax,\n          variant: componentParams?.backgroundIllustration || 'none',\n        }}\n      >\n        <Accordion\n          headline={listData?.headline ?? undefined}\n          description={listData?.description ?? undefined}\n          brandComponentTheme={componentParams.theme}\n          details={renderedItems.map(({ content, ...data }) => ({\n            ...data,\n            content: (\n              <ContentWrapper theme={componentParams.theme}>\n                {content.map(\n                  (content) => (\n                    <Content\n                      key={content.key}\n                      content={content}\n                      experimentationAgents={experimentationAgents}\n                    />\n                  )\n                  // null\n                )}\n              </ContentWrapper>\n            ),\n          }))}\n        />\n      </BrandComponentThemeInline>\n    );\n  }\n);\n","export { default } from './cpm-component-definition';\n","import type { ReactNode } from 'react';\nimport cx from 'classnames';\n\ntype Height =\n  | `${number}px`\n  | `${number}%`\n  | `${number}em`\n  | `${number}rem`\n  | `${number}vh`\n  | `${number}vw`\n  | 'auto'\n  | 'fit-content'\n  | 'inherit'\n  | 'initial'\n  | 'unset';\n\nexport type SpacerProps = {\n  /* Add a class to the Spacer wrapper */\n  wrapperClassName?: string;\n  /* Add a fixed height to the spacer */\n  height?: Height;\n  /* Add a background image to the spacer, which can be position using styles like background position and background-repeat. */\n  backgroundImage?: string;\n  /* Style object to customise the spacer as required */\n  styles?: React.CSSProperties;\n  /* Child node allows the spacer to render a responsive image or any other markup */\n  children?: ReactNode;\n};\n\nexport const Spacer: React.FC<React.PropsWithChildren<SpacerProps>> = ({\n  wrapperClassName,\n  height,\n  backgroundImage,\n  styles,\n  children,\n}) => {\n  const defaultStyles: React.CSSProperties = {\n    backgroundPosition: 'top left',\n    backgroundRepeat: 'no-repeat',\n  };\n\n  return (\n    <div\n      className={cx('w-full', wrapperClassName)}\n      data-testid=\"spacer\"\n      style={{\n        height,\n        backgroundImage: backgroundImage ? `url(${backgroundImage})` : '',\n        ...defaultStyles,\n        ...styles,\n      }}\n    >\n      {children}\n    </div>\n  );\n};\n\nexport default Spacer;\n","export * from './spacer';\n","export * from './lib';\n","export const LivSmartAccent = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 1440 48\"\n    width=\"100%\"\n    height=\"auto\"\n    data-testid=\"livsmart-accent\"\n    aria-hidden=\"true\"\n  >\n    <clipPath id=\"a\">\n      <path d=\"m0 0h1440v48h-1440z\" />\n    </clipPath>\n    <path d=\"m0 0h1440v48h-1440z\" fill=\"#4d583e\" />\n    <g clipPath=\"url(#a)\">\n      <path d=\"m-2.52-1.92h909.13v51.35h-909.13z\" fill=\"#4d583e\" />\n      <path d=\"m932.71-13.4h419.13v75.19h-419.13z\" fill=\"#4d583e\" />\n      <path d=\"m866.85 197h-6.05v-497.5h6.05z\" fill=\"#643f56\" />\n      <path d=\"m477.39-188.45h440.59v310.33h-440.59z\" fill=\"#e16435\" />\n      <path\n        d=\"m714.8 120.14h-21.92c-4.91 0-9.63-1.95-13.1-5.42l-1.66-1.66c-6.22-6.21-7.22-15.93-2.4-23.27l34.74-52.98c2.77-4.22 3.7-9.4 2.56-14.32l-35.3-153.51c-.53-2.32-.62-4.72-.24-7.07l.9-5.65c1.25-7.82 7.33-13.99 15.13-15.35l11.51-2c6.1-1.06 12.32 1 16.59 5.48l29.89 31.39c3.04 3.19 7.12 5.2 11.51 5.65l67.36 7.01c4.1.43 8.23-.53 11.73-2.71l29.35-18.32c2.06-1.29 3.85-2.97 5.27-4.95l15.46-21.64c5.96-8.35 17.57-10.26 25.9-4.27l.96.69c2.33 1.67 4.23 3.86 5.57 6.4l8.35 15.81c2.05 3.88 2.65 8.37 1.71 12.65l-29.36 132.85c-.74 3.34-.54 6.83.58 10.06l29.23 84.43c.68 1.95 1.02 4 1.02 6.06 0 11.27-9.97 19.93-21.13 18.35l-16.71-2.36c-.82-.12-1.64-.18-2.47-.18l-181.04-1.19z\"\n        fill=\"#643f56\"\n      />\n      <path\n        d=\"m917.98-188.45c14.14 0 25.61 11.46 25.61 25.61v449.95h-51.21v-449.95c0-14.14 11.46-25.61 25.61-25.61z\"\n        fill=\"#f59e4f\"\n      />\n      <path\n        d=\"m1439.72 45.31c-56.72 15.99-89.56 52.88-108.51 88.36 30.66-16.64 71.56-44.53 108.51-88.36z\"\n        fill=\"#643f56\"\n      />\n      <path\n        d=\"m1204.44 385.71c-4.47-90.58-15.69-185.03-28.7-274.93-5.79-39.28-12.02-78.5-18.61-117.65-.65-3.83-.1-7.76 1.5-11.3 10.67-23.64 18.86-46.95 24.92-69.85 0-.03 0-.06 0-.1-6.98-43.49-7.52-96.92 8.73-156.48.49-1.8 1.02-3.61 1.54-5.42-2.33-17.87-5.68-35.24-9.88-52-31.69-126.45-110.15-219.67-139.2-250.89-4.48-4.81-12.52-2.27-13.47 4.23-45.61 309.2 77.36 487.07 112.85 530.98 2.19 2.71 3.6 5.95 4.11 9.4 5.96 40.13 11.54 80.31 16.65 120.56 11.16 89.64 20.48 183.96 23.14 274.07l.69 54.85h17.53l-1.79-55.46z\"\n        fill=\"#e16435\"\n      />\n      <path\n        d=\"m1252.72-374.49c-28.94 43.34-47.58 85.18-58.91 124.46 6.56 50.36 4.81 104.82-10.27 161.9 2.18 13.59 4.99 26.22 8.11 37.74 7.26 26.78 16.21 47.66 22.89 61.2 2.16 4.37 3.05 9.23 2.56 14.08-6.74 67.06-12.5 134.21-17.46 201.32-6.8 94.65-11.46 189.36-14.04 284.28h37.78c-2.76-117.63-1.97-236.31 1.76-354.01 1.46-42.6 3.25-85.2 5.39-127.79.26-5.19 2.06-10.17 5.19-14.32 1.4-1.86 2.9-3.89 4.49-6.09 21.74-30.21 58.89-92.28 66.83-172.23 6.13-61.69-5.12-134-54.32-210.54z\"\n        fill=\"#643f56\"\n      />\n      <path\n        d=\"m1347.33-44.64c-30.65 49.29-46.7 102.65-55.01 141.76-3.1 14.6-5.12 27.19-6.42 36.85-.48 3.58-1.6 7.04-3.26 10.26 0 .02-.02.03-.03.05-42.43 82.86-70.03 174.62-76.18 267.84-.25 6.48-.97 22.35-1.22 29.15h21.88c.06-6.52.11-21.71.17-28.17.21-5.97 1.21-22.13 1.48-28.15 5.9-75.74 26.14-150.5 57.04-221.13 3.15-7.2 8.9-12.92 16.14-15.98 7.84-3.32 17.84-7.96 29.28-14.17 18.95-35.48 51.8-72.37 108.51-88.36 41.9-49.7 78.71-119.87 89.68-217.42-88.85 16.29-145.72 69-182.07 127.46z\"\n        fill=\"#f59e4f\"\n      />\n      <path\n        d=\"m1510.68 37.21c-27.06-.7-50.55 2.35-70.96 8.1-36.95 43.83-77.85 71.72-108.51 88.36-15.97 29.9-22.08 58.77-24.29 73.29-.49 3.24-1.79 6.28-3.74 8.91-18.9 25.39-35.19 52.71-48.34 81.49-24.78 54.63-37.14 114.42-38.26 174.38h15.6c-.5-38.73 3.75-77.55 13.19-115.23 11.93-46.46 32.14-90.46 58.76-130.29 3.61-5.4 9.6-8.7 16.1-8.88 35.61-.95 129.35-18.9 195.91-171.51 1.74-4-1.11-8.5-5.46-8.61z\"\n        fill=\"#e16435\"\n      />\n      <g fill=\"#f59e4f\">\n        <path d=\"m1207.57 441.27c-2.02-91.43-31.77-190.86-73.91-286.52-1.72-3.9-2.49-8.13-2.22-12.39 3.08-48.07-.09-226.23-198.64-346.63-1.88-1.14-4.31.32-4.18 2.51 12.59 218.75 146.95 321.86 189.06 348.97 4.58 2.95 8.18 7.19 10.26 12.22 39.09 94.76 65.96 192.67 66.03 281.85h13.59z\" />\n        <path d=\"m489.87-200.93c-14.14 0-25.61 11.46-25.61 25.61v225.94h18.28c6.59 0 11.93 5.34 11.93 11.93v17.71c0 6.59-5.34 11.93-11.93 11.93h-18.28v182.43h51.21v-449.94c0-14.14-11.47-25.61-25.61-25.61z\" />\n        <path d=\"m150.88-14.73c-14.77-8.37-33.17-6.98-46.51 3.62-7.38 5.86-16.53 9.06-25.96 9.06h-4.88c-13.51 0-26.18 6.54-34 17.55l-24.98 35.12h99.49l34.35-61.52c.75-1.34 1.59-2.62 2.49-3.84z\" />\n      </g>\n      <path d=\"m439.64 47c-12.78-15.15-31.13-24.25-50.64-25.47v29.1h53.7z\" fill=\"#90add2\" />\n      <path\n        d=\"m158.92-9.99c3.62 2.15 7.54 3.75 11.63 4.73l78.96 18.88c2.07.49 4.07 1.16 6 1.95 14.13-3.04 29.12-1.85 42.96 3.92 10.34 4.31 21.55 6.15 32.72 5.38l48.31-3.33c3.18-.22 6.35-.21 9.49 0v-9.35c0-20.14-16.33-36.47-36.47-36.47h-11.58c-12.06 0-23.34-5.96-30.13-15.93l-13.21-19.38c-8.94-13.13-25.36-18.95-40.57-14.4l-13.74 4.11c-9.89 2.96-18.06 9.97-22.49 19.29-5.9 12.41-18.27 20.45-32 20.81l-9.51.25c-11.34.29-21.79 5.84-28.41 14.84.26.15.53.27.79.43l7.25 4.32z\"\n        fill=\"#643f56\"\n      />\n      <path\n        d=\"m255.52 15.56c-1.93-.79-3.93-1.45-6-1.95l-78.96-18.87c-4.1-.98-8.02-2.57-11.63-4.73l-7.25-4.32c-.26-.15-.53-.28-.79-.43-.9 1.22-1.74 2.5-2.49 3.84l-34.35 61.52h86.62l23.74-19.87c9.15-7.66 19.86-12.77 31.11-15.19z\"\n        fill=\"#90add2\"\n      />\n      <path\n        d=\"m379.51 21.53-48.31 3.33c-11.18.77-22.38-1.07-32.72-5.38-13.84-5.77-28.83-6.96-42.96-3.92 11.2 4.55 19.99 13.78 23.88 25.44l3.2 9.62h106.4v-29.1c-3.14-.2-6.31-.21-9.49 0z\"\n        fill=\"#f59e4f\"\n      />\n      <path\n        d=\"m255.52 15.56c-11.25 2.42-21.96 7.53-31.11 15.19l-23.74 19.87h81.93l-3.2-9.62c-3.89-11.66-12.68-20.89-23.88-25.44z\"\n        fill=\"#4d583e\"\n      />\n    </g>\n  </svg>\n);\n","export const LivSmartFurniture = () => (\n  <div style={{ padding: '20px 0 0', backgroundColor: '#4D583E' }}>\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 1440 320\"\n      width=\"100%\"\n      height=\"auto\"\n      data-testid=\"livsmart-furniture\"\n      role=\"img\"\n    >\n      <title>\n        A TV on a shelf, two pairs of armchairs with a side table, a laundry basket filled with\n        folded clothes, a large potted plant, a nightstand, and a large bed with four pillows.\n      </title>\n      <g>\n        <rect fill=\"#4d583e\" x=\"-11.57\" y=\"-13.12\" width=\"1464.21\" height=\"343\" />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M9.81,293.62v-56.57h184.46v56.57H9.81ZM99.4,164.56v28.68H9.81v-28.68h89.59ZM104.69,199.06h89.59v32.17h-89.59v-32.17h0ZM9.81,231.23v-32.17h89.59v32.17H9.81ZM194.27,164.56v28.68h-89.59v-28.68h89.59ZM5.15,159.26v139.66h193.78v-139.66H5.15Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M161.84,164.56l-1.52,4.66c-.44,1.35-1.69,2.26-3.11,2.26h-15.46c-1.42,0-2.67-.91-3.11-2.26l-1.52-4.66h-32.44v28.68h89.59v-28.68h-32.44Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M66.96,164.56l-1.52,4.66c-.44,1.35-1.69,2.26-3.11,2.26h-15.46c-1.42,0-2.67-.91-3.11-2.26l-1.52-4.66H9.81v28.68h89.59v-28.68h-32.44Z\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M83.17,219.58h-.72c-.2,2.05-1.9,3.65-4,3.65H26.15c-2.1,0-3.8-1.61-4-3.65h-.72c-2.41,0-4.36,1.95-4.36,4.36v2.93c0,2.41,1.95,4.36,4.36,4.36h61.73c2.41,0,4.36-1.95,4.36-4.36v-2.93c0-2.41-1.95-4.36-4.36-4.36h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M82.48,219.19v-3.58c0-2.23-1.81-4.04-4.04-4.04H26.15c-2.23,0-4.04,1.81-4.04,4.04v3.58c0,.13.03.25.04.38h60.29c.01-.13.04-.25.04-.38h0Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M26.15,223.23h52.29c2.1,0,3.8-1.61,4-3.65H22.15c.2,2.05,1.9,3.65,4,3.65h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M83.17,281.97h-.72c-.2,2.05-1.9,3.65-4,3.65H26.15c-2.1,0-3.8-1.61-4-3.65h-.72c-2.41,0-4.36,1.95-4.36,4.36v2.93c0,2.41,1.95,4.36,4.36,4.36h61.73c2.41,0,4.36-1.95,4.36-4.36v-2.93c0-2.41-1.95-4.36-4.36-4.36h0Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M82.48,281.59v-3.58c0-2.23-1.81-4.04-4.04-4.04H26.15c-2.23,0-4.04,1.81-4.04,4.04v3.58c0,.13.03.26.04.38h60.29c.01-.13.04-.25.04-.38h0Z\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M26.15,285.62h52.29c2.1,0,3.8-1.61,4-3.65H22.15c.2,2.05,1.9,3.65,4,3.65h0Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M136.1,246.93l.2,8.14h-3.21l-.25-8.14h3.26ZM140.56,246.93l.16,8.14h-3.21l-.2-8.14h3.26ZM145.01,246.93l.11,8.14h-3.21l-.16-8.14h3.26ZM171.61,255.08h-3.21l.11-8.14h3.26l-.16,8.14h0ZM176.02,255.08h-3.21l.16-8.14h3.26l-.2,8.14h0ZM180.43,255.08h-3.21l.2-8.14h3.26l-.25,8.14h0ZM176.5,284.29h3.05l-.25,8.16h-3.01l.2-8.16h0ZM172.24,284.29h3.05l-.2,8.16h-3.01l.16-8.16h0ZM167.99,284.29h3.05l-.16,8.16h-3.01l.11-8.16h0ZM163.74,284.29h3.05l-.11,8.16h-3.01l.07-8.16h0ZM159.48,284.29h3.05l-.07,8.16h-3.01l.02-8.16h0ZM155.23,284.29h3.05l-.02,8.16h-3.01l-.02-8.16h0ZM150.98,284.29h3.05l.02,8.16h-3.01l-.07-8.16h0ZM146.72,284.29h3.05l.07,8.16h-3.01l-.11-8.16h0ZM142.47,284.29h3.05l.11,8.16h-3.01l-.16-8.16h0ZM138.22,284.29h3.05l.16,8.16h-3.01l-.2-8.16h0ZM137.02,284.29l.2,8.16h-3.01l-.25-8.16h3.05ZM136.79,274.95l.2,8.16h-3.06l-.25-8.16h3.1ZM136.56,265.61l.2,8.15h-3.11l-.24-8.15h3.16ZM136.53,264.42h-3.16l-.25-8.15h3.21l.2,8.15h0ZM140.89,264.42h-3.16l-.2-8.15h3.21l.16,8.15h0ZM145.25,264.42h-3.16l-.16-8.15h3.21l.11,8.15h0ZM149.55,256.27l.07,8.15h-3.16l-.11-8.15h3.21ZM149.54,255.08h-3.21l-.11-8.14h3.26l.07,8.14h0ZM153.95,255.08h-3.21l-.07-8.14h3.26l.02,8.14h0ZM158.37,255.08h-3.21l-.02-8.14h3.26l-.02,8.14h0ZM162.78,255.08h-3.21l.02-8.14h3.26l-.07,8.14h0ZM163.98,255.08l.07-8.14h3.26l-.11,8.14h-3.21ZM167.06,264.42h-3.16l.07-8.15h3.21l-.11,8.15h0ZM171.43,264.42h-3.16l.11-8.15h3.21l-.16,8.15h0ZM175.79,264.42h-3.16l.16-8.15h3.21l-.2,8.15h0ZM176.99,264.42l.2-8.15h3.21l-.25,8.15h-3.16ZM176.76,273.76l.2-8.15h3.16l-.25,8.15h-3.11ZM176.73,274.95h3.11l-.25,8.16h-3.06l.2-8.16h0ZM172.42,274.95h3.11l-.2,8.16h-3.06l.16-8.16h0ZM168.12,274.95h3.11l-.16,8.16h-3.06l.11-8.16h0ZM163.81,274.95h3.11l-.11,8.16h-3.06l.07-8.16h0ZM159.51,274.95h3.11l-.07,8.16h-3.06l.02-8.16h0ZM155.21,274.95h3.11l-.02,8.16h-3.06l-.02-8.16h0ZM150.9,274.95h3.11l.02,8.16h-3.06l-.07-8.16h0ZM146.6,274.95h3.11l.07,8.16h-3.06l-.11-8.16h0ZM142.29,274.95h3.11l.11,8.16h-3.06l-.16-8.16h0ZM141.09,274.95l.16,8.16h-3.06l-.2-8.16h3.11ZM141.07,273.76h-3.11l-.2-8.15h3.16l.16,8.15h0ZM145.38,273.76h-3.11l-.16-8.15h3.16l.11,8.15h0ZM149.69,273.76h-3.11l-.11-8.15h3.16l.07,8.15h0ZM153.98,265.61l.02,8.15h-3.11l-.07-8.15h3.16ZM153.98,264.42h-3.16l-.07-8.15h3.21l.02,8.15h0ZM158.34,264.42h-3.16l-.02-8.15h3.21l-.02,8.15h0ZM159.54,264.42l.02-8.15h3.21l-.07,8.15h-3.16ZM158.31,273.76h-3.11l-.02-8.15h3.16l-.02,8.15h0ZM162.63,273.76h-3.11l.02-8.15h3.16l-.07,8.15h0ZM166.94,273.76h-3.11l.07-8.15h3.16l-.11,8.15h0ZM172.6,265.61h3.16l-.2,8.15h-3.11l.16-8.15h0ZM171.25,273.76h-3.11l.11-8.15h3.16l-.16,8.15h0ZM181.91,245.76h-50.31l1.41,47.86h47.48l1.41-47.86h0Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M184.74,315H19.35c-1.95,0-3.55-1.53-3.65-3.48l-.59-12.6h173.86l-.59,12.6c-.09,1.95-1.7,3.48-3.65,3.48h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M133.22,153.74h-62.36c-1.63,0-2.95,1.32-2.95,2.95v2.58h68.26v-2.58c0-1.63-1.32-2.95-2.95-2.95h0Z\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"104.69 153.74 99.4 153.74 99.4 145.41 104.69 145.41 104.69 153.74 104.69 153.74\"\n        />\n        <polygon\n          fill=\"#90add2\"\n          points=\"177.76 145.41 26.33 145.41 26.33 60.23 177.76 60.23 177.76 145.41 177.76 145.41\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"343.76 241.48 335.59 315 339.56 315 347.66 242.08 343.76 241.48 343.76 241.48\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M350.15,236.42c1.31-1,2.92-1.42,4.55-1.17l67.31,10.3c2.71.41,4.79,2.61,5.06,5.34l6.28,64.11h3.96l-6.32-64.5c-.44-4.53-3.89-8.17-8.39-8.85l-67.31-10.3c-2.7-.41-5.38.27-7.55,1.94-1.48,1.14-2.57,2.63-3.22,4.32l4.05.62c.39-.69.92-1.31,1.58-1.81h0Z\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"289.59 280.33 288.65 276.5 342.68 263.12 343.63 266.94 289.59 280.33 289.59 280.33\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"379.38 270.86 378.43 267.03 429.11 254.47 430.06 258.3 379.38 270.86 379.38 270.86\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M371.09,264.13l59.03-14.39c5.24-1.28,8.52-6.5,7.39-11.77l-.73-3.4c-1.61-7.49-6.85-13.68-13.97-16.5l-38.71-15.31c-6.77-2.68-11.91-8.34-13.92-15.34l-13.01-45.25c-.93-3.25-4.35-5.11-7.59-4.12l-64.94,14.65,21.91,78.8,64.54,32.63h0Z\"\n        />\n        <path\n          fill=\"#fffaf3\"\n          d=\"M366.96,228.45c-2.13-3.11-5.47-11.01-7.22-21.98-1.75-10.97-.48-16.64-3.27-18.36-2.8-1.72-3.65,1.52-10.09,4.12-3.71,1.5-10.05,3.54-13.87,4.47l-.02-.11s-.91.27-2.38.67c-1.48.34-2.41.53-2.41.53l.03.11c-3.81,1-9.15,2.26-13.13,2.71-6.89.76-10.4-1.76-12.04,1.08-1.65,2.84,2.16,7.23,5.81,17.72,3.65,10.5,4.17,19,4.05,22.78-.07,2-.78,3.83.35,5.06,1.43,1.55,2.67.09,6.93-.98,4.65-1.17,18.41-4.88,21.33-5.62,2.93-.73,16.83-3.76,27.97-6.92.69-.19.09-2.17-2.04-5.27Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M312.6,277.33l77.86-17.17c3.42-.76,5.6-4.13,4.86-7.56l-1.28-5.97c-1.67-7.81-7.54-14.05-15.23-16.2l-60.62-16.99c-7.29-2.04-12.96-7.8-14.89-15.12l-10.87-41.27c-.9-3.4-4.44-5.38-7.8-4.35l-3.72,1.14c-1.68.51-2.76,2.16-2.54,3.91l5.67,46.71,20.55,68.19c1.03,3.42,4.52,5.46,8,4.7h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M296.19,240.51c.18-1.64,1-3.09,2.31-4.09,1.31-1,2.92-1.42,4.55-1.17l40.71,6.23.16-1.4c.1-.86.31-1.68.61-2.47l-40.88-6.26c-2.7-.41-5.38.27-7.55,1.94-2.17,1.66-3.53,4.07-3.83,6.79l-8.32,74.92h3.97l8.28-74.49h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M370.96,241.65l-22.39-3.43c-.39.69-.64,1.47-.73,2.29l-.17,1.56,22.7,3.47c2.71.41,4.79,2.61,5.06,5.34l6.28,64.11h3.96l-6.32-64.5c-.44-4.53-3.89-8.17-8.39-8.85h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M343.76,241.48l3.9.6.17-1.56c.09-.82.34-1.59.73-2.29l-4.05-.62c-.3.79-.51,1.61-.61,2.47l-.16,1.4h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M1412.05,315h-273.02c-4.43,0-8.03-3.59-8.03-8.03v-20.01h289.08v20.01c0,4.43-3.6,8.03-8.03,8.03h0Z\"\n        />\n        <polygon\n          fill=\"#f59e4f\"\n          points=\"1410.61 119.81 1140.47 119.81 1140.47 214.05 1410.61 214.05 1410.61 119.81 1410.61 119.81\"\n        />\n        <path\n          fill=\"#fffaf3\"\n          d=\"M1262.95,217.88c-2.39-5.05-4.78-17.17-2.99-32.99,1.79-15.82,6.58-23.23,2.39-26.59-4.19-3.37-7.16.84-19.72,2.18-7.25.78-19.39,1.4-26.58,1.35v-.16s-1.73.06-4.5.1c-2.77-.05-4.51-.1-4.51-.1v.16c-7.18.05-17.22-.05-24.46-.83-12.56-1.35-17.64-6.07-21.83-2.7-4.19,3.37.6,10.77,2.39,26.59,1.79,15.82-1.08,27.8-2.99,32.99-1.01,2.75-3.1,5.04-1.64,7.14,1.84,2.65,4.69,1.05,12.72,1.05,8.76,0,34.8-.34,40.32-.35,5.52.01,31.52.66,52.66.18,1.3-.03,1.13-2.97-1.26-8.02Z\"\n        />\n        <path\n          fill=\"#fffaf3\"\n          d=\"M1391.01,217.88c-2.39-5.05-4.78-17.17-2.99-32.99,1.79-15.82,6.58-23.23,2.39-26.59-4.19-3.37-7.16.84-19.72,2.18-7.25.78-19.39,1.4-26.58,1.35v-.16s-1.73.06-4.5.1c-2.77-.05-4.51-.1-4.51-.1v.16c-7.18.05-17.22-.05-24.46-.83-12.56-1.35-17.64-6.07-21.83-2.7-4.19,3.37.6,10.77,2.39,26.59,1.79,15.82-1.08,27.8-2.99,32.99-1.01,2.75-3.1,5.04-1.64,7.14,1.84,2.65,4.69,1.05,12.72,1.05,8.76,0,34.8-.34,40.32-.35,5.52.01,31.52.66,52.66.18,1.3-.03,1.13-2.97-1.26-8.02Z\"\n        />\n        <polygon\n          fill=\"#e16435\"\n          points=\"1129.07 108.74 1129.07 214.05 1140.47 214.05 1140.47 119.81 1410.61 119.81 1410.61 214.05 1422.01 214.05 1422.01 108.74 1129.07 108.74 1129.07 108.74\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M1187.93,170.39c-4.92-.59-5.76-1.56-5.09,4.27,1.34,12.07,1.34,25.13,0,37.2-.66,5.86.17,4.86,5.09,4.3,15.35-1.81,31.81-1.81,47.16,0,4.93.56,5.76,1.56,5.09-4.3-1.34-12.07-1.34-25.13,0-37.2.66-5.83-.17-4.86-5.09-4.27-15.35,1.78-31.81,1.78-47.16,0h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M1315.99,170.39c-4.92-.59-5.76-1.56-5.09,4.27,1.34,12.07,1.34,25.13,0,37.2-.66,5.86.17,4.86,5.09,4.3,15.35-1.81,31.81-1.81,47.16,0,4.93.56,5.76,1.56,5.09-4.3-1.34-12.07-1.34-25.13,0-37.2.66-5.83-.17-4.86-5.09-4.27-15.35,1.78-31.81,1.78-47.16,0h0Z\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M1424.66,286.96h-298.23c-5.8,0-10.5-4.7-10.5-10.5v-51.92c0-5.8,4.7-10.5,10.5-10.5h298.23c5.8,0,10.5,4.7,10.5,10.5v51.92c0,5.8-4.7,10.5-10.5,10.5h0Z\"\n        />\n        <polygon\n          fill=\"#e16435\"\n          points=\"560.08 166.98 677.78 166.98 677.78 255.54 560.08 255.54 560.08 166.98 560.08 166.98\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"706.08 314.44 712.01 314.44 713.52 293.47 704.58 293.47 706.08 314.44 706.08 314.44\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"676.99 314.44 682.93 314.44 684.43 293.47 675.49 293.47 676.99 314.44 676.99 314.44\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"586.68 315 592.61 315 594.11 294.02 585.17 294.02 586.68 315 586.68 315\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"559.48 315 565.42 315 566.92 294.02 557.98 294.02 559.48 315 559.48 315\"\n        />\n        <path fill=\"#643f56\" d=\"M635.84,167.01h59.6v81.87h-71.6v-69.87c0-6.62,5.38-12,12-12Z\" />\n        <path\n          fill=\"#fffaf3\"\n          d=\"M689.46,241.56c-2.01-5.05-4.03-17.17-2.52-32.99,1.51-15.82,5.54-23.23,2.01-26.59-3.52-3.37-6.02.84-16.6,2.18-6.1.78-16.32,1.4-22.38,1.35h-7.58c-6.05.05-14.5-.05-20.6-.83-10.57-1.35-14.85-6.07-18.37-2.7-3.52,3.37.5,10.77,2.01,26.59,1.51,15.82-.91,27.8-2.52,32.99-.85,2.75-2.61,5.04-1.38,7.14,1.55,2.65,3.95,1.05,10.7,1.05,7.37,0,29.29-.34,33.94-.35,4.65.01,26.53.66,44.33.18,1.1-.03.95-2.97-1.06-8.02Z\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M678.86,166.98v127.04h34.71c2.81,0,5.08-2.28,5.08-5.08v-115.48c0-3.57-2.9-6.47-6.47-6.47\"\n        />\n        <path fill=\"#643f56\" d=\"M579.18,249.23h104.91v44.77h-116.91v-32.77c0-6.62,5.38-12,12-12Z\" />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M560.62,166.98c-3.78,0-6.84,3.06-6.84,6.84v120.2h13.68v-120.2c0-3.78-3.06-6.84-6.84-6.84Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M677.78,166.98h0c3.78,0,6.84,3.06,6.84,6.84v120.2h-13.68v-120.2c0-3.78,3.06-6.84,6.84-6.84h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M1090.45,315h-37.67c-1.89,0-3.43-1.53-3.43-3.43v-2.54c0-1.89,1.53-3.43,3.43-3.43h37.67c1.89,0,3.43,1.53,3.43,3.43v2.54c0,1.89-1.53,3.43-3.43,3.43h0Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M1071.62,305.76c-11.67,0-21.16-9.49-21.16-21.16v-86.01h4.54v86.01c0,9.16,7.45,16.62,16.62,16.62s16.62-7.45,16.62-16.62v-86.01h4.54v86.01c0,11.67-9.49,21.16-21.16,21.16h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M1107.9,201.99h-72.57c-1.89,0-3.43-1.53-3.43-3.43h0c0-1.89,1.53-3.43,3.43-3.43h72.57c1.89,0,3.43,1.53,3.43,3.43h0c0,1.89-1.53,3.43-3.43,3.43h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M1025.1,159.27c-13.46,3.8-21.26,12.55-25.76,20.97,7.28-3.95,16.99-10.57,25.76-20.97h0Z\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M966.73,89.17c-.12.43-.25.86-.37,1.29-3.86,14.14-3.73,26.82-2.07,37.15,3.58-13.55,4-26.48,2.44-38.43h0Z\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M967.66,253.27c-.16-8.37-1.56-16.77-4.58-24.6-1.92-5.04-4.53-9.67-7.66-13.88-.22-.3-.41-.62-.55-.96-3.61-8.86-20.79-44.95-56.45-30.14,20.09,27.56,44.26,31.57,53.41,32.05,1.46.08,2.8.85,3.57,2.08,6.57,10.49,9.65,23.04,9.38,35.45h2.87Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M969.25,240.08c-1.06-21.5-3.72-43.92-6.81-65.27-1.37-9.33-2.85-18.63-4.42-27.93-.15-.91-.02-1.84.36-2.68,2.53-5.61,4.48-11.15,5.92-16.58,0,0,0-.01,0-.02-1.66-10.32-1.79-23.01,2.07-37.15.12-.43.24-.86.37-1.29-.55-4.24-1.35-8.36-2.35-12.34-7.52-30.02-26.15-52.15-33.04-59.56-1.06-1.14-2.97-.54-3.2,1-10.83,73.4,18.36,115.62,26.79,126.05.52.64.85,1.41.98,2.23,1.42,9.53,2.74,19.06,3.95,28.62,2.65,21.28,4.86,43.67,5.49,65.06l.16,13.02h4.16l-.43-13.17h0Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M980.71,59.62c-6.87,10.29-11.3,20.22-13.98,29.55,1.56,11.95,1.14,24.88-2.44,38.43.52,3.23,1.18,6.22,1.93,8.96,1.72,6.36,3.85,11.31,5.43,14.53.51,1.04.72,2.19.61,3.34-1.6,15.92-2.97,31.86-4.15,47.79-1.61,22.47-2.72,44.95-3.33,67.48h8.97c-.65-27.92-.47-56.1.42-84.04.35-10.11.77-20.23,1.28-30.33.06-1.23.49-2.41,1.23-3.4.33-.44.69-.92,1.06-1.44,5.16-7.17,13.98-21.91,15.86-40.88,1.46-14.64-1.21-31.81-12.89-49.98h0Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M1003.17,137.92c-7.28,11.7-11.09,24.37-13.06,33.65-.74,3.46-1.22,6.45-1.52,8.75-.11.85-.38,1.67-.77,2.43,0,0,0,0,0,.01-10.07,19.67-16.62,41.45-18.08,63.58-.06,1.54-.23,5.3-.29,6.92h5.2c.01-1.55.03-5.15.04-6.69.05-1.42.29-5.25.35-6.68,1.4-17.98,6.21-35.73,13.54-52.49.75-1.71,2.11-3.07,3.83-3.79,1.86-.79,4.24-1.89,6.95-3.36,4.5-8.42,12.3-17.18,25.76-20.97,9.95-11.8,18.68-28.46,21.29-51.61-21.09,3.87-34.59,16.38-43.22,30.26h0Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M1041.94,157.35c-6.42-.17-12,.56-16.85,1.92-8.77,10.4-18.48,17.02-25.76,20.97-3.79,7.1-5.24,13.95-5.77,17.4-.12.77-.42,1.49-.89,2.11-4.49,6.03-8.35,12.51-11.47,19.34-5.88,12.97-8.82,27.16-9.08,41.4h3.7c-.12-9.19.89-18.41,3.13-27.35,2.83-11.03,7.63-21.47,13.95-30.93.86-1.28,2.28-2.07,3.82-2.11,8.45-.23,30.71-4.49,46.51-40.71.41-.95-.26-2.02-1.3-2.04h0Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M992.63,255.03c0-.98-.79-1.77-1.77-1.77h-39.98c-.97,0-1.77.79-1.77,1.77v37.72c0,3.2,1.21,6.11,3.18,8.32h37.15c1.97-2.21,3.18-5.12,3.18-8.32v-37.72h0Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M980.11,305.28h-18.47c-3.72,0-7.05-1.63-9.34-4.2h-1.24c-1.04,0-1.86.9-1.76,1.93l1,10.39c.09.91.85,1.6,1.76,1.6h37.63c.91,0,1.67-.69,1.76-1.6l1-10.39c.1-1.04-.72-1.93-1.76-1.93h-1.24c-2.29,2.57-5.62,4.2-9.34,4.2h0Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M961.64,305.28h18.47c3.72,0,7.05-1.63,9.34-4.2h-37.15c2.29,2.57,5.62,4.2,9.34,4.2h0Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M969.99,253.27c-.48-21.7-7.54-45.31-17.54-68.02-.41-.93-.59-1.93-.53-2.94.73-11.41-.02-53.7-47.15-82.29-.45-.27-1.02.08-.99.6,2.99,51.93,34.88,76.41,44.88,82.84,1.09.7,1.94,1.71,2.44,2.9,9.28,22.49,15.66,45.74,15.68,66.91,0,0,3.23,0,3.23,0h0Z\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"239.61 315 237.72 315 237.72 159.05 239.61 159.05 239.61 315 239.61 315\"\n        />\n        <polygon\n          fill=\"#e16435\"\n          points=\"252.8 141.57 252.8 125.79 247.41 125.79 247.41 141.57 252.8 141.57 252.8 141.57\"\n        />\n        <polygon\n          fill=\"#e16435\"\n          points=\"247.41 151.86 252.8 151.86 252.8 146.53 247.41 146.53 247.41 151.86 247.41 151.86\"\n        />\n        <polygon\n          fill=\"#fffaf3\"\n          points=\"229.92 81.31 229.92 125.79 229.92 141.57 247.41 141.57 247.41 125.79 247.41 81.31 229.92 81.31 229.92 81.31\"\n        />\n        <polygon\n          fill=\"#fffaf3\"\n          points=\"229.92 146.53 229.92 151.86 229.92 159.05 247.41 159.05 247.41 151.86 247.41 146.53 229.92 146.53 229.92 146.53\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"258.86 141.57 252.8 141.57 252.8 146.53 258.86 146.53 258.86 141.57 258.86 141.57\"\n        />\n        <polygon\n          fill=\"#90add2\"\n          points=\"247.41 141.57 247.41 146.53 252.8 146.53 252.8 141.57 247.41 141.57 247.41 141.57\"\n        />\n        <polygon\n          fill=\"#e16435\"\n          points=\"224.48 141.57 224.48 125.79 229.87 125.79 229.87 141.57 224.48 141.57 224.48 141.57\"\n        />\n        <polygon\n          fill=\"#e16435\"\n          points=\"229.87 151.86 224.48 151.86 224.48 146.53 229.87 146.53 229.87 151.86 229.87 151.86\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"218.42 141.57 224.48 141.57 224.48 146.53 218.42 146.53 218.42 141.57 218.42 141.57\"\n        />\n        <polygon\n          fill=\"#90add2\"\n          points=\"229.87 141.57 229.87 146.53 224.48 146.53 224.48 141.57 229.87 141.57 229.87 141.57\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"229.92 146.53 247.41 146.53 247.41 141.57 229.92 141.57 229.92 146.53 229.92 146.53\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M862.93,219.05h-66.4c-5.72,0-10.36,4.64-10.36,10.36v27.3s76.76,0,76.76,0c10.4,0,18.83-8.43,18.83-18.83h0c0-10.4-8.43-18.83-18.83-18.83h0Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M786.17,256.78h76.88c10.39,0,18.84-8.45,18.84-18.84,0-10.39-8.45-18.84-18.84-18.84h-66.97c-4.94,0-8.96,4.02-8.96,8.96s4.02,8.96,8.96,8.96h67.2c.5,0,.91.41.91.91,0,.5-.41.91-.91.91h-77.11s0,7.61,0,7.61h77.11c4.7,0,8.52-3.82,8.52-8.52,0-4.7-3.82-8.52-8.52-8.52h-67.2c-.75,0-1.36-.61-1.36-1.36s.61-1.36,1.36-1.36h66.97c6.19,0,11.23,5.04,11.23,11.23,0,6.19-5.04,11.23-11.23,11.23h-76.88s0,7.61,0,7.61h0Z\"\n        />\n        <rect\n          fill=\"#fffaf3\"\n          x=\"786.88\"\n          y=\"256.6\"\n          width=\"85.18\"\n          height=\"22.23\"\n          rx=\"9.06\"\n          ry=\"9.06\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M875.53,288.6c0-5.61-4.55-10.15-10.15-10.15h-70.63c-5.61,0-10.16,4.55-10.16,10.15,0,2.26.75,4.34,2,6.03h86.94c1.25-1.69,2-3.77,2-6.03Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M879.4,294.63h-5.87c-1.85,2.5-4.81,4.12-8.16,4.12h-70.63c-3.35,0-6.3-1.63-8.16-4.12h-6.09c-.94,0-1.7.76-1.7,1.7v13.45c0,.94.76,1.7,1.7,1.7h98.91c.94,0,1.7-.76,1.7-1.7v-13.45c0-.94-.76-1.7-1.7-1.7Z\"\n        />\n        <path\n          fill=\"#643f56\"\n          d=\"M794.74,298.75h70.63c3.35,0,6.3-1.63,8.16-4.12h-86.94c1.85,2.5,4.81,4.12,8.16,4.12Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M897.6,234.18h-136.12c-1.76,0-3.19,1.43-3.19,3.19v4.73c0,1.76,1.43,3.19,3.19,3.19h136.12c1.76,0,3.19-1.43,3.19-3.19v-4.73c0-1.76-1.43-3.19-3.19-3.19Z\"\n        />\n        <path\n          fill=\"#e16435\"\n          d=\"M766.44,245.29l8,65.57c.29,2.36,2.3,4.14,4.68,4.14h100.83c2.38,0,4.39-1.78,4.68-4.14l8-65.57h-126.19ZM824.94,255.84v5.83h-9.45l-.13-12.12h3.29c3.47,0,6.29,2.82,6.29,6.29ZM815.67,277.45l-.16-14.28h9.43v14.28h-9.27ZM824.94,278.96v14.28h-9.1l-.16-14.28h9.26ZM804.79,278.96l.33,14.28h-7.71l-.51-14.28h7.89ZM796.84,277.45l-.51-14.28h8.09l.33,14.28h-7.91ZM804.38,261.67h-8.11l-.43-12.12h8.26l.28,12.12ZM794.77,261.67h-7.94l-.74-12.12h8.25l.43,12.12ZM786.28,277.45h-9.16l-1.55-14.28h9.84l.87,14.28ZM786.37,278.96l.87,14.28h-8.41l-1.55-14.28h9.09ZM786.92,263.17h7.91l.51,14.28h-7.55l-.87-14.28ZM795.39,278.96l.51,14.28h-7.16l-.87-14.28h7.51ZM788.84,294.74h7.12l.52,14.45h-7.48l.72-.04-.87-14.41ZM797.98,309.17l-.52-14.43h7.69l.34,14.45h-8.21l.7-.02ZM806.26,277.45l-.33-14.28h8.09l.16,14.28h-7.91ZM814.18,278.96l.16,14.28h-7.71l-.33-14.28h7.89ZM807,309.17l-.34-14.44h7.69l.16,14.45h-8.18l.67-.02ZM813.99,261.67h-8.11l-.28-12.12h8.26l.13,12.12ZM781.1,249.55h3.49l.74,12.12h-9.92l-.56-5.15c-.4-3.72,2.51-6.97,6.25-6.97ZM779.95,303.58l-.96-8.84h8.34l.88,14.45h-2c-3.21,0-5.91-2.42-6.25-5.61ZM818.65,309.19h-3.21.57s-.16-14.45-.16-14.45h9.08v8.16c0,3.47-2.82,6.29-6.29,6.29ZM834.13,302.9v-8.16h9.06l-.16,14.44h.57s-3.19,0-3.19,0c-3.47,0-6.29-2.82-6.29-6.29ZM843.37,278.96l-.16,14.28h-9.08v-14.28h9.24ZM834.13,277.45v-14.28h9.41l-.16,14.28h-9.25ZM852.76,278.96l-.33,14.28h-7.71l.16-14.28h7.89ZM844.89,277.45l.16-14.28h8.09l-.33,14.28h-7.91ZM862.16,278.96l-.51,14.28h-7.71l.33-14.28h7.89ZM854.3,277.45l.33-14.28h8.09l-.51,14.28h-7.91ZM861.59,294.74l-.52,14.43.7.02h-8.21l.34-14.45h7.69ZM863.1,294.74h7.12l-.88,14.41.72.04h-7.48l.52-14.45ZM863.15,293.24l.51-14.28h7.51l-.87,14.28h-7.16ZM863.72,277.45l.51-14.28h7.91l-.87,14.28h-7.55ZM872.68,278.96h9.11l-1.55,14.28h-8.43l.87-14.28ZM872.77,277.45l.87-14.28h9.87l-1.55,14.28h-9.18ZM872.23,261.67h-7.94l.43-12.12h8.25l-.74,12.12ZM862.78,261.67h-8.11l.28-12.12h8.26l-.43,12.12ZM853.17,261.67h-8.11l.13-12.12h8.26l-.28,12.12ZM852.39,294.74l-.34,14.44.67.02h-8.18l.16-14.45h7.69ZM879.12,303.58c-.35,3.19-3.04,5.61-6.25,5.61h-2.02l.88-14.45h8.36l-.96,8.84ZM884.23,256.52l-.56,5.15h-9.94l.74-12.12h3.51c3.74,0,6.66,3.25,6.25,6.97ZM840.42,249.55h3.27l-.13,12.12h-9.43v-5.83c0-3.47,2.82-6.29,6.29-6.29Z\"\n        />\n        <path\n          fill=\"#fffaf3\"\n          d=\"M794.78,203.08h61.46c4.18,0,7.57,3.39,7.57,7.57v.82c0,4.18-3.39,7.57-7.57,7.57h-61.46v-15.97h0Z\"\n        />\n        <rect fill=\"#643f56\" x=\"794.68\" y=\"210.01\" width=\"62.64\" height=\"2.29\" />\n        <path\n          fill=\"#e16435\"\n          d=\"M442.01,168.96h55.04c2.31,0,4.19,1.88,4.19,4.19v6.32h-63.41v-6.32c0-2.31,1.88-4.19,4.19-4.19Z\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"503.48 310.92 498.94 310.92 498.94 180.68 503.48 180.68 503.48 310.92 503.48 310.92\"\n        />\n        <polygon\n          fill=\"#643f56\"\n          points=\"481.2 310.92 476.66 310.92 476.66 180.68 481.2 180.68 481.2 310.92 481.2 310.92\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M506.27,176.6h-74.01c-2.25,0-4.08,1.83-4.08,4.08h0c0,2.25,1.83,4.08,4.08,4.08h74.01c2.25,0,4.08-1.83,4.08-4.08h0c0-2.25-1.83-4.08-4.08-4.08h0Z\"\n        />\n        <path\n          fill=\"#f59e4f\"\n          d=\"M506.78,306.84h-55.7c-1.97,0-3.57,1.6-3.57,3.57v4.59h62.84v-4.59c0-1.97-1.6-3.57-3.57-3.57h0Z\"\n        />\n        <path\n          fill=\"#90add2\"\n          d=\"M459.07,162.9h25.45c1.7,0,3.08,1.38,3.08,3.08h0c0,1.7-1.38,3.08-3.08,3.08h-25.45c-1.7,0-3.08-1.38-3.08-3.08h0c0-1.7,1.38-3.08,3.08-3.08h0Z\"\n        />\n      </g>\n    </svg>\n  </div>\n);\n","interface EnterpriseFiligreeProps {\n  fillColor?: string;\n  opacity?: string;\n  testId?: string;\n}\n\nexport const EnterpriseFiligree: React.FC<EnterpriseFiligreeProps> = ({\n  fillColor = '#F0E9E6',\n  opacity = 0.35,\n  testId = 'enterprise-filigree',\n}) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"100%\"\n    height=\"auto\"\n    viewBox=\"0 0 1440 83\"\n    fill=\"none\"\n    data-testid={testId}\n    aria-hidden=\"true\"\n  >\n    <g clipPath=\"url(#clip0_124_45863)\">\n      <rect width=\"1440\" height=\"83\" fill={fillColor} />\n      <g opacity={opacity} fill=\"black\">\n        <path d=\"M1339.95 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.02 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1.01 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM1265.66 53.66c.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49 1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2l1.19-1.52 1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77zm18.62-2.64c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM1223.88 58.92l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85zM1255.77 54.43c.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51z\" />\n        <path d=\"M1328.76 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M1304.4 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M1291.48 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM1342.21 48.65v-.78h.28v-.16h-.75v.16h.28v.78zM1343.65 48.65v-.94h-.23l-.27.67-.27-.67H1342.65v.94h.19v-.6l.26.6h.1l.26-.6v.6zM1166.16 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.01 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM1091.87 53.66c.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49 1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2l1.19-1.52 1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77zm18.63-2.64c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM1050.09 58.92l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85zM1081.98 54.43c.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51z\" />\n        <path d=\"M1154.97 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.28 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M1130.62 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M1117.69 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM1168.42 48.65v-.78h.29v-.16h-.76v.16h.29v.78zM1169.86 48.65v-.94h-.22l-.27.67-.27-.67h-.23v.94h.19v-.6l.26.6h.1l.25-.6v.6zM992.38 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.02 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM918.09 53.66c.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49 1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2l1.19-1.52 1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77zm18.62-2.64c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM876.31 58.92l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85zM908.2 54.43c.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51z\" />\n        <path d=\"M981.18 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.28 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M956.83 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M943.91 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM996.08 48.65v-.94h-.23l-.27.67-.27-.67H995.08v.94h.19v-.6l.26.6h.1l.26-.6v.6zM994.64 48.65v-.78h.28v-.16h-.75v.16h.28v.78zM818.59 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.01 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM744.3 53.66c.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49 1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2l1.19-1.52 1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77zm18.63-2.64c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM702.52 58.92l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85zM734.41 54.43c.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.03-1.15-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51z\" />\n        <path d=\"M807.4 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M783.05 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.09-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M770.12 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM820.85 48.65v-.78h.29v-.16h-.76v.16h.29v.78zM822.29 48.65v-.94h-.22l-.27.67-.27-.67h-.23v.94h.19v-.6l.26.6h.1l.25-.6v.6zM644.81 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.02 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM570.52 53.66c.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49 1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2l1.19-1.52 1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77zm18.62-2.64c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM528.74 58.92l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85zM560.63 54.43c.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.03-1.15-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51z\" />\n        <path d=\"M633.61 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M609.26 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.09-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M596.34 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM648.51 48.65v-.94h-.23l-.27.67-.27-.67H647.51v.94h.19v-.6l.26.6h.1l.26-.6v.6zM647.07 48.65v-.78h.28v-.16h-.75v.16h.28v.78zM471.02 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.01 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM396.73 53.66c.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49 1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2l1.19-1.52 1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77zm18.62-2.64c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM354.95 58.92l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85zM386.84 54.43c.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.03-1.15-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51z\" />\n        <path d=\"M459.83 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M435.48 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M422.55 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM474.72 48.65v-.94h-.23l-.26.67-.27-.67h-.23v.94h.19v-.6l.25.6h.11l.25-.6v.6zM473.28 48.65v-.78h.29v-.16h-.76v.16h.29v.78zM297.24 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.02 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM222.95 53.66c.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49 1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2l1.19-1.52 1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77zm18.62-2.64c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM181.17 58.92l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85zM213.06 54.43c.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51z\" />\n        <path d=\"M286.04 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M261.69 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.09-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M248.77 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM299.5 48.65v-.78h.28v-.16h-.75v.16h.28v.78zM300.94 48.65v-.94h-.23l-.27.67-.27-.67H299.94v.94h.19v-.6l.26.6h.1l.26-.6v.6zM123.45 53.09c-.58.66-1.25 1.23-1.9 1.82-.54.49-1.07 1-1.65 1.45-.37.29-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.89-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.09-.44.45-.91.86-1.33 1.33-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34-.01-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.51.66-1.01.78-1.6.23-.98-.22-1.57-1.13-1.91a2.97 2.97 0 0 0-1.88-.19c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.19 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.71 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.59-3.43.99a21.42 21.42 0 0 0-6.03 2.91 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.51 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.31 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.41.44-.57.86-1.21 1.46-1.62.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.11 1.88-.75.28-.64-.43-.91-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.11-1.29-.73-.53.34-.92.88-1.35 1.34zm-19.01 7.55c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.46.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.59-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.86c-.56.69-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.29l-.53.61c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.11a5.4 5.4 0 0 1-.12-1.79c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.21 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM47.83 67.72c1.03-1.37 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.5.8-1 1.19-1.52.4-.53.78-1.08 1.18-1.6.63-.86 1.35-1.64 1.99-2.48l.86-1.1c.31-.39.62-.82 1.04-1.08.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.3 4.47-.43.16 0 .43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.5-.26.3-.49.62-.74.93-.37.47-.8.9-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.3-.35.64-.35 1-.03.64.54 1.13 1.17.9.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64 0 .4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.4-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1 1.22-1.54.56-.82 1.16-1.6 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.4-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.5.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.7.78-.73 1.67-1.33 2.43-2.07.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.1.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.1-3.08.07-.17 0-.28-.04-.31-.1-.04-.15.17-.36.28-.48l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.45 1.06-1.4.5-1.9-.76-.49-2.03.76-2.57 1.3l-4.06 3.86c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.6.38-.77.69-.76 1.37-1.53 2.04-2.3l2.69-3.12c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.7-1.19 1.3-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.1-1.98.18-2.96.3l-1.94.12c-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.1.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.1-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.4-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.5zm19.95-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.1.3-.02.17.2-.22.34-.57.63-.85.93-.46.43-.84.94-1.34 1.32l-.63.45c-.19.13-.79.73-.97.58-.02-.1.17-.27.27-.36zM.22 69.45c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.81 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.31.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.11 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.09-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.09 2.42.09.78.02 1.56.05 2.34.03.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.21-.65-.07-1.29-.2-1.94-.25-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.09 1.29-.02 2.58-.04 3.87-.08l.95-.01c.16 0 .51 0 .54.11.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63l-2.31 2.37c-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.29.79.19 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85l-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM45.56 53.15c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.1-.07-.33.46-.54 1-1.02 1.51-1.5.26-.26.51-.56.57-.92.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.4-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.9-.26.28-.86.92-.43 1.25.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33l-1.07 1c-.97.86-1.96 1.71-2.96 2.55A68.85 68.85 0 0 1 20.34 64c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.4-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.2 1.2.3 1.84.28.25 0 .78-.06.72.31-.11.4-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1 .37-.53.75-1.04 1.14-1.54.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.9 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.3.43-.89-.04-1.15z\" />\n        <path d=\"M112.26 44.43c.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.6.61.65.95.25.19-.2.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92z\" />\n        <path d=\"M87.91 56.55c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.69c-4.04 2.64-8.85 3.81-13.61 4.18-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.51-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M74.98 60.22c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.2-.92.25-.2.04-.46.04-.58-.06-.14-.1-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.4-.58.13-1.09.43-1.6.72-.82.46-1.51 1.12-2.2 1.75-.21.2-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.7-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95.15-.14.31-.28.47-.4.37-.32.68-.7.99-1.07.26-.32.53-.63.73-.99.22-.38.16-.8-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.9-2.31 1.76-3.49 2.6zm-2.71-1.58c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.4.77-.34.12.13-.13.48-.23.63-.45.68-1 1.3-1.6 1.85a12.27 12.27 0 0 1-2.89 2.29c-.94.65-.85.27-.33-.47zM125.71 48.65v-.78h.29v-.16h-.76v.16h.28v.78zM127.15 48.65v-.94h-.23l-.26.67-.28-.67h-.22v.94h.19v-.6l.25.6h.11l.25-.6v.6zM1434.02 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.02-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.26 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1.01 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM1360.29 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM1312.68 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1l3.87-.09h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM1358.02 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15z\" />\n        <path d=\"M1411.33 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.14-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M1400.37 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M1387.45 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47zM1260.24 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM1186.51 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM1138.9 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1l3.87-.09h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM1184.24 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15z\" />\n        <path d=\"M1237.54 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.28 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M1226.59 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M1213.66 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47zM1086.45 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM1012.72 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM965.11 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1L982.5 6h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM1010.45 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15z\" />\n        <path d=\"M1063.76 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.28 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M1052.8 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M1039.88 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47zM912.67 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM838.94 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM791.33 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1l3.87-.09h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM836.67 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.03-1.15z\" />\n        <path d=\"M889.97 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.28 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M879.02 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.09-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M866.09 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47zM738.88 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM665.15 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3L684 9.69c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM617.54 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1l3.87-.09h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM662.88 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.03-1.15z\" />\n        <path d=\"M716.19 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M705.23 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.09-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M692.31 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47zM565.1 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM491.37 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM443.76 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1l3.87-.09h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM489.1 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15z\" />\n        <path d=\"M542.4 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M531.45 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M518.52 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47zM391.31 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM317.58 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM269.97 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1l3.87-.09h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43a70.36 70.36 0 0 0-2.84 3.61c-.39.57-2.39 2.97-1.52 3.5zM315.31 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.03-1.15z\" />\n        <path d=\"M368.61 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M357.66 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.09-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M344.74 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47zM217.53 13.9c-.54.48-1.07 1-1.65 1.44-.37.3-.76.55-1.13.84a32.5 32.5 0 0 1-2.93 2.16c-1.31.9-.53-.23-.23-.86.7-1.35 1.7-2.52 2.58-3.76.35-.5.74-.97 1.14-1.43.29-.35.56-.72.84-1.09.15-.2.32-.45.37-.68.09-.48-.38-.38-.67-.16-.44.31-.83.71-1.2 1.1-.44.44-.91.85-1.33 1.32-.43.48-.83.98-1.27 1.46-1.38 1.45-2.74 2.93-4.14 4.35-.45.4-.34 0-.2-.33l.5-1.18c.45-1.06 1-2.08 1.57-3.08.31-.5.66-1 .78-1.6.23-.98-.22-1.57-1.13-1.9a2.97 2.97 0 0 0-1.88-.2c-1.74.41-3.12 1.65-4.38 2.85a65.13 65.13 0 0 0-4.48 4.77c-.52.58-1.08 1.12-1.51 1.77-.43.6-.9 1.18-1.18 1.87-.14.36-.25.76-.15 1.12.1.41.46.75.88.82.84.14 1.88-.53 2.57-.97.88-.58 1.74-1.19 2.54-1.87 1.1-.94 2.17-1.92 3.27-2.85.21-.18.48-.46.68-.57.23-.08-.08.54-.11.64-.44 1.01-1.4 3.61-.17 4.32.89.35 1.66-.49 2.25-1.05.31-.26.81-.99 1.25-.8.22.08.45.34.74.42.75.2 1.53-.37 2.14-.76.71-.45 1.41-.89 2.06-1.42.56-.43 1.15-.82 1.72-1.24.97-.7 1.82-1.54 2.75-2.27.13-.08.21-.09.23-.03.03.2-.2.55-.33.76a67.71 67.71 0 0 1-3.72 4.77c-.77.93-1.21 1.73-2.48 2.02-1.16.27-2.31.6-3.43 1a21.42 21.42 0 0 0-6.03 2.9 14.94 14.94 0 0 0-4.29 3.94c-1.35 1.8-2.38 4.03-2.07 6.33.21 2.08 1.63 3.58 3.79 3a6.97 6.97 0 0 0 2.81-1.73c.58-.5 1.07-1.09 1.61-1.65l.68-.7c.64-.77 1.24-1.57 1.86-2.34.82-1.05 1.59-2.12 2.43-3.15.5-.63.95-1.3 1.44-1.95.33-.44.7-.85 1.03-1.3.34-.46.65-.95 1-1.4.44-.58.86-1.22 1.46-1.63.34-.22.74-.33 1.13-.4.8-.16 1.6-.26 2.42-.34.92-.15 1.83-.26 2.75-.37.29-.04.58-.1.86-.15.65-.15 1.52-.1 1.88-.75.28-.64-.43-.9-.95-.9-1.45-.04-2.87.31-4.31.45l-1.25.16c-.38.05-.86.04-.57-.48.2-.37.51-.73.76-1.07a45.18 45.18 0 0 0 3.76-5.66c.51-.93 1.21-1.89 1.18-2.99-.03-.69-.68-1.1-1.29-.73-.53.34-.92.88-1.35 1.34-.58.66-1.25 1.23-1.9 1.82zm-17.12 5.71c-.46.34-.95.63-1.43.94-.3.2-.84.46-.44-.13.17-.24.39-.47.59-.69.35-.39.66-.8.99-1.2.32-.39.68-.75 1.01-1.13l.94-1.13c1.36-1.49 2.79-2.99 4.56-4.02a3.74 3.74 0 0 1 1.58-.55c.2-.02.55 0 .6.15.17.6-2.41 2.63-2.93 3.1-1.86 1.52-3.55 3.21-5.47 4.65zm10.25 5.87c-.56.7-1.07 1.45-1.65 2.13-.59.74-1.06 1.57-1.68 2.3l-.53.6c-.54.63-1 1.32-1.56 1.94-1.32 1.58-2.55 3.28-4.17 4.58-.98.77-2.58 1.61-3.07-.1a5.4 5.4 0 0 1-.12-1.8c.06-.38.2-.75.31-1.13a12.35 12.35 0 0 1 2.33-3.86c.62-.63 1.31-1.2 2.02-1.73 1.47-1 3-1.92 4.67-2.53.56-.25 1.12-.49 1.71-.67l1.45-.46c.15-.05.32-.1.47-.13.18-.03.31-.02.34.06.03.25-.37.58-.53.8zM143.8 26.69c1.03-1.38 1.81-2.92 2.8-4.33.46-.67.89-1.36 1.39-2 .39-.51.8-1 1.19-1.52l1.18-1.61c.63-.85 1.35-1.63 1.99-2.47l.86-1.11c.31-.38.62-.81 1.04-1.07.34-.22.75-.29 1.14-.33 1.49-.16 2.98-.31 4.47-.43.16-.01.43-.03.53.04.12.11-.12.35-.23.47-.15.15-.3.32-.44.49-.26.3-.49.63-.74.94-.37.47-.8.89-1.2 1.35-.37.41-.74.84-1.21 1.15-.44.28-.96.38-1.46.53-.32.11-.64.2-.96.26-.53.1-.83.44-.24.71.23.1.55.1.77.18.67.24-.13.95-.36 1.26a55.47 55.47 0 0 0-3.32 4.03c-.2.29-.35.64-.35.99-.03.65.54 1.14 1.17.91.35-.12.64-.37.93-.58a50.9 50.9 0 0 0 1.84-1.45c.65-.57 1.41-.99 2.12-1.47.8-.58 1.54-1.26 2.35-1.84.61-.47 1.14-1.03 1.73-1.53.85-.72 1.7-1.45 2.59-2.12.61-.4.64-.01.4.47-.7 1.35-1.63 2.57-2.51 3.81-.27.39-.5.82-.77 1.21-.58.81-1.24 1.6-1.65 2.52a2 2 0 0 0-.17.83c.02.77.6.92 1.16.44.49-.43.84-1.01 1.22-1.54.56-.82 1.16-1.61 1.66-2.47.57-1.05 1.21-2.06 1.81-3.1.23-.42.41-.86.64-1.27.16-.29.31-.59.42-.9.19-.6.38-1.4.07-1.98-.45-.78-1.36-.41-1.98-.06-1.3.73-2.47 1.66-3.6 2.63-1.1.98-2.21 1.97-3.39 2.86-.14.1-.24.15-.27.12-.03-.02.01-.13.12-.28.38-.51.82-.99 1.22-1.5.47-.58.88-1.19 1.41-1.71.78-.72 1.67-1.32 2.43-2.06.52-.48 1.05-.96 1.56-1.45.41-.38.77-.87 1.3-1.09.3-.13.65-.15.97-.17.74-.03 1.48-.1 2.23-.13 1.57-.09 3.13-.26 4.7-.32.67-.03 1.34-.1 2-.2.19-.03.4-.06.56-.12.36-.11.47-.34.09-.49-.4-.14-.87-.12-1.29-.14a41.66 41.66 0 0 0-4.47.05c-1.03.05-2.07.09-3.08.07-.17-.01-.28-.04-.31-.11-.04-.14.17-.35.28-.47l.45-.52c.73-.88 1.49-1.73 2.19-2.64.34-.46 1.06-1.41.5-1.91-.76-.48-2.03.77-2.57 1.3l-4.06 3.87c-.26.25-.54.5-.88.63-.45.18-.99.15-1.49.2-.78.08-1.57.14-2.35.17-.44.02-.88.06-1.31.11-.2 0-.45.06-.62-.05-.19-.18.26-.61.38-.77.69-.76 1.37-1.53 2.04-2.31l2.69-3.11c.21-.25.47-.54.53-.85.1-.49-.38-.58-.76-.4-.33.14-.62.37-.91.57a14 14 0 0 0-1.92 1.61c-.79.85-1.64 1.65-2.41 2.52-.55.69-1.19 1.29-1.78 1.94-.91 1.06-1.1 1.31-2.55 1.4-.98.09-1.98.18-2.96.29-.65.06-1.3.09-1.94.13-.32.02-.65.03-.94.11-.37.08-.7.45-.36.77.16.15.45.22.73.23a34.1 34.1 0 0 0 3.78-.12c.45-.02.93-.12 1.38-.08.53.09.05.63-.14.87-.41.48-.84.95-1.22 1.46-.81 1.09-1.65 2.16-2.41 3.28-.28.42-.55.84-.85 1.24-.75.93-1.33 1.97-1.96 2.97-.32.51-.66 1.01-.91 1.56-.18.39-.33.8-.48 1.21-.1.3-.21.6-.22.92-.04.76.48 1.11.98.49zm19.96-16.7c1.03-.84 1.92-1.84 2.88-2.77.14-.13.31-.28.47-.35.23-.11.3-.02.17.19-.22.35-.57.64-.85.94-.46.43-.84.94-1.34 1.32-.21.15-.43.29-.63.45-.19.13-.79.73-.97.58-.02-.11.17-.27.27-.36zM96.19 28.43c.45.13.8-.42 1.09-.73 1.63-1.89 3.2-3.8 4.76-5.75 1.75-1.9 3.43-3.87 5.23-5.72.31-.3.66-.55 1.08-.65.5-.12 1.03-.19 1.54-.28.85-.1 1.71-.2 2.56-.35.68-.1 1.36-.1 2.04-.13.95-.04 1.91-.16 2.87-.17.61-.04 1.66.02 1.96-.62.21-.83-1.28-.82-1.82-.84-.73-.02-1.46-.06-2.18 0-.53.03-1.06.1-1.59.15-.68.1-1.36.08-2.04.17l-1.12.16c-.15.02-.47.05-.55-.05-.08-.12.19-.38.3-.5 1.44-1.45 2.88-2.9 4.38-4.28.6-.57 1.22-1.12 1.83-1.68.46-.39.86-.94 1.45-1.14.15-.05.31-.08.47-.09a56.5 56.5 0 0 1 4.87.01h1.55c.81.04 1.61.1 2.42.1.78.01 1.56.04 2.34.02.19 0 .39-.02.55-.07.23-.07.39-.19.39-.37 0-.3-.49-.58-.8-.66-.38-.13-.78-.16-1.17-.2-.65-.08-1.29-.2-1.94-.26-.73-.07-1.46-.06-2.18-.13a9.98 9.98 0 0 0-1.73-.05c-.73.02-1.46.03-2.2-.02-.53-.04-1.05-.02-1.58 0-.5 0-1.01-.04-1.51-.04l-1.34.02c-.68 0-1.36-.03-2.04 0-.44.02-3.03.34-4.11.43-.36.1-.72.22-.95.46-.27.24-.28.68.1.82.16.07.37.08.59.1l3.87-.09h.95c.16 0 .51 0 .54.1.04.21-.48.54-.64.71-1.06.91-2.07 1.87-3.12 2.8-.59.51-1.14 1.06-1.68 1.63-.76.8-1.54 1.58-2.31 2.37-.59.6-1.12.75-1.92.91-.55.14-2.37.76-2.37.76-.4.13-1.83.67-1.61 1.21.22.3.79.2 1.15.15l1.07-.1c.17-.03.38-.08.55-.07.44.02.08.44-.09.63-.25.28-.52.56-.76.85-.93 1.14-1.86 2.3-2.8 3.43A70.36 70.36 0 0 0 97.7 25c-.39.57-2.39 2.97-1.52 3.5zM141.53 12.12c-.5-.27-1.13-.18-1.68-.1-.43.08-.84.22-1.24.38-.55.23-1.11.44-1.64.71a16.1 16.1 0 0 0-3.17 2.12c-.5.31-.26-.11-.07-.33.46-.54 1-1.02 1.51-1.51.26-.25.51-.55.57-.91.07-.36-.09-.74-.45-.83-.3-.08-.61.05-.92.21-.31.17-.6.39-.89.58a6.6 6.6 0 0 1-3 1.16c-.46.04-.94.04-1.4-.02a.99.99 0 0 1-.74-.4c-.17-.23-.28-.54-.47-.76-.37-.44-1.02-.39-1.47-.12-.39.22-.72.56-1.03.89-.26.29-.86.93-.43 1.26.2.13.51.01.69.1.19.2-.9 1.14-1.07 1.33-.35.34-.71.66-1.07.99-.97.87-1.96 1.72-2.96 2.56a68.85 68.85 0 0 1-4.29 3.54c-.5.37-.98.78-1.53 1.08-.79.37-.47-.4-.25-.77.29-.54.61-1.06.97-1.56a29.62 29.62 0 0 1 4.85-5.28c.56-.49 1.09-1.01 1.69-1.45.43-.33.92-.58 1.36-.89.16-.12.31-.25.43-.4.35-.44.37-1-.35-.73-.93.39-1.79.96-2.65 1.52-.57.38-1.05.86-1.59 1.28a21.44 21.44 0 0 0-5.65 6.05c-.51.85-1.37 2.44-1.12 3.43.22.86 1.2 1.07 1.96.83.86-.26 1.59-.85 2.32-1.37 1.41-1.06 2.78-2.17 4.15-3.28a82.34 82.34 0 0 0 4.55-4c.81-.78 1.6-1.56 2.25-2.47.29-.37.67-.36 1.08-.22.59.19 1.2.29 1.84.28.25 0 .78-.06.72.31-.11.39-.45.74-.68 1.08-.41.54-.77 1.12-1.15 1.68-.35.51-.74 1-1.07 1.52-.2.31-.4.63-.63.93-.77.95-1.74 1.8-2.26 2.94-.16.37-.27.76-.22 1.15.12.83.92.94 1.49.41.32-.29.58-.66.84-1.01.37-.52.75-1.03 1.14-1.53.82-1.08 1.8-2 2.77-2.93a35.62 35.62 0 0 1 5.16-4.34c.74-.5 1.54-.91 2.36-1.25.6-.26 1.25-.32 1.89-.45.21-.05.41-.13.57-.26.41-.31.43-.89-.04-1.15z\" />\n        <path d=\"M194.83 8.13c-2.35.36-4.71.68-7.02 1.21-.37.11-.58.35-.15.49.13.04.3.06.45.07.93.07 1.86.12 2.79.07 1.38-.06 2.76-.18 4.13-.35 1.21-.11 2.43-.17 3.63-.32.17-.02.51-.04.59.08.1.11-.1.43-.22.58-.84 1.12-1.79 2.16-2.6 3.3-1 1.46-2.09 2.86-3.1 4.32-.96 1.43-1.96 2.84-2.87 4.3a35.55 35.55 0 0 0-2.55 4.75c-.14.34-.29.67-.27 1.02.04.59.61.65.95.25.19-.21.33-.47.48-.71a80.95 80.95 0 0 1 2.55-4.05c1.23-1.87 2.42-3.78 3.8-5.55.38-.51.76-1.04 1.12-1.57 1-1.46 2.12-2.84 3.21-4.24.57-.7 1.26-1.27 1.94-1.87.53-.48 1.09-.95 1.84-.98.52-.04 1.05 0 1.56-.05.5-.03.99-.13 1.48-.15.32-.01.63-.01.95-.04.57-.05 1.15-.14 1.73-.16l5.23-.2c1.43-.06 2.88-.13 4.28-.46.21-.07.41-.17.54-.31.22-.24.14-.59-.19-.72-.19-.08-.44-.09-.65-.1-.75 0-1.51 0-2.26-.02-.47-.02-.94-.02-1.41.01-1.77.09-3.55.2-5.32.23-1.16.07-2.32.14-3.49.13-.26-.01-.72.08-.91-.05-.17-.17.34-.59.45-.73.9-.97 1.91-1.85 2.7-2.92.32-.43.7-.91.74-1.45a.88.88 0 0 0-1.2-.9c-.54.2-.99.59-1.43.95-1.81 1.54-3.31 3.38-4.96 5.08-.34.31-.75.44-1.21.49-.52.06-1.05.11-1.57.15-1.26.07-2.52.18-3.77.39z\" />\n        <path d=\"M183.88 15.53c.99.6 4.31 1.73 4.12 3.03s-1.49 1.96-2.44 2.7c-4.04 2.63-8.85 3.8-13.61 4.17-.44.05-.9.03-1.34.02-1.02-.03-1 1.04-.33 1.53 1.58.88 3.59.47 5.33.34 2.8-.37 5.41-1.47 7.9-2.76 2.56-1.42 7.5-3.74 5.87-7.36-1.16-1.94-3.87-2.5-5.7-3.69-.49-.27-2.12-1.05-2.06-2.16.27-1.6 3.08-2.89 4.39-3.73a44.96 44.96 0 0 1 8.23-3.35c1.09-.34 2.25-.44 3.37-.62.4-.05.79-.07 1.19-.06.3.01 1-.29.7-.7-.85-.64-2.16-.44-3.16-.27-3.69.65-20.19 4.78-15.67 10.72.79 1.03 2.07 1.6 3.21 2.18z\" />\n        <path d=\"M170.95 19.19c-.51.34-1.04.63-1.57.94-.47.26-.92.57-1.42.76-.29.11-.61.19-.92.25-.2.04-.46.04-.58-.06-.14-.11-.11-.36 0-.54.21-.37.65-.52 1.03-.66.7-.26 1.38-.59 2.01-.98l.92-.57a13.62 13.62 0 0 0 2.79-2.4c.48-.5.87-1.07 1.21-1.67.72-1.13.34-2.77-1.26-2.41-.58.14-1.09.44-1.6.73-.82.46-1.51 1.12-2.2 1.75-.21.19-.44.37-.66.55-.65.53-1.19 1.17-1.74 1.8-.29.34-.6.68-.87 1.04-.54.72-.96 1.53-1.39 2.32-.33.69-.55 1.53-.2 2.25.2.42.6.73 1.05.82.38.08.79.06 1.18.02.71-.05 1.34-.34 2-.62.9-.34 1.66-.94 2.46-1.45.63-.37 1.18-.85 1.76-1.29.39-.28.71-.63 1.06-.95l.47-.41c.37-.31.68-.69.99-1.06.26-.32.53-.63.73-.99.22-.38.16-.81-.33-.65a2.2 2.2 0 0 0-.48.25c-.33.21-.65.41-.95.65-1.15.89-2.31 1.76-3.49 2.6zm-2.71-1.57c.35-.52.79-.96 1.23-1.39.25-.25.49-.52.75-.76.44-.42.96-.76 1.43-1.15.28-.22.55-.47.85-.67.22-.14.55-.41.77-.34.12.13-.13.48-.23.63a18.5 18.5 0 0 1-3.56 3.55c-.29.21-.61.4-.93.59-.94.65-.85.27-.33-.47z\" />\n      </g>\n    </g>\n    <defs>\n      <clipPath id=\"clip0_124_45863\">\n        <rect width=\"1440\" height=\"83\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n","interface HamptonSignatureProps {\n  backgroundColor?: string;\n  fillColor?: string;\n  testId?: string;\n}\n\nexport const HamptonSignature: React.FC<HamptonSignatureProps> = ({\n  backgroundColor = 'white',\n  fillColor = '#0047B5',\n  testId = 'hampton-signature',\n}) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"100%\"\n    height=\"auto\"\n    viewBox=\"0 0 1440 480\"\n    fill=\"none\"\n    data-testid={testId}\n    aria-hidden=\"true\"\n  >\n    <rect width=\"1440\" height=\"480\" fill={backgroundColor} />\n    <path\n      fill={fillColor}\n      d=\"m105.37 221.35 2.28-7.9h75.64c-45.07 150.43-3.08 226.62 19.45 226.62 3.8 0 5.98-3.44 5.05-7.62-11.83-54.13 3.63-136.75 29.86-218.97h9.74c14.14 0 22.95-11.54 22.95-15.08 0-1.67-.93-2.9-3.18-2.9h-23.63c22.44-66.47 52.88-139.86 98.59-184.96a6.14 6.14 0 0 0 1.9-4.46c0-3.48-2.03-6.08-6.37-6.08-20.06 0-96.43 38.45-148.67 195.54H112.8c18.64-65.2 30.95-107.43 59.5-147.32 4.11-5.76 5.91-10.03 5.91-13.09 0-4.79-4.92-6.65-15.94-6.87C105.92 27.16 26.46 41.95.03 69.1v30.76c.87-.25 1.74-.7 2.45-1.41C28.77 73.81 73.9 49.6 148.45 41.34 111.13 64.6 78.2 130.64 56.96 195.5H37.77c-14.14 0-22.95 11.54-22.95 15.07 0 1.67.93 2.9 3.18 2.9h33.37c-.87 2.89-1.7 5.78-2.5 8.67-13 46.23-27.72 97.3-48.87 137.75v54.2c50.98-44.69 84.57-120.9 105.34-192.72l.03-.03Z\"\n    />\n    <path\n      fill=\"#0047B5\"\n      d=\"m1415.89 278.95 24.11-74.92v-53.69c-5.14-9.13-14.21-14.85-27.84-14.85-26.55 0-49.12 19.2-66.34 43.24 3.85-19.55-.87-39.54-28.65-39.54-5.88 0-8.39.74-9.61 4.5l-2.89 9c-10.29 32.2-35.49 52.3-57.96 60.91.55-6.1.81-12.11.71-17.93-.45-32.37-15.59-60.21-51.43-60.21-51.79 0-88.31 47.57-102.42 98.14a142.49 142.49 0 0 1-10.93 27.9c-13.53 25.88-35.32 52.24-50.91 52.24-10.71 0-11.32-12.06-4.18-34.66l39.5-123.82h32.05c13.02 0 19.61-7.9 19.61-12.99 0-1.54-1.12-2.57-3.05-2.57H1072l23.12-72.42c2.05-6.46-2.86-8.55-12.38-8.55-22.73.06-38.83 12.5-44.87 31.4l-15.82 49.57h-19.96c-13.02 0-19.61 7.91-19.61 12.99 0 1.54 1.13 2.57 3.05 2.57h31.54l-34.65 108.59c-10.74 33.62-31.35 56.92-59 56.92-5.55 0-10.12-.8-14.4-2.34 56.49-58.73 76.13-182.9 8.98-182.9-21.73 0-41.57 14.36-58.02 35.61 1.18-16.78-5.53-31.92-29.7-31.92-5.89 0-8.4.74-9.62 4.5l-30.18 95.44c-10.84 34.27-40.31 74.6-60.56 74.6-10.7 0-11.32-12.05-4.18-34.64l24.33-76.16c10.93-34.17 4.7-67.4-28.22-67.4-27.9 0-51.53 21.66-69.05 47.38 3.22-26.36-6.14-47.38-32.72-47.38-26.59 0-49.19 19.09-66.45 43.23 3.86-19.54-.87-39.54-28.64-39.54-5.88 0-8.42.74-9.61 4.5l-30.57 95.8c-10.83 33.9-41.18 74.22-60.2 74.22-10.71 0-11.32-12.06-4.19-34.65l41.95-131.35c2.06-6.46-2.4-8.55-11.95-8.55-20.32.06-35.36 10.03-42.63 25.65-3.63-17.1-13.53-29.57-33.53-29.57-97.52 0-158.28 213.18-70.43 213.18 23.08 0 44.04-16.52 61.08-39.95-.52 22.56 9.32 39.95 33.14 39.95 26.42 0 48.99-19.41 66.19-43.3-4.28 19.36-2.19 40.5 24.43 40.5 7.23 0 12.34-.57 13.76-5.04l27.25-85.4c15.34-48 43.75-84.97 63.81-84.97 10.7 0 11.32 12.06 4.18 34.66l-29.19 91.13c-9.06 28.41-4.66 49.66 21.96 49.66 7.23 0 12.34-.58 13.76-5.05l27.29-85.4c15.33-48 43.75-84.97 63.8-84.97 10.71 0 11.32 12.06 4.19 34.66l-24.34 76.15c-10.93 34.17-4.7 67.4 28.23 67.4 26.45 0 49.05-19.47 66.25-43.39l-22.6 71.43c-9.07 28.41-4.7 49.66 21.95 49.66 7.24 0 12.35-.58 13.76-5.05l31.73-100.32c3.95 16.14 13.85 27.68 33.1 27.68 16.56 0 32.06-6.14 45.94-16.37 8.36 3.86 17.71 6.43 27.49 6.43 19.15 0 36-7.8 50.98-26.8.48 20.95 10.48 36.74 33.14 36.74 35.46 0 64-35 81.94-68.8.22 36.33 16.87 68.8 56.28 68.8 54.84 0 90.49-59.99 100.84-117.08 15.14-4.82 30.35-13.56 43.75-26.55l-29.12 91.2c-9.07 28.41-4.66 49.66 21.95 49.66 7.24 0 12.35-.58 13.76-5.05l27.26-85.4c15.33-48 44.23-84.96 63.71-84.96 10.71 0 11.32 12.05 4.18 34.65l-18.19 56.7c-24.98 77.95 2.05 128.2 61.91 128.2 2.15 0 4.31-.1 6.46-.26v-21.06c-30.31-1.9-42.21-32.98-24.11-89.49l.16-.13ZM326.72 314.41c-40.73 0 5.34-149.57 53.43-149.57 8.8 0 14.98 6.59 14.98 21.18 0 29.25-32.37 128.4-68.4 128.4Zm515.06 4.37c-8.8 0-14.98-6.59-14.98-21.18 0-29.25 32.37-128.13 68.4-128.13 40.73 0-5.33 149.31-53.42 149.31ZM1157 322.1c-15.95 0-21.25-19.38-21.25-40.47 0-29.7 9.9-66.67 25.07-92.45 1.16 29.8 24.75 46.2 54.07 46.68-9.2 42.46-30.41 86.24-57.89 86.24Zm60.94-103.12c-20.99-.48-37.25-11.99-37.25-35.3 0-14.59 9.58-25.97 19.57-26 13.89 0 19.64 15.5 19.64 35.72 0 7.87-.67 16.55-1.96 25.58Z\"\n    />\n  </svg>\n);\n","import { createCpmComponentDefinition } from '@dx-ui/cpm-sdk';\nimport { Spacer } from '@dx-ui/osc-spacer';\nimport { LivSmartAccent } from './illustrations/livsmart-accent';\nimport { LivSmartFurniture } from './illustrations/livsmart-furniture';\nimport { EnterpriseFiligree } from './illustrations/enterprise-filigree';\nimport { HamptonSignature } from './illustrations/hampton-signature';\n\nexport default createCpmComponentDefinition(\n  'Illustration Block',\n\n  function mapComponentData({ data }) {\n    return data;\n  },\n\n  function IllustrationBlock({ componentParams }) {\n    if (componentParams.illustration) {\n      switch (componentParams.illustration) {\n        case 'ey-accent':\n          return (\n            <Spacer>\n              <LivSmartAccent />\n            </Spacer>\n          );\n\n        case 'ey-furniture':\n          return (\n            <Spacer>\n              <LivSmartFurniture />\n            </Spacer>\n          );\n\n        case 'hx-signature-default':\n          return (\n            <Spacer>\n              <HamptonSignature\n                backgroundColor=\"white\"\n                fillColor=\"#0047B5\"\n                testId=\"hampton-signature-default\"\n              />\n            </Spacer>\n          );\n\n        case 'hx-signature-light':\n          return (\n            <Spacer>\n              <HamptonSignature\n                backgroundColor=\"#BDD4E5\"\n                fillColor=\"#0047B5\"\n                testId=\"hampton-signature-light\"\n              />\n            </Spacer>\n          );\n\n        case 'hx-signature-dark':\n          return (\n            <Spacer>\n              <HamptonSignature\n                backgroundColor=\"#002666\"\n                fillColor=\"#0047B5\"\n                testId=\"hampton-signature-dark\"\n              />\n            </Spacer>\n          );\n\n        case 'ww-filigree-default':\n          return (\n            <Spacer styles={{ backgroundColor: '#F0E9E6' }}>\n              <EnterpriseFiligree\n                fillColor=\"#F0E9E6\"\n                opacity=\"0.1\"\n                testId=\"enterprise-filigree-default\"\n              />\n              <EnterpriseFiligree\n                fillColor=\"#F0E9E6\"\n                opacity=\"0.1\"\n                testId=\"enterprise-filigree-default\"\n              />\n              <EnterpriseFiligree\n                fillColor=\"#F0E9E6\"\n                opacity=\"0.1\"\n                testId=\"enterprise-filigree-default\"\n              />\n            </Spacer>\n          );\n\n        case 'ww-filigree-light':\n          return (\n            <Spacer styles={{ backgroundColor: '#F0E9E6' }}>\n              <EnterpriseFiligree\n                fillColor=\"#F0E9E6\"\n                opacity=\"0.35\"\n                testId=\"enterprise-filigree-light\"\n              />\n              <EnterpriseFiligree\n                fillColor=\"#F0E9E6\"\n                opacity=\"0.35\"\n                testId=\"enterprise-filigree-light\"\n              />\n              <EnterpriseFiligree\n                fillColor=\"#F0E9E6\"\n                opacity=\"0.35\"\n                testId=\"enterprise-filigree-light\"\n              />\n            </Spacer>\n          );\n\n        case 'ww-filigree-dark':\n          return (\n            <Spacer styles={{ backgroundColor: '#002F61' }}>\n              <EnterpriseFiligree\n                fillColor=\"#002F61\"\n                opacity=\"1\"\n                testId=\"enterprise-filigree-dark\"\n              />\n              <EnterpriseFiligree\n                fillColor=\"#002F61\"\n                opacity=\"1\"\n                testId=\"enterprise-filigree-dark\"\n              />\n              <EnterpriseFiligree\n                fillColor=\"#002F61\"\n                opacity=\"1\"\n                testId=\"enterprise-filigree-dark\"\n              />\n            </Spacer>\n          );\n\n        case 'none':\n          return null;\n\n        default:\n          return null;\n      }\n    }\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { DynamicGridWOM, DynamicGrid } from '@dx-ui/osc-dynamic-grids';\n\nimport { extractInstanceIndexFromId } from '../../utils/id-transformer';\nimport {\n  createCpmComponentDefinition,\n  useCreateManageContentButton,\n  selectFirstAssetWithAspectRatio,\n  selectLastAssetWithAspectRatio,\n} from '@dx-ui/cpm-sdk';\nimport { HamptonHexVisual } from '../FourXGrid/HamptonHexVisual';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { BrandComponentThemeInline } from '@dx-ui/osc-brands-wrappers';\nimport { useMetrics } from '../../Context';\n\nexport default createCpmComponentDefinition(\n  'Dynamic Grid',\n\n  function mapData({ data, componentParams: { display } }) {\n    const { link } = data;\n    let asset;\n    if (display === 'noModal') {\n      asset = selectFirstAssetWithAspectRatio('3x4', data.cpmAssets);\n    } else {\n      asset = selectFirstAssetWithAspectRatio('3x2', data.cpmAssets);\n    }\n    const modalImageUrl = selectLastAssetWithAspectRatio('16x9', data.cpmAssets)?.aspectRatios[\n      '16x9'\n    ].url;\n\n    const desktopDefinedImage = data?.cmsDefinedAspectRatioImages[0]?.desktop?.url;\n    const tabletDefinedImage = data?.cmsDefinedAspectRatioImages[0]?.tablet?.url;\n    const mobileDefinedImage = data?.cmsDefinedAspectRatioImages[0]?.mobile?.url;\n\n    return {\n      id: data.id ?? '',\n      captionData: asset?.caption\n        ? {\n            caption: asset?.caption ?? '',\n          }\n        : undefined,\n      imageUrl: desktopDefinedImage ?? asset?.aspectRatios['3x4']?.url ?? '',\n      tabletImageUrl: tabletDefinedImage ?? '',\n      mobileImageUrl: mobileDefinedImage ?? '',\n      imageAltTxt: asset?.altText ?? '',\n      headline: data.headline,\n      shortDescription: data.shortDescription,\n      link: link?.url ? link : undefined,\n      links: data.links,\n      itemTitle: data?.label ?? '',\n      modalImageUrl,\n    };\n  },\n\n  function DynamicGridCPM({ componentParams, items = [], listData, mappedPage: { brandCode } }) {\n    const metrics = useMetrics();\n    const createManageContentButton = useCreateManageContentButton();\n    const { display, gridColumns } = componentParams;\n    const isWA = brandCode === 'WA';\n\n    if (!listData) {\n      return null;\n    }\n\n    const { id, headline, description, links } = listData;\n\n    if (!items.length) {\n      return null;\n    }\n\n    const itemsWithManageContentButton = items.map((item) => ({\n      ...item,\n      cmsDocumentControl: createManageContentButton(item.$ref),\n    }));\n\n    const onViewItem = (selectedItemId: string) => {\n      const index = items.findIndex((item) => item.id === selectedItemId);\n      const item = items[index];\n\n      if (item?.experimentationConfiguration && item.experimentationConfiguration.goal) {\n        const val = Number(item.experimentationConfiguration.value);\n        sendReward(item.experimentationConfiguration.goal, Number.isFinite(val) ? val : undefined);\n      }\n\n      metrics.trackGridItemClick?.([\n        {\n          itemNumber: index + 1,\n          totalItems: items.length,\n          label: item?.itemTitle ?? '',\n          gridNumber: extractInstanceIndexFromId(id),\n          is4XGrid: true,\n        },\n      ]);\n    };\n\n    const listLink = links[0];\n    const hexEnabled =\n      brandCode === 'HP' && componentParams.backgroundIllustration === 'hx-hexagon';\n\n    if (display === 'noModal') {\n      return (\n        <BrandComponentThemeInline\n          componentClassName=\"fourXWOMGrid\"\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration ?? 'none',\n          }}\n        >\n          <DynamicGridWOM\n            textAlign={componentParams.listTextAlign}\n            imageAspectRatio={componentParams?.aspectRatioDesktop || '3:4'}\n            tabletImageAspectRatio={componentParams?.aspectRatioTablet || '3:4'}\n            mobileImageAspectRatio={componentParams?.aspectRatioMobile || '3:4'}\n            isAnimated={componentParams.animation}\n            listHeadline={headline ?? undefined}\n            listDescription={description ?? undefined}\n            id={id}\n            link={listLink ? listLink : undefined}\n            items={itemsWithManageContentButton}\n            brandComponentTheme={componentParams.theme}\n            columnCount={gridColumns}\n          />\n        </BrandComponentThemeInline>\n      );\n    } else {\n      return (\n        <BrandComponentThemeInline\n          componentClassName=\"fourXGrid\"\n          componentParams={componentParams}\n          brandCode={brandCode}\n          backgroundIllustration={{\n            isParallax: componentParams?.backgroundParallax,\n            variant: componentParams?.backgroundIllustration ?? 'none',\n          }}\n        >\n          <HamptonHexVisual theme={componentParams.theme ?? ''} enabled={hexEnabled}>\n            <DynamicGrid\n              textAlign={componentParams.listTextAlign}\n              listDescription={description ?? undefined}\n              listHeadline={headline ?? undefined}\n              id={id}\n              imageAspectRatio={componentParams?.aspectRatioDesktop || '3:2'}\n              tabletImageAspectRatio={componentParams?.aspectRatioTablet || '3:2'}\n              mobileImageAspectRatio={componentParams?.aspectRatioMobile || '3:2'}\n              items={itemsWithManageContentButton}\n              onViewItem={onViewItem}\n              brandComponentTheme={componentParams.theme}\n              isAnimated={isWA}\n              columnCount={gridColumns}\n              variant=\"card\"\n            />\n          </HamptonHexVisual>\n        </BrandComponentThemeInline>\n      );\n    }\n  }\n);\n","export { default } from './cpm-component-definition';\n","import { defaultPublicVars } from '@dx-ui/framework-env';\n\nexport const publicEnvVars = [\n  ...defaultPublicVars,\n  'BROWSER_DX_GQL_URI',\n  'CMS_BASE_URL',\n  'CONDUCTRICS_URI',\n  'DX_AUTH_APP_CUSTOMER_ID',\n  'DX_AUTOCOMPLETE_URI',\n  'GLOBAL_PRIVACY_URL',\n  'HILTON_ASSETS_URI',\n  'PARTNER_FORGET_INFO_LINK',\n] as const;\n\nexport const namespaces = [\n  'common',\n  'cpm-mapping-shared',\n  'osc-accordion',\n  'osc-alert',\n  'osc-back-to-top',\n  'osc-brands-header',\n  'osc-brands-search',\n  'osc-calendar',\n  'osc-card-carousel',\n  'osc-carousel',\n  'osc-chip',\n  'osc-date-picker',\n  'osc-dialog',\n  'osc-dynamic-grids',\n  'osc-error-page',\n  'osc-filmstrip',\n  'osc-footer',\n  'osc-form',\n  'osc-gallery',\n  'osc-header',\n  'osc-hero-image',\n  'osc-hero-text-overlay',\n  'osc-info-popup',\n  'osc-join-form-form',\n  'osc-join-form-join',\n  'osc-join-modal-button',\n  'osc-language-selector',\n  'osc-link',\n  'osc-location',\n  'osc-login',\n  'osc-marketing',\n  'osc-marketing-brand-showcase',\n  'osc-marketing-dx-dialog-with-content',\n  'osc-marketing-dx-image-carousel',\n  'osc-marketing-dynamic-grid',\n  'osc-marketing-error',\n  'osc-marketing-half-and-half',\n  'osc-marketing-layout',\n  'osc-pagination',\n  'osc-rooms',\n  'osc-scroll-animation',\n  'osc-scrollable-tabs',\n  'osc-shop-form',\n  'osc-smb-profile-switcher',\n  'osc-special-rates',\n  'osc-speedbump',\n  'osc-stepper',\n  'osc-tooltip',\n  'osc-video-player',\n  'special-rates',\n];\n","import { useState, useEffect } from 'react';\n\n/**\n * Returns an array of segments IDs that should be used for targeting\n * when the `segmentIds` query param exists in the URL, otherwise\n * returns `undefined`.\n */\nexport function usePreviewSegmentsFromUrl() {\n  const [previewSegmentIds, setPreviewSegmentIds] = useState<string[]>([]);\n\n  // We need to check client side because targeting only runs on the client\n  useEffect(() => {\n    try {\n      const params = new URLSearchParams(window.location.search);\n      const segments = params.get('segmentIds');\n\n      if (segments) {\n        setPreviewSegmentIds(segments.split(','));\n      }\n    } catch {\n      // We don't need to handle errors\n    }\n  }, []);\n\n  return previewSegmentIds;\n}\n","export const Goals = {\n  SignInSuccess: 'g-IqzR2S0Ai5',\n  JoinHiltonHonorsTAB: 'g-2Mx3NVgKEo',\n  JoinForFreeCTA: 'g-YALuwfEhWZ',\n  EngagementWithVideoHONORS: 'g-R6YcyFiTIc',\n  HiltonHonorsAppTAB: 'g-ceePuT4jz0',\n  EngagementWithVideoAPP: 'g-eji8qd4d2v',\n  DownloadForFreeCTA: 'g-JvISPYafgq',\n  SignInCTA: 'g-330wZxWuoO',\n  HiltonGetaways: 'g-hilton-getaways',\n  FindAHotelClick: 'g-DD3G7VqYaV',\n  EditBrandSearchWidget: 'g-C6bnRUoR2d',\n} as const;\n","import BrandAlerts from './mapping/BrandAlerts';\nimport BrandCarousel from './mapping/BrandCarousel';\nimport BrandShowcase from './mapping/BrandShowcase';\nimport BrandVideo from './mapping/BrandVideo';\nimport Collage from './mapping/Collage';\nimport Editorial from './mapping/Editorial';\nimport Experimentation from './mapping/Experimentation';\nimport FourXGrid from './mapping/FourXGrid';\nimport FullWidthImage from './mapping/FullWidthImage';\nimport Gallery from './mapping/Gallery';\nimport Grid369 from './mapping/Grid369';\nimport HalfAndHalf from './mapping/HalfAndHalf';\nimport ImageHeadliner from './mapping/ImageHeadliner';\nimport MastheadImage from './mapping/MastheadImage';\nimport TabbedSection from './mapping/TabbedSection';\nimport TextBlock from './mapping/TextBlock';\nimport TextHighlight from './mapping/TextHighlight';\nimport VideoPoster from './mapping/VideoPoster';\nimport PatchworkGrid from './mapping/PatchworkGrid';\nimport Filmstrip from './mapping/Filmstrip';\nimport FullWidthMedia from './mapping/FullWidthMediaAndCopy';\nimport FullWidthMediaAndCopyOverlay from './mapping/FullWidthMediaAndCopyOverlay';\nimport Offset from './mapping/Offset';\nimport Accordion from './mapping/Accordion';\nimport IllustrationBlock from './mapping/IllustrationBlock';\nimport DynamicGrid from './mapping/DynamicGrid';\n\nexport type { AnalyticsTagging } from './types/analytics-tagging';\nexport * from './types/gql';\n\nexport * from './Context';\n\nexport { publicEnvVars, namespaces } from './utils/constants';\nexport { deduplicate } from './utils/deduplicate';\n\nexport { usePreviewSegmentsFromUrl } from './hooks/use-preview-segments-from-url';\n\nexport { Goals } from './utils/conductrics';\n\nexport {\n  BrandAlerts,\n  BrandCarousel,\n  BrandShowcase,\n  BrandVideo,\n  Collage,\n  Editorial,\n  Experimentation,\n  FourXGrid,\n  FullWidthImage,\n  Gallery,\n  Grid369,\n  HalfAndHalf,\n  ImageHeadliner,\n  MastheadImage,\n  TabbedSection,\n  TextBlock,\n  TextHighlight,\n  VideoPoster,\n  PatchworkGrid,\n  Filmstrip,\n  Offset,\n  Accordion,\n  IllustrationBlock,\n  FullWidthMedia,\n  FullWidthMediaAndCopyOverlay,\n  DynamicGrid,\n};\n\nexport const sharedMappingSpec = {\n  [BrandAlerts.cpmComponentName]: BrandAlerts,\n  [BrandCarousel.cpmComponentName]: BrandCarousel,\n  [BrandShowcase.cpmComponentName]: BrandShowcase,\n  [BrandVideo.cpmComponentName]: BrandVideo,\n  [Collage.cpmComponentName]: Collage,\n  [Editorial.cpmComponentName]: Editorial,\n  [Experimentation.cpmComponentName]: Experimentation,\n  [FourXGrid.cpmComponentName]: FourXGrid,\n  [FullWidthImage.cpmComponentName]: FullWidthImage,\n  [Gallery.cpmComponentName]: Gallery,\n  [Grid369.cpmComponentName]: Grid369,\n  [HalfAndHalf.cpmComponentName]: HalfAndHalf,\n  [ImageHeadliner.cpmComponentName]: ImageHeadliner,\n  [MastheadImage.cpmComponentName]: MastheadImage,\n  [TabbedSection.cpmComponentName]: TabbedSection,\n  [TextBlock.cpmComponentName]: TextBlock,\n  [TextHighlight.cpmComponentName]: TextHighlight,\n  [VideoPoster.cpmComponentName]: VideoPoster,\n  [PatchworkGrid.cpmComponentName]: PatchworkGrid,\n  [Filmstrip.cpmComponentName]: Filmstrip,\n  [Offset.cpmComponentName]: Offset,\n  [Accordion.cpmComponentName]: Accordion,\n  [IllustrationBlock.cpmComponentName]: IllustrationBlock,\n  [FullWidthMedia.cpmComponentName]: FullWidthMedia,\n  [FullWidthMediaAndCopyOverlay.cpmComponentName]: FullWidthMediaAndCopyOverlay,\n  [DynamicGrid.cpmComponentName]: DynamicGrid,\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 TogglesDocument = {\n  operationName: 'featureConfigs_featureToggles',\n  operationString: `query featureConfigs_featureToggles($features: [String]!, $configs: [String!]!) {\n  featureToggles: featureToggles(names: $features) {\n    name\n    enabled\n    cacheable\n  }\n  configToggles: featureConfigs(names: $configs) {\n    config\n    name\n  }\n}`,\n  originalOpName: 'Toggles',\n};\nexport function useTogglesQuery<TData = Types.TogglesQuery, TError = DXError>(\n  variables: Types.TogglesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.TogglesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.TogglesQuery, TError, TData>({\n    queryKey: [TogglesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideTogglesQuery(\n  queryClient: QueryClient,\n  variables: Types.TogglesQueryVariables,\n  options?: FetchQueryOptions<Types.TogglesQuery>\n) {\n  return queryClient.fetchQuery<Types.TogglesQuery>({\n    queryKey: [TogglesDocument, variables],\n    ...options,\n  });\n}\n\nexport const CmsPageModelDocument = {\n  operationName: 'CmsPageModel',\n  operationString: `query CmsPageModel($language: String!, $path: String!) {\n  cmsPageModel(language: $language, path: $path)\n}`,\n  originalOpName: 'CmsPageModel',\n};\nexport function useCmsPageModelQuery<TData = Types.CmsPageModelQuery, TError = DXError>(\n  variables: Types.CmsPageModelQueryVariables,\n  options?: Omit<UseQueryOptions<Types.CmsPageModelQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.CmsPageModelQuery, TError, TData>({\n    queryKey: [CmsPageModelDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideCmsPageModelQuery(\n  queryClient: QueryClient,\n  variables: Types.CmsPageModelQueryVariables,\n  options?: FetchQueryOptions<Types.CmsPageModelQuery>\n) {\n  return queryClient.fetchQuery<Types.CmsPageModelQuery>({\n    queryKey: [CmsPageModelDocument, variables],\n    ...options,\n  });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window;","import type { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport type { IllustrationVariant } from '@dx-ui/osc-brands-wrappers';\nimport { illustrationVariants } from '@dx-ui/osc-brands-wrappers';\nimport type { GuardedType } from '../typeHelpers';\nimport type { textOverlayVariant, IllustrationBlockVariant } from './types';\n\nexport function isBoolean(x: unknown): x is boolean {\n  return x === true || x === false;\n}\n\nexport function isString(x: unknown): x is string {\n  return typeof x === 'string';\n}\n\nexport function isAlignment(x: unknown): x is 'left' | 'right' | 'alternate' | 'round' | 'none' {\n  return x === 'left' || x === 'right' || x === 'alternate' || x === 'round' || x === 'none';\n}\n\nexport function isPosition(x: unknown): x is 'left' | 'right' | 'center' {\n  return x === 'left' || x === 'right' || x === 'center';\n}\n\nexport function isTheme(x: unknown): x is 'light' | 'dark' {\n  return x === 'light' || x === 'dark';\n}\n\nexport function isOrientation(x: unknown): x is 'horizontal' | 'vertical' {\n  return x === 'horizontal' || x === 'vertical';\n}\n\nexport function isHeaderSvg(x: unknown): x is 'byHilton' | 'none' {\n  return x === 'byHilton' || x === 'none';\n}\nexport function isGridColumn(x: unknown): x is '2' | '3' | '4' {\n  return x === '2' || x === '3' || x === '4';\n}\n\nexport function isFullWidthMediaDisplay(\n  x: unknown\n): x is\n  | 'hxHexagonBlue'\n  | 'hxHexagonDarkBlue'\n  | 'hxHexagonDarkOrange'\n  | 'hxHexagonDarkPurple'\n  | 'hxHexagonDarkRed'\n  | 'hxHexagonRed'\n  | 'mediaOnly'\n  | 'mediaWithCopy' {\n  return (\n    x === 'hxHexagonBlue' ||\n    x === 'hxHexagonDarkBlue' ||\n    x === 'hxHexagonDarkOrange' ||\n    x === 'hxHexagonDarkPurple' ||\n    x === 'hxHexagonDarkRed' ||\n    x === 'hxHexagonRed' ||\n    x === 'mediaOnly' ||\n    x === 'mediaWithCopy'\n  );\n}\n\nexport function isImageDisplay(\n  x: unknown\n): x is 'static' | 'textOverlay' | 'imageCarousel' | 'fullCarousel' {\n  return x === 'static' || x === 'textOverlay' || x === 'imageCarousel' || x === 'fullCarousel';\n}\n\nexport function isTabDisplay(\n  x: unknown\n): x is 'text' | 'textAndIcon' | 'textAndlogo' | 'icon' | 'logo' {\n  return x === 'text' || x === 'textAndIcon' || x === 'textAndlogo' || x === 'icon' || x === 'logo';\n}\n\nexport function isEditorialDisplay(x: unknown): x is 'default' | 'snippet' | 'withCarousel' {\n  return x === 'default' || x === 'snippet' || x === 'withCarousel';\n}\n\nexport function isBackgroundIllustration(x: unknown): x is IllustrationVariant {\n  for (const valid of illustrationVariants) {\n    if (valid === x) return true;\n  }\n  return false;\n}\n\nexport const illustrationBlockVariant = [\n  'ey-accent',\n  'ey-furniture',\n  'hx-signature-default',\n  'hx-signature-light',\n  'hx-signature-dark',\n  'ww-filigree-default',\n  'ww-filigree-light',\n  'ww-filigree-dark',\n  'none',\n];\n\nexport function isIllustrationBlock(x: unknown): x is IllustrationBlockVariant {\n  for (const valid of illustrationBlockVariant) {\n    if (valid === x) return true;\n  }\n  return false;\n}\n\nexport const textOverlayVariants = ['forTheStay', 'none'];\n\nexport function isTextOverlay(x: unknown): x is textOverlayVariant {\n  for (const valid of textOverlayVariants) {\n    if (valid === x) return true;\n  }\n  return false;\n}\n\nexport function isPaddingAmount(x: unknown): x is 'default' | 'small' | 'medium' | 'large' {\n  return x === 'default' || x === 'small' || x === 'medium' || x === 'large';\n}\n\nexport function isCmsHeadingLevel(x: unknown): x is 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' {\n  return x === 'h1' || x === 'h2' || x === 'h3' || x === 'h4' || x === 'h5' || x === 'h6';\n}\n\nexport function isInteger(x: unknown): x is number {\n  return Number.isInteger(x);\n}\n\nexport function isHeadingLevel(x: unknown): x is HeadingLevel {\n  if (isInteger(x)) {\n    return x > 0 && x < 7;\n  }\n\n  return false;\n}\n\nexport function isMediaRatio(x: unknown): x is '50-50' | '60-40' | '70-30' {\n  return x === '50-50' || x === '60-40' || x === '70-30';\n}\n\nexport function isCmsAspectRatio(\n  x: unknown\n): x is '3:2' | '3:4' | '1:1' | '16:9' | '18:5' | '21:9' {\n  return x === '3:2' || x === '3:4' || x === '1:1' || x === '16:9' || x === '18:5' || x === '21:9';\n}\n\nexport function convertTopHeadingLevelToInteger(cmsHeadingLevel: unknown) {\n  if (isCmsHeadingLevel(cmsHeadingLevel)) {\n    return parseInt(cmsHeadingLevel.replace('h', ''));\n  }\n}\n\n/**\n * Converts the CMS aspect ratio format of <number>:<number> to the CPM format which is <number>x<number>\n */\ntype ReplaceAspectRatioColon<AspectRatio extends string> =\n  AspectRatio extends `${infer Width}:${infer Height}` ? `${Width}x${Height}` : never;\n\n/**\n * CPM formatted aspect ratios from the subset of aspect ratios that the CMS supports\n */\ntype ConvertedCpmAspectRatio = ReplaceAspectRatioColon<GuardedType<typeof isCmsAspectRatio>>;\n\nexport function convertCmsAspectRatioToCpmAspectRatio(aspectRatio: unknown) {\n  if (isCmsAspectRatio(aspectRatio)) {\n    return aspectRatio.replace(':', 'x') as ConvertedCpmAspectRatio;\n  }\n}\n\nexport function isCpmAspectRatio(x: unknown): x is ConvertedCpmAspectRatio {\n  return x === '3x2' || x === '3x4' || x === '1x1' || x === '16x9' || x === '18x5' || x === '21x9';\n}\n","import type { MappingSchema } from '../schema';\nimport type { ValueOf } from '../typeHelpers';\nimport type { UniversalComponentParams, ComponentParamsProperty } from './types';\nimport {\n  isBoolean,\n  isString,\n  isTheme,\n  isAlignment,\n  isBackgroundIllustration,\n  isHeadingLevel,\n  isPaddingAmount,\n  isPosition,\n  convertTopHeadingLevelToInteger,\n} from './validators';\n\nexport const effectsList = [\n  'animation',\n  'blur',\n  'backgroundImage',\n  'svg',\n  'borderTrim',\n  'horizontalLine',\n  'scrollingAnimation',\n  'noMargin',\n  'backgroundParallax',\n];\n\nexport function makeParamValidator<T, DefaultValue>(\n  validator: (x: unknown) => x is T,\n  defaultValue: DefaultValue\n) {\n  return function doValidation(value: unknown): T | DefaultValue {\n    if (validator(value)) {\n      return value;\n    } else {\n      return defaultValue;\n    }\n  };\n}\n\nfunction sanitizeUniversalParams(\n  params: Partial<Record<string, string | boolean>>\n): UniversalComponentParams {\n  function validOrUndefined<T>(validator: (x: unknown) => x is T, value: unknown): T | undefined {\n    return makeParamValidator(validator, undefined)(value);\n  }\n\n  return {\n    animation: validOrUndefined(isBoolean, params.animation),\n    horizontalLine: validOrUndefined(isBoolean, params.horizontalLine),\n    scrollingAnimation: validOrUndefined(isBoolean, params.scrollingAnimation),\n    noMargin: validOrUndefined(isBoolean, params.noMargin),\n    backgroundImage: validOrUndefined(isBoolean, params.backgroundImage),\n    backgroundParallax: validOrUndefined(isBoolean, params.backgroundImage),\n    backgroundIllustration: validOrUndefined(\n      isBackgroundIllustration,\n      params.isBackgroundIllustration\n    ),\n    topPadding: validOrUndefined(isPaddingAmount, params.topPadding),\n    bottomPadding: validOrUndefined(isPaddingAmount, params.bottomPadding),\n    borderTrim: validOrUndefined(isBoolean, params.borderTrim),\n    oneLinkNoTx: validOrUndefined(isBoolean, params.oneLinkNoTx),\n\n    anchorId: validOrUndefined(isString, params.anchorId),\n    displayOption: validOrUndefined(isString, params.displayOption),\n    display: validOrUndefined(isString, params.display),\n\n    theme: validOrUndefined(isTheme, params.theme),\n\n    textAlign: validOrUndefined(isPosition, params.textAlign),\n    textboxPosition: validOrUndefined(isPosition, params.textAlign),\n    imageDisplay: validOrUndefined(isAlignment, params.imageDisplay),\n\n    topHeadingLevel: validOrUndefined(\n      isHeadingLevel,\n      convertTopHeadingLevelToInteger(params.topHeadingLevel)\n    ),\n\n    agentId: validOrUndefined(isString, params.agentId),\n    variation: validOrUndefined(isString, params.variation),\n  };\n}\n\nfunction stripUndefineds<T>(x: T): T {\n  return JSON.parse(JSON.stringify(x));\n}\n\nexport function parseComponentParams<ComponentSchema extends ValueOf<MappingSchema>>(\n  componentSchema: ComponentSchema,\n  componentParamsRaw: Partial<Record<string, string | boolean>>\n): ComponentParamsProperty<ComponentSchema> {\n  for (const [key, value] of Object.entries(componentParamsRaw)) {\n    // Core+ returns 16 'documentN' keys, mostly with the value \"\". They can safely be deleted\n\n    // matches keys like 'document', 'document1', 'document5', 'document12' etc\n    const isDocumentKey = /^document([0-9]*)$/;\n    if (isDocumentKey.test(key) && value === '') delete componentParamsRaw[key];\n\n    // A lot of 'oneLinkNoTxN' are returned to exclude child items from translation. These keys\n    // can be removed when the value is `false`.\n\n    // matches keys like 'oneLinkNoTx', 'oneLinkNoTx1', 'oneLinkNoTx5', 'oneLinkNoTx15' etc\n    const isOneLinkExcludeFromTranslationKey = /^oneLinkNoTx([0-9]*)$/;\n\n    if (isOneLinkExcludeFromTranslationKey.test(key) && value === false) {\n      delete componentParamsRaw[key];\n    }\n  }\n\n  const universalParams = sanitizeUniversalParams(componentParamsRaw);\n\n  const componentSpecificParams =\n    'componentParams' in componentSchema\n      ? Object.fromEntries(\n          Object.entries(componentSchema.componentParams).map(([key, parser]) => [\n            key,\n            parser(componentParamsRaw[key]),\n          ])\n        )\n      : {};\n\n  const supportedEffects: Record<string, boolean> = {};\n  for (const effect of effectsList) {\n    supportedEffects[effect] = effect in componentSpecificParams;\n  }\n\n  const hasComponentSpecificParams =\n    Object.keys(stripUndefineds(componentSpecificParams)).length > 0;\n  const hasUniversalParams = Object.keys(stripUndefineds(universalParams)).length > 0;\n  const shouldIncludeSupportedEffects = hasComponentSpecificParams && hasUniversalParams;\n\n  const componentSpecificParamsWithSupported = shouldIncludeSupportedEffects\n    ? { ...componentSpecificParams, supportedEffects }\n    : componentSpecificParams;\n\n  return {\n    ...stripUndefineds({\n      ...universalParams,\n      ...componentSpecificParamsWithSupported,\n    } as ComponentParamsProperty<ComponentSchema>),\n  };\n}\n","/**\ntype asserts that the provided value is an object with a property, but makes no guarantee on\nthe property's type\n*/\nexport function hasProp<Prop extends string>(x: unknown, prop: Prop): x is Record<Prop, unknown> {\n  return !!(x && typeof x === 'object' && prop in x);\n}\n\n/**\nGets a property from an unknown value.\nIf the value is an object, a string prop will return the property with that name\nIf the value is an array, an integer prop will return the property at that index\nIf the value is not an object that contains the specified prop, will return null\n*/\nexport function getProp(x: unknown, prop: string | number): unknown {\n  if (typeof prop === 'string') {\n    if (hasProp(x, prop)) {\n      return x[prop];\n    }\n  } else {\n    if (x && Array.isArray(x)) {\n      return x[prop];\n    }\n  }\n\n  return null;\n}\n\n/**\nRecursivly traverses a value, returning the value at that path, if it exists\n*/\nexport function getPath(x: unknown, path: (string | number)[]): unknown {\n  let acc = x;\n  for (const prop of path) {\n    acc = getProp(acc, prop);\n  }\n  return acc;\n}\n","import type {\n  AwardData,\n  BrandData,\n  BrandNavigationListData,\n  EditorialData,\n  EventData,\n  PolicyData,\n  PlaceData,\n  MessageData,\n  PartnerData,\n  StoryData,\n  // FaqData,\n  NavigationListData,\n  BrComponent,\n  FaqData,\n} from './adapters/types';\nimport type { OptionalUndefineds, Reify, UnionMapping, ValueOf } from './typeHelpers';\nimport { makeParamValidator } from './mappingEngine/parseComponentParams';\nimport {\n  isBoolean,\n  isString,\n  isTheme,\n  isAlignment,\n  isBackgroundIllustration,\n  isPosition,\n  isIllustrationBlock,\n  isTextOverlay,\n  isFullWidthMediaDisplay,\n  isMediaRatio,\n  isHeaderSvg,\n  isOrientation,\n  isImageDisplay,\n  isTabDisplay,\n  isEditorialDisplay,\n  isGridColumn,\n  isCmsAspectRatio,\n} from './mappingEngine/validators';\nimport { getPath } from './utils/unknown-object-helpers';\n\nexport const mappingSchema = {\n  '3-6-9 Grid': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['threeSixNineGrid', 'threeSixNineExpansionPanel'],\n    assets: ['1x1', '3x2'],\n    maintainUnsegmentedCount: true,\n    componentParams: {\n      animation: makeParamValidator(isBoolean, false),\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      display: makeParamValidator(isString, ''),\n      listTextAlign: makeParamValidator(isPosition, 'left' as const),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Story', 'Event', 'Place', 'Message'],\n  },\n\n  '4X Grid': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['fourXGrid', 'fourXExpansionPanel'],\n    assets: ['3x4', '16x9'],\n    maintainUnsegmentedCount: true,\n    componentParams: {\n      animation: makeParamValidator(isBoolean, false),\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      display: makeParamValidator(isString, ''),\n      listTextAlign: makeParamValidator(isPosition, 'left' as const),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Story', 'Event', 'Place', 'Message'],\n  },\n\n  'Brand Showcase': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Brand'],\n  },\n\n  Accordion: {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Faq', 'Policy', 'Story'],\n  },\n\n  'Brand Video': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Brand', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  BrandAlerts: {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n  },\n\n  Carousel: {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['brandCarousel'],\n    // New aspect ratio image format - \"asset\" matches the name in the CMS\n    assets: ['1x1', '3x2', '21x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      noMargin: makeParamValidator(isBoolean, false),\n      text: makeParamValidator(isTextOverlay, false),\n      orientation: makeParamValidator(isPosition, 'left' as const),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Story', 'Event', 'Brand', 'Place', 'Partner'],\n  },\n\n  Collage: {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['collage', 'threeSixNineGrid'],\n    assets: ['1x1', '3x2', '16x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      animation: makeParamValidator(isBoolean, false),\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      imageDisplay: makeParamValidator(isAlignment, 'alternate' as const),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Story', 'Partner'],\n  },\n\n  'Dynamic Grid': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: [\n      'threeSixNineExpansionPanel',\n      'fourXGrid',\n      'fourXExpansionPanel',\n      'threeSixNineGrid',\n      'collage',\n      'brandCarousel',\n      'halfAndHalf',\n    ],\n    assets: ['1x1', '3x2', '3x4', '16x9', '21x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      animation: makeParamValidator(isBoolean, false),\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      imageDisplay: makeParamValidator(isAlignment, 'alternate' as const),\n      display: makeParamValidator(isString, ''),\n      listTextAlign: makeParamValidator(isPosition, 'left' as const),\n      gridColumns: makeParamValidator(isGridColumn, 'auto' as const),\n      aspectRatioDesktop: makeParamValidator(isCmsAspectRatio, '' as const),\n      aspectRatioTablet: makeParamValidator(isCmsAspectRatio, '' as const),\n      aspectRatioMobile: makeParamValidator(isCmsAspectRatio, '' as const),\n    },\n    cmsDocumentTypes: ['Story', 'Partner'],\n  },\n\n  Editorial: {\n    mappingKind: 'DataDocument',\n    isEditable: true,\n    namedImages: ['collage', 'tabs'],\n    assets: ['1x1', '3x2'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      display: makeParamValidator(isEditorialDisplay, 'default' as const),\n      // Editorial component expects a default value\n      theme: makeParamValidator(isTheme, '' as const),\n      imageDisplay: makeParamValidator(isAlignment, 'none'),\n    },\n    cmsDocumentTypes: ['Editorial'],\n  },\n\n  Experimentation: {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['halfAndHalf', 'fourXExpansionPanel'],\n    assets: ['3x2', '18x5', '16x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      experienceId: makeParamValidator(isString, ''),\n      experienceData: makeParamValidator(isString, ''),\n    },\n    cmsDocumentTypes: ['Story'],\n  },\n\n  Footer: {\n    mappingKind: 'NavigationListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: ['NavigationList'],\n  },\n\n  'Film Strip': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['halfAndHalf', 'fourXExpansionPanel'],\n    assets: ['3x2', '18x5', '16x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Full Width Image': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['fullWidth'],\n    assets: ['3x2', '18x5'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  Gallery: {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['halfAndHalf', 'fourXExpansionPanel'],\n    assets: ['1x1', '3x2', '21x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Full-Width Media and Copy': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['fullWidth'],\n    assets: ['1x1', '16x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      display: makeParamValidator(isFullWidthMediaDisplay, 'static'),\n      theme: makeParamValidator(isTheme, '' as const),\n      textAlign: makeParamValidator(isPosition, ''),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Full-Width Media and Copy Overlay': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['fullWidth'],\n    assets: ['1x1', '16x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      display: makeParamValidator(isFullWidthMediaDisplay, 'static'),\n      theme: makeParamValidator(isTheme, '' as const),\n      textAlign: makeParamValidator(isPosition, ''),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Half & Half': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['halfAndHalf'],\n    assets: ['3x2'],\n    maintainUnsegmentedCount: true,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      display: makeParamValidator(isImageDisplay, 'static'),\n      imageDisplay: makeParamValidator(isString, ''),\n      listTextAlign: makeParamValidator(isPosition, 'left' as const),\n      noMargin: makeParamValidator(isBoolean, false),\n      mediaRatio: makeParamValidator(isMediaRatio, '50-50' as const),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Event', 'Message', 'Partner', 'Story', 'Place'],\n  },\n\n  Header: {\n    mappingKind: 'NavigationListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: ['NavigationList', 'BrandNavigationList'],\n  },\n\n  'Honors Multicolumn': {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n  },\n\n  'Honors Points Toolbar': {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n  },\n\n  'Honors Rotating Tiles': {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n  },\n\n  'Honors Tabbed Icons': {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n  },\n\n  'Honors Tier Tracker': {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n  },\n\n  'Illustration Block': {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n    componentParams: {\n      illustration: makeParamValidator(isIllustrationBlock, 'none' as const),\n    },\n  },\n\n  'Image Headliner': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['imageHeadliner'],\n    assets: ['3x2'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Brand', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Masthead Image': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['fullWidth'],\n    assets: ['3x2', '18x5', '16x9'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      animation: makeParamValidator(isBoolean, false),\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      display: makeParamValidator(isImageDisplay, 'static'),\n      horizontalLine: makeParamValidator(isBoolean, false),\n      scrollingAnimation: makeParamValidator(isBoolean, false),\n      textboxPosition: makeParamValidator(isString, ''),\n      textAlign: makeParamValidator(isPosition, 'center' as const),\n      text: makeParamValidator(isTextOverlay, false),\n      orientation: makeParamValidator(isPosition, 'left' as const),\n    },\n    cmsDocumentTypes: ['Award', 'Brand', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Offset Grid': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['halfAndHalf', 'fourXExpansionPanel'],\n    assets: ['2x1'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Brand', 'Editorial', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Patchwork Grid': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['collage', 'halfAndHalf', 'fourXExpansionPanel'],\n    assets: ['1x1', '2x1'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Brand', 'Editorial', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Search Widget': {\n    mappingKind: 'Unmapped',\n    isEditable: false,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    cmsDocumentTypes: [],\n    componentParams: {\n      aaaRate: makeParamValidator(isBoolean, false),\n      travelAgentRate: makeParamValidator(isBoolean, false),\n      governmentOrMilitaryRate: makeParamValidator(isBoolean, false),\n      seniorRate: makeParamValidator(isBoolean, false),\n      redeemPts: makeParamValidator(isBoolean, false),\n      aarpRate: makeParamValidator(isBoolean, false),\n      deeplinkParameter1: makeParamValidator(isString, ''),\n      deeplinkParameter2: makeParamValidator(isString, ''),\n      deeplinkParameter3: makeParamValidator(isString, ''),\n      deeplinkParameterValue1: makeParamValidator(isString, ''),\n      deeplinkParameterValue2: makeParamValidator(isString, ''),\n      deeplinkParameterValue3: makeParamValidator(isString, ''),\n      displayOption: makeParamValidator(isString, ''),\n    },\n  },\n\n  'Tabbed Section': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: ['tabs'],\n    assets: ['3x2'],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      tabDisplay: makeParamValidator(isTabDisplay, 'text'),\n      tabbedSectionDisplay: makeParamValidator(isOrientation, 'horizontal' as const),\n      listTextAlign: makeParamValidator(isPosition, 'left' as const),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Brand', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Text Component': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      animation: makeParamValidator(isBoolean, false),\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      borderTrim: makeParamValidator(isBoolean, false),\n      textAlign: makeParamValidator(isString, ''),\n      curvedHeader: makeParamValidator(isBoolean, false),\n      headerSvg: makeParamValidator(isHeaderSvg, 'none' as const),\n    },\n    cmsDocumentTypes: ['Policy', 'Story', 'Faq'],\n  },\n\n  'Text Highlight': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n      oneLinkNoTx1: makeParamValidator(isBoolean, false),\n      oneLinkNoTx2: makeParamValidator(isBoolean, false),\n      oneLinkNoTx3: makeParamValidator(isBoolean, false),\n      oneLinkNoTx4: makeParamValidator(isBoolean, false),\n      oneLinkNoTx5: makeParamValidator(isBoolean, false),\n      oneLinkNoTx6: makeParamValidator(isBoolean, false),\n      oneLinkNoTx7: makeParamValidator(isBoolean, false),\n      oneLinkNoTx8: makeParamValidator(isBoolean, false),\n      oneLinkNoTx9: makeParamValidator(isBoolean, false),\n      oneLinkNoTx10: makeParamValidator(isBoolean, false),\n      oneLinkNoTx11: makeParamValidator(isBoolean, false),\n      oneLinkNoTx12: makeParamValidator(isBoolean, false),\n      oneLinkNoTx13: makeParamValidator(isBoolean, false),\n      oneLinkNoTx14: makeParamValidator(isBoolean, false),\n      oneLinkNoTx15: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Event', 'Partner', 'Place', 'Story'],\n  },\n\n  'Video Poster': {\n    mappingKind: 'ListDocument',\n    isEditable: true,\n    namedImages: [],\n    assets: [],\n    maintainUnsegmentedCount: false,\n    componentParams: {\n      backgroundIllustration: makeParamValidator(isBackgroundIllustration, 'none' as const),\n      backgroundParallax: makeParamValidator(isBoolean, false),\n    },\n    cmsDocumentTypes: ['Award', 'Brand', 'Event', 'Partner', 'Place', 'Story'],\n  },\n} as const;\n\nexport type MappingSchema = typeof mappingSchema;\nexport type MappedComponentName = keyof MappingSchema;\nexport type MappedComponent = ValueOf<MappingSchema>;\n\nexport function isMappedComponentName(x: string): x is MappedComponentName {\n  return Object.keys(mappingSchema).includes(x);\n}\nexport function getBrComponentName(componentBr: BrComponent): string {\n  const name = getPath(componentBr, ['model', 'label']);\n  return typeof name === 'string' ? name : '';\n}\n\nexport type ImageVariant = MappedComponent['namedImages'][number];\nexport type MappingKind = MappedComponent['mappingKind'];\n\nexport type CmsDocumentType =\n  | MappedComponent['cmsDocumentTypes'][number]\n  | 'ListDocument'\n  | 'NavigationList'\n  | 'BrandNavigationList';\n\nexport type CmsNamedDataTypes = {\n  Award: AwardData;\n  Brand: BrandData;\n  BrandNavigationList: BrandNavigationListData;\n  Editorial: EditorialData;\n  Event: EventData;\n  Message: MessageData;\n  Partner: PartnerData;\n  Place: PlaceData;\n  Policy: PolicyData;\n  Story: StoryData;\n  Faq: FaqData;\n  NavigationList: NavigationListData;\n};\n\nexport type CmsDataTypesUnion = CmsNamedDataTypes[MappedComponent['cmsDocumentTypes'][number]] & {\n  ref: { $ref: string };\n};\nexport type CmsDataTypesIntersection = Reify<OptionalUndefineds<UnionMapping<CmsDataTypesUnion>>>;\nexport type CmsUnknownComponentParams = Record<string, unknown>;\n","import type {\n  ImagePointer,\n  ImageData,\n  ImageWithVariants,\n  CmsImageVariantScreenSize,\n  ImageVariantNames,\n  ImageCompound,\n  BrComponent,\n  BrPage,\n  BrReference,\n  BaseData,\n  Models,\n  AssetVariants,\n  Asset,\n  AssetVariantNames,\n} from './types';\nimport type { BrandImageVariantSize } from '@dx-ui/gql-types';\nimport type { CmsDocumentType } from '../schema';\n\nexport const getFromPageByRef = <T>(\n  ref: string | BrReference | null,\n  page: BrPage | null\n): T | null => {\n  if (ref === null) {\n    return null;\n  }\n  if (page === null) {\n    return null;\n  }\n\n  const content = page.getContent(ref);\n\n  if (!content) {\n    return null;\n  }\n\n  const data = content.getData() as T;\n\n  return {\n    ...data,\n    ref,\n  };\n};\n\ninterface ImageVariant {\n  _id: string;\n  __typename: string;\n  url: string;\n  size: BrandImageVariantSize;\n}\n\nfunction mapVariantScreenSizeToBrandImageSize(\n  name: CmsImageVariantScreenSize | null\n): BrandImageVariantSize {\n  switch (name) {\n    case 'dxcms:mobile':\n      return 'xs';\n    case 'dxcms:tablet':\n      return 'sm';\n    case 'dxcms:desktop':\n      return 'md';\n    default:\n      return 'md';\n  }\n}\n\nexport const getImageWithVariantsFromPage = (\n  image: ImagePointer,\n  variant: ImageVariantNames,\n  page?: BrPage\n): ImageWithVariants | null => {\n  if (!image) {\n    return null;\n  }\n\n  const content = getFromPageByRef<ImageData | null>(image.imageRef ?? null, page ?? null);\n\n  if (!content) {\n    return null;\n  }\n\n  const contentVariants = content?.image?.variants?.[variant];\n\n  if (!contentVariants) {\n    return null;\n  }\n\n  const variants = contentVariants\n    .map((img) => {\n      const _id = img.id;\n\n      if (!_id) {\n        return null;\n      }\n\n      return {\n        _id,\n        url: img.cdnLink,\n        size: mapVariantScreenSizeToBrandImageSize(img.name ?? null),\n        __typename: 'BrandImageVariant',\n      };\n    })\n    .filter(Boolean) as ImageVariant[];\n\n  if (variants.length === 0) {\n    return null;\n  }\n\n  const firstVariant = variants[0];\n\n  if (!firstVariant) {\n    return null;\n  }\n\n  const _id = firstVariant._id;\n\n  return {\n    _id, // GridThreeSixNine uses id of first variant\n    altText: content.altText ?? '',\n    variants,\n    __typename: 'BrandImage',\n  };\n};\n\nexport const makeGetImageForPage =\n  (page: BrPage) =>\n  (image: ImagePointer, variant: ImageVariantNames): ImageWithVariants | null =>\n    getImageWithVariantsFromPage(image, variant, page);\n\nexport const getImageCompound = (\n  image: ImagePointer,\n  variant: ImageVariantNames,\n  page?: BrPage\n): ImageCompound | null => {\n  if (!image?.imageRef) {\n    return null;\n  }\n\n  const content = getFromPageByRef<ImageData | null>(image.imageRef, page ?? null);\n\n  if (!content) {\n    return null;\n  }\n\n  const compoundedImage = getImageWithVariantsFromPage(image, variant, page);\n\n  if (compoundedImage === null) {\n    return null;\n  }\n\n  return {\n    _id: content.id,\n    image: compoundedImage,\n    expansionPanelImage: null,\n    caption: image.caption ?? '',\n    captionLink: image.captionLink ?? '',\n    campaignId: image.campaignId ?? undefined,\n  };\n};\n\nexport const getAssetImage = (\n  image: ImagePointer,\n  page: BrPage,\n  variantsSizes: readonly AssetVariantNames[]\n) => {\n  const ref = image?.assetRef || image?.imageRef;\n\n  if (!ref) {\n    return null;\n  }\n\n  const content = getFromPageByRef<ImageData | null>(ref, page);\n\n  if (!content || !content.image?.variants) {\n    return null;\n  }\n\n  // Only include required variants for component\n  const variants: Record<keyof AssetVariants, Asset> = Object.entries(\n    content.image.variants\n  ).reduce((variants, [key, images]) => {\n    const size = key as AssetVariantNames;\n\n    if (!variantsSizes.includes(size) || !images.length) {\n      return variants;\n    }\n\n    // Asset type images only ever have 1 item so drop the array\n    variants[size] = images[0];\n\n    return variants;\n  }, {} as Record<keyof AssetVariants, Asset>);\n\n  if (!Object.keys(variants).length) {\n    return null;\n  }\n\n  return {\n    variants,\n    id: content.id,\n    altText: content.altText ?? '',\n    caption: image.caption ?? '',\n    captionLink: image.captionLink ?? '',\n    campaignId: image.campaignId,\n  };\n};\n\nexport function getDocumentOfTypeFromPageAndComponent<T extends BaseData>(\n  documentTypes: CmsDocumentType[] | null,\n  component: BrComponent,\n  page: BrPage\n): T[] | null {\n  const models = component.getModels();\n\n  if (documentTypes?.length) {\n    const documentTypesWithPrefix = documentTypes.map((documentType) => `dxcms:${documentType}`);\n    let data: T | null = null;\n\n    //This is a slightly weird way of selecting that will return the *LAST*\n    //matching element found. Once our e2e tests are more stable, we should review\n    //if this is actually useful behaviour, or if we can just use a map here\n    //and return the whole array\n\n    for (const document of Object.values(models)) {\n      if (document && document?.$ref) {\n        const docData = page.getContent(document)?.getData();\n\n        if (documentTypesWithPrefix.includes(docData?.contentType)) {\n          data = docData as unknown as T;\n        }\n      }\n    }\n\n    if (data) {\n      return [data];\n    } else {\n      return null;\n    }\n  } else {\n    if (models.document) {\n      return Object.values(models)\n        .map((document) => {\n          if (document && document?.$ref) {\n            const docData = page.getContent(document)?.getData();\n\n            return docData;\n          } else {\n            return null;\n          }\n        })\n        .filter(Boolean) as unknown as T[];\n    }\n  }\n\n  return null;\n}\n\n/**\n * Convert a document key to an integer so it can be sorted properly\n * @param key: document key e.g. \"document\" | \"document1\" | \"document2\"\n */\nconst convertDocumentKeyToInt = (key: string) => {\n  // Remove \"document\" from the key so we can parse the number\n  const value = key.replace('document', '0');\n  return parseInt(value, 10);\n};\n\nexport const modelsToRefs = (models: Models) => {\n  return Object.keys(models)\n    .sort((a, b) => (convertDocumentKeyToInt(a) < convertDocumentKeyToInt(b) ? -1 : 1))\n    .map((modelKey) => models[modelKey]);\n};\n\n/**\n * Map document references to the document number for inline lists\n */\nexport const getDocumentKeyNumbersMap = (models: Models) => {\n  const documentNumbers = Object.keys(models).reduce((keyNumbers, key) => {\n    const $ref = models[key]?.$ref;\n\n    if (!$ref) {\n      return keyNumbers;\n    }\n\n    let documentNumber = convertDocumentKeyToInt(key);\n\n    // \"document\" will be converted into 0, so we need to reassign it to 1\n    if (documentNumber === 0) {\n      documentNumber = 1;\n    }\n\n    return {\n      ...keyNumbers,\n      [$ref]: documentNumber,\n    };\n  }, {} as Record<string, number>);\n\n  return new Map(Object.entries(documentNumbers));\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\ninterface MakePipe {\n  <A, B, C, D>(f1: (data: A) => B, f2: (data: B) => C, f3: (data: C) => D): (value: A) => D;\n\n  <A, B, C, D, E>(f1: (data: A) => B, f2: (data: B) => C, f3: (data: C) => D, f4: (data: D) => E): (\n    value: A\n  ) => E;\n\n  <A, B, C, D, E, F>(\n    f1: (data: A) => B,\n    f2: (data: B) => C,\n    f3: (data: C) => D,\n    f4: (data: D) => E,\n    f5: (data: E) => F\n  ): (value: A) => F;\n\n  <A, B, C, D, E, F, G>(\n    f1: (data: A) => B,\n    f2: (data: B) => C,\n    f3: (data: C) => D,\n    f4: (data: D) => E,\n    f5: (data: E) => F,\n    f6: (data: F) => G\n  ): (value: A) => G;\n\n  <A, B, C, D, E, F, G, H>(\n    f1: (data: A) => B,\n    f2: (data: B) => C,\n    f3: (data: C) => D,\n    f4: (data: D) => E,\n    f5: (data: E) => F,\n    f6: (data: F) => G,\n    f7: (data: G) => H\n  ): (value: A) => H;\n}\n\nexport const makePipe: MakePipe =\n  (...fns: ((data: any) => any)[]) =>\n  (value: any) =>\n    fns.reduce((acc, fn) => fn(acc), value);\n\nexport function objectMap<Keys extends string | number | symbol, In, Out>(\n  obj: Record<Keys, In>,\n  fn: (before: In) => Out\n): Record<Keys, Out> {\n  return Object.fromEntries(\n    Object.entries(obj).map(([key, val]: any) => [key, fn(val)] as any)\n  ) as any;\n}\n\nexport function objectMapWithKey<Keys extends string | number | symbol, In, Out>(\n  obj: Record<Keys, In>,\n  fn: (key: Keys, before: In) => Out\n): Record<Keys, Out> {\n  return Object.fromEntries(\n    Object.entries(obj).map(([key, val]: any) => [key, fn(key, val)] as any)\n  ) as any;\n}\n\n/**\n * getServersideProps has some (insane) demand that your returned data may not contain `undefined`\n * this is the fastest way to strip those values\n */\nexport function removeUndefineds<T>(x: T): T {\n  return JSON.parse(JSON.stringify(x));\n}\n\nexport function makeWriteable<T>(x: readonly T[]): T[] {\n  return x as any;\n}\n","import type {\n  CmsDomLink,\n  OscDomLink,\n  AddCampaignCodeToUrl,\n  NavigationListData,\n  BrandNavigationListData,\n  CpmBrandNavigationItem,\n  CpmBrandNavigationList,\n  CpmNavigationList,\n} from '../adapters/types';\n\n/** Convert an <a href/> definition object from Cms structure to Osc structure */\nexport function transformLink(\n  link: CmsDomLink | null | undefined,\n  addCampaignCodeToUrl: AddCampaignCodeToUrl\n): OscDomLink | null {\n  if (!link) {\n    return null;\n  }\n\n  const translatedLink: OscDomLink = {\n    _id: '',\n    adaDescription: link.adaDescription ?? '',\n    isNewWindow: Boolean(link.isNewWindow),\n    label: link.linkLabel,\n    url: addCampaignCodeToUrl(link.linkUrl, link.campaignId),\n    campaignId: link.campaignId ?? undefined,\n  };\n\n  if (link.experimentationConfiguration) {\n    translatedLink.experimentationConfiguration = link.experimentationConfiguration;\n  }\n\n  return translatedLink;\n}\n\nexport function translateNavigationListLinks(\n  navigationItems: NavigationListData['items'] | BrandNavigationListData['items'],\n  addCampaignCodeToUrl: AddCampaignCodeToUrl\n) {\n  if (!!navigationItems && isBrandNavigationDocumentItems(navigationItems)) {\n    return {\n      items: navigationItems\n        .map((navItem) => {\n          const secondaryItems = navItem.secondaryNavItems?.[0]?.links\n            ?.map((link) => transformLink(link, addCampaignCodeToUrl))\n            .filter((link): link is OscDomLink => link !== null);\n\n          return {\n            primaryNav: transformLink(navItem.primaryNav, addCampaignCodeToUrl),\n            secondaryNavItems: secondaryItems || [],\n          };\n        })\n        .filter((item): item is CpmBrandNavigationItem => item.primaryNav !== null),\n    } as CpmBrandNavigationList;\n  }\n\n  if (!!navigationItems && isNavigationListDocumentItems(navigationItems)) {\n    return {\n      items: navigationItems\n        .filter((linkGroup): linkGroup is { links: CmsDomLink[] } =>\n          Array.isArray(linkGroup?.links)\n        )\n        .map((linkGroup) => ({\n          links: linkGroup.links\n            .map((link) => transformLink(link, addCampaignCodeToUrl))\n            .filter((link): link is OscDomLink => link !== null),\n        })),\n    } as CpmNavigationList;\n  }\n\n  return {\n    items: null,\n  };\n}\n\nfunction isNavigationListDocumentItems(items: unknown): items is NavigationListData['items'] {\n  return Array.isArray(items) && items.length > 0 && 'links' in items[0];\n}\n\nfunction isBrandNavigationDocumentItems(items: unknown): items is BrandNavigationListData['items'] {\n  return Array.isArray(items) && items.length > 0 && 'primaryNav' in items[0];\n}\n","/**\n * This file contains aspect ratio and width/height measurements for each compound image type\n * used in the schema.ts file (located next to this file).\n *\n * Take care to update this file with any new \"asset\"/\"image compound\" types that are added or\n * the editor (dx-cpm-lite) won't be able to display images correctly\n */\n\nimport type { AssetVariants } from '../adapters/types';\n\ntype CompoundImageBreakpointSize = {\n  aspectRatio: keyof AssetVariants;\n  sizes: {\n    height: number;\n    width: number;\n  };\n};\n\ntype CompoundImageBreakpointSizes = {\n  xs: CompoundImageBreakpointSize;\n  sm: CompoundImageBreakpointSize;\n  md: CompoundImageBreakpointSize;\n};\n\nexport const compoundImageBreakpointSizes: Record<string, CompoundImageBreakpointSizes> = {\n  collage: {\n    xs: {\n      aspectRatio: '1x1',\n      sizes: {\n        height: 375,\n        width: 375,\n      },\n    },\n    sm: {\n      aspectRatio: '1x1',\n      sizes: {\n        height: 768,\n        width: 768,\n      },\n    },\n    md: {\n      aspectRatio: '1x1',\n      sizes: {\n        height: 820,\n        width: 820,\n      },\n    },\n  },\n  tabs: {\n    xs: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 185,\n        width: 320,\n      },\n    },\n    sm: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 340,\n        width: 770,\n      },\n    },\n    md: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 750,\n        width: 1045,\n      },\n    },\n  },\n  threeSixNineGrid: {\n    xs: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 150,\n        width: 225,\n      },\n    },\n    sm: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 150,\n        width: 225,\n      },\n    },\n    md: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 230,\n        width: 345,\n      },\n    },\n  },\n  fourXExpansionPanel: {\n    xs: {\n      aspectRatio: '16x9',\n      sizes: {\n        height: 209,\n        width: 320,\n      },\n    },\n    sm: {\n      aspectRatio: '16x9',\n      sizes: {\n        height: 422,\n        width: 767,\n      },\n    },\n    md: {\n      aspectRatio: '16x9',\n      sizes: {\n        height: 999,\n        width: 1277,\n      },\n    },\n  },\n  halfAndHalf: {\n    xs: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 233,\n        width: 299,\n      },\n    },\n    sm: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 532,\n        width: 684,\n      },\n    },\n    md: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 610,\n        width: 784,\n      },\n    },\n  },\n  fullWidth: {\n    xs: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 205,\n        width: 320,\n      },\n    },\n    sm: {\n      aspectRatio: '18x5',\n      sizes: {\n        height: 350,\n        width: 768,\n      },\n    },\n    md: {\n      aspectRatio: '18x5',\n      sizes: {\n        height: 565,\n        width: 1920,\n      },\n    },\n  },\n  imageHeadliner: {\n    xs: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 50,\n        width: 75,\n      },\n    },\n    sm: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 65,\n        width: 98,\n      },\n    },\n    md: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 65,\n        width: 98,\n      },\n    },\n  },\n  threeSixNineExpansionPanel: {\n    xs: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 148,\n        width: 227,\n      },\n    },\n    sm: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 242,\n        width: 357,\n      },\n    },\n    md: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 374,\n        width: 547,\n      },\n    },\n  },\n\n  fourXGrid: {\n    xs: {\n      aspectRatio: '3x4',\n      sizes: {\n        height: 250,\n        width: 220,\n      },\n    },\n    sm: {\n      aspectRatio: '3x4',\n      sizes: {\n        height: 460,\n        width: 400,\n      },\n    },\n    md: {\n      aspectRatio: '3x4',\n      sizes: {\n        height: 460,\n        width: 400,\n      },\n    },\n  },\n  brandCarousel: {\n    xs: {\n      aspectRatio: '1x1',\n      sizes: {\n        height: 477,\n        width: 650,\n      },\n    },\n    sm: {\n      aspectRatio: '3x2',\n      sizes: {\n        height: 495,\n        width: 950,\n      },\n    },\n    md: {\n      aspectRatio: '21x9',\n      sizes: {\n        height: 505,\n        width: 1920,\n      },\n    },\n  },\n};\n","import type { CpmPageModel } from '../adapters/types';\n\nexport function getBrandCodeFromPage(page: CpmPageModel): string {\n  return page?.channel?.info?.props?.brandCode || 'WW';\n}\n","export function removeNullyFromArray<T>(xs: Array<T | null | undefined>): Array<T> {\n  return xs.filter((x: T | null | undefined): x is T => !!x);\n}\n","import type {\n  AssetVariantNames,\n  BrPage,\n  ImagePointer,\n  OscDomLink,\n  AddCampaignCodeToUrl,\n  ExperimentationConfiguration,\n} from '../adapters/types';\nimport type {\n  CmsDataTypesIntersection,\n  MappedComponent,\n  CmsUnknownComponentParams,\n} from '../schema';\nimport { getAssetImage, getFromPageByRef, getImageCompound } from '../adapters/getters';\nimport { objectMapWithKey } from '../helpers';\nimport { transformLink } from './transform-links';\nimport { compoundImageBreakpointSizes } from './compound-image-breakpoint-sizes';\nimport { getBrandCodeFromPage } from '../mappingEngine/getBrandCodeFromPage';\nimport { removeNullyFromArray } from '../utils/remove-nully-from-array';\nimport type { ForceAppliedType, GuardedType } from '../typeHelpers';\nimport type { UniversalComponentParams } from '../mappingEngine/types';\nimport type { isCmsAspectRatio } from '../mappingEngine/validators';\nimport { convertCmsAspectRatioToCpmAspectRatio } from '../mappingEngine/validators';\n\nexport function refAsDefaultIdEnhancer(data: CmsDataTypesIntersection): CmsDataTypesIntersection & {\n  id: string;\n  _id: null;\n} {\n  // Use ref as a fallback if item.id is undefined\n  let ref = '';\n\n  if (typeof data.ref === 'string') {\n    ref = data.ref;\n  } else if (typeof data.ref?.$ref === 'string') {\n    ref = data.ref.$ref;\n  }\n\n  // replace any \"/\" with a \"-\" because the ref is used in the html id attribute\n  ref = ref.replace(/\\//g, '-');\n\n  return {\n    ...data,\n\n    id: data.id || ref,\n    _id: null,\n  };\n}\n\nexport function renameBrandcodeEnhancer(data: CmsDataTypesIntersection): Omit<\n  CmsDataTypesIntersection,\n  'brandCode'\n> & {\n  documentBrandCode?: string;\n} {\n  // Rename the brandCode key and delete it to avoid overwriting the channel brand code\n  // on components.\n  // Components that need the brand code associated with the document can use the\n  // `documentBrandCode` key instead.\n\n  const { brandCode, ...rest } = data;\n  if (brandCode) {\n    return {\n      ...rest,\n      documentBrandCode: brandCode,\n    };\n  } else {\n    return rest;\n  }\n}\n\nexport function transformLinksEnhancer(\n  data: CmsDataTypesIntersection,\n  addCampaignCodeToUrl: AddCampaignCodeToUrl\n): Omit<CmsDataTypesIntersection, 'links' | 'link'> & {\n  links: OscDomLink[];\n  link: OscDomLink | null;\n} {\n  if ('links' in data) {\n    return {\n      ...data,\n      links: removeNullyFromArray(\n        data.links?.map((link) => transformLink(link, addCampaignCodeToUrl)) ?? []\n      ),\n      link: transformLink(data.links?.[0] ?? null, addCampaignCodeToUrl),\n    };\n  }\n\n  // Award doc types incorrectly have a link property instead of the standard links array\n  if (!('links' in data) && 'link' in data) {\n    const singleLink = transformLink(data.link ?? null, addCampaignCodeToUrl);\n\n    return {\n      ...data,\n      links: removeNullyFromArray(singleLink ? [singleLink] : []),\n      link: singleLink,\n    };\n  }\n\n  // remapping link to links as OscDomLinks\n  if (data?.subTopic) {\n    data.subTopic = data.subTopic.map((subTopic) => ({\n      ...subTopic,\n      faq: subTopic.faq?.map((faqItem) => ({\n        ...faqItem,\n        links: faqItem.link\n          ? removeNullyFromArray(\n              faqItem.link.map((link) => transformLink(link, addCampaignCodeToUrl))\n            )\n          : [],\n        link: undefined,\n      })),\n    }));\n  }\n\n  return {\n    ...data,\n    links: [],\n    link: null,\n  };\n}\n\nexport function addDefaultCmsComponentFieldsEnhancer(\n  data: CmsDataTypesIntersection\n): CmsDataTypesIntersection & {\n  headline: string;\n  shortDescription: string;\n  caption: string;\n  label: string;\n  segmentIds: string[];\n} {\n  return {\n    ...data,\n    caption: '',\n    headline: 'headline' in data ? data.headline ?? '' : '',\n    label: 'name' in data ? data.name ?? '' : '',\n    segmentIds: data.segmentIds ?? [],\n    shortDescription: 'shortDescription' in data ? data.shortDescription ?? '' : '',\n  };\n}\n\nexport type ImageAsset = {\n  id: string;\n  url: string;\n};\n\nexport type StructuredAsset = {\n  id: string;\n  brandCodes: string[];\n  altText: string;\n  caption: string;\n  captionLink: string;\n  campaignId?: string;\n  aspectRatios: Partial<Record<AssetVariantNames, ImageAsset>>;\n};\n\nfunction generateStructuredAssetFromBloomreachAsset(\n  imagePointer: ImagePointer,\n  page: BrPage,\n  componentSchema: MappedComponent\n): StructuredAsset | null {\n  const { brandCodes = [] } = imagePointer;\n  const resolvedAsset = getAssetImage(\n    imagePointer,\n    page,\n    componentSchema.assets as readonly AssetVariantNames[]\n  );\n\n  if (resolvedAsset === null) {\n    return null;\n  }\n\n  const { variants, ...bloomreachAsset } = resolvedAsset;\n\n  const aspectRatios = objectMapWithKey(variants, (aspectRatio, assetAtRatio) => {\n    const url = new URL(assetAtRatio.cdnLink);\n\n    const [aspectWidth, aspectHeight] = aspectRatio.split('x').map(Number);\n    if (!(aspectWidth && aspectHeight)) {\n      throw new Error(`invalid aspect ratio: \"${aspectRatio}\"`);\n    }\n    const aspectRatioAsFloat = aspectWidth / aspectHeight;\n\n    const largestPossibleDimension = componentSchema.namedImages\n      .flatMap((namedImage) => {\n        const namedImageBreakpointSizes = compoundImageBreakpointSizes[namedImage];\n        if (!namedImageBreakpointSizes) {\n          return [];\n        }\n        return Object.values(namedImageBreakpointSizes);\n      })\n      .filter(\n        (compoundImageBreakpointSize) => compoundImageBreakpointSize.aspectRatio === aspectRatio\n      )\n      .map(({ sizes }) => sizes)\n      .reduce((acc, val) => Math.max(acc, val.height, val.width), 0);\n\n    const isLandscape = aspectRatioAsFloat > 1.0;\n\n    const height = isLandscape\n      ? largestPossibleDimension / aspectRatioAsFloat\n      : largestPossibleDimension;\n    const width = isLandscape\n      ? largestPossibleDimension\n      : largestPossibleDimension * aspectRatioAsFloat;\n\n    if (!(url.searchParams.has('rw') && url.searchParams.has('rh'))) {\n      url.searchParams.set('rw', Math.ceil(width) + '');\n      url.searchParams.set('rh', Math.ceil(height) + '');\n    }\n\n    return {\n      id: assetAtRatio.id,\n      url: url.toString(),\n    };\n  });\n\n  // Image compound alt text field should override alt text defined on the image\n  if (imagePointer.altText) {\n    bloomreachAsset.altText = imagePointer.altText;\n  }\n\n  return {\n    ...bloomreachAsset,\n    campaignId: bloomreachAsset.campaignId ?? undefined,\n    aspectRatios,\n    brandCodes,\n  };\n}\n\n/**\n Old Style images can have many possible \"variants\", each of which contain separate metadata\n instances (eg: id, caption) and URLs pointing to images of different aspect ratios.\n\n We traverse along every variant we find, selecting the metadata instances and keeping only a single copy for each prop\n We also keep only a single image URL for each aspect ratio.\n */\nfunction generateStructuredAssetFromOldStyleImage(\n  imagePointer: ImagePointer,\n  page: BrPage,\n  componentSchema: MappedComponent\n): StructuredAsset | null {\n  const { brandCodes = [] } = imagePointer;\n\n  const oldStyleImages = componentSchema.namedImages.map((imageName) => ({\n    imageName,\n    imageCompound: getImageCompound(imagePointer, imageName, page),\n  }));\n\n  if (oldStyleImages.length === 0) {\n    return null;\n  }\n\n  let id = '';\n  let caption = '';\n  let captionLink = '';\n  let altText = '';\n  const aspectRatios: Partial<Record<AssetVariantNames, ImageAsset>> = {};\n\n  for (const { imageName, imageCompound } of oldStyleImages) {\n    if (imageCompound === null) {\n      continue;\n    }\n\n    id ||= imageCompound._id;\n    caption ||= imageCompound.caption;\n    captionLink ||= imageCompound.captionLink;\n    altText ||= imageCompound.image.altText;\n\n    for (const size of ['xs', 'sm', 'md'] as const) {\n      const variant = imageCompound.image?.variants.find((variant) => variant.size === size);\n\n      if (variant) {\n        const { url, _id } = variant;\n        const { aspectRatio } = compoundImageBreakpointSizes[imageName]?.[size] ?? {};\n\n        if (aspectRatio) {\n          aspectRatios[aspectRatio] = { url, id: _id };\n        }\n      }\n    }\n  }\n\n  // Image compound alt text field should override alt text defined on the image\n  if (imagePointer.altText) {\n    altText = imagePointer.altText;\n  }\n\n  return {\n    id,\n    caption,\n    captionLink,\n    altText,\n    aspectRatios,\n    brandCodes,\n  };\n}\n\nexport function makeAddAssetsEnhancer(\n  componentSchema: MappedComponent,\n  page: BrPage,\n  addCampaignCodeToUrl: AddCampaignCodeToUrl\n) {\n  return function addAssetsEnhancer(data: CmsDataTypesIntersection) {\n    // Bail out because image data doesn't exist or component has no aspect ratio images (assets) defined\n    if (\n      (!('images' in data) && !('defaultPropertyImages' in data)) ||\n      !componentSchema.assets.length\n    ) {\n      const cpmAssets: StructuredAsset[] = [];\n      return { ...data, cpmAssets };\n    }\n\n    const cpmAssets: StructuredAsset[] = [];\n\n    /**\n     `data.images` contains an array of references to Bloomreach Image documents\n     Each of these Image documents can contain both \"images\" and \"assets\".\n\n     Certain document types (eg: brands) use data.defaultPropertyImages instead of data.images.\n\n     \"images\" are the old way of specifying images, they contain various \"variants\"\n     that specify What They're Used For (eg: \"collage\", \"fourXExpansionPanel\").\n\n     \"assets\" are the new way of specifying image, they contain various \"aspect ratios\"\n     that specify the cropping of an image asset (eg: \"1x1\", \"3x2\").\n\n     We prefer to use \"assets\", but will fall back to using \"images\". In both cases we do\n     some pre-processing to ensure the data is the same shape and required no further logic to use.\n\n     A document can contain multiple images, which will be used in difference places in the UI.\n     Eg: Collage can contain several different images per component\n     */\n    for (const imageRef of data?.images ?? data?.defaultPropertyImages ?? []) {\n      const structuredAsset =\n        generateStructuredAssetFromBloomreachAsset(imageRef, page, componentSchema) ??\n        generateStructuredAssetFromOldStyleImage(imageRef, page, componentSchema);\n\n      if (structuredAsset) {\n        if (structuredAsset.captionLink && structuredAsset.campaignId) {\n          structuredAsset.captionLink = addCampaignCodeToUrl(\n            structuredAsset.captionLink,\n            structuredAsset.campaignId\n          );\n        }\n\n        cpmAssets.push(structuredAsset);\n      }\n    }\n\n    // if one of the images has a brandCode assigned that matches the current page brandCode\n    // it should come first\n    const pageBrandCode = getBrandCodeFromPage(page.toJSON());\n    cpmAssets.sort((l, r) => {\n      const lMatchesBrandCode = l.brandCodes.includes(pageBrandCode) ? 1 : 0;\n      const rMatchesBrandCode = r.brandCodes.includes(pageBrandCode) ? 1 : 0;\n      return rMatchesBrandCode - lMatchesBrandCode;\n    });\n\n    return {\n      ...data,\n      cpmAssets,\n    };\n  };\n}\n\ntype DocumentMeta = {\n  $ref: string;\n  cbId: string;\n};\n\nexport type RelatedDocument = {\n  _meta: DocumentMeta;\n  headline?: string;\n  shortDescription?: string;\n  longDescription?: string;\n  link: OscDomLink | null;\n  links: OscDomLink[];\n  cpmAssets: StructuredAsset[];\n  segmentIds: string[];\n  experimentationConfiguration?: ExperimentationConfiguration;\n};\n\nexport function addRelatedDocsEnhancer(\n  data: CmsDataTypesIntersection,\n  page: BrPage,\n  addAssetsEnhancer: ReturnType<typeof makeAddAssetsEnhancer>,\n  addCampaignCodeToUrl: AddCampaignCodeToUrl\n): CmsDataTypesIntersection & {\n  cpmRelatedDocuments: (RelatedDocument | undefined)[];\n} {\n  const cpmRelatedDocuments: RelatedDocument[] = [];\n\n  if (!data.relatedDocumentsRef || !Array.isArray(data.relatedDocumentsRef)) {\n    return { ...data, cpmRelatedDocuments };\n  }\n\n  if (!data.relatedDocuments || !Array.isArray(data.relatedDocuments)) {\n    return { ...data, cpmRelatedDocuments };\n  }\n\n  // First collate the refs and couchbase ids together\n  const documentMetas = removeNullyFromArray(\n    data.relatedDocumentsRef.map((item, index) => {\n      if (!item.$ref || !data?.relatedDocuments?.[index]) {\n        return null;\n      }\n\n      const cbId = data.relatedDocuments[index];\n\n      if (!cbId) {\n        return null;\n      }\n\n      const meta: DocumentMeta = {\n        $ref: item.$ref,\n        cbId,\n      };\n\n      return meta;\n    })\n  );\n\n  // Now we can hydrate each document\n  documentMetas.forEach((_meta) => {\n    const document = getFromPageByRef<CmsDataTypesIntersection>(_meta.$ref, page);\n\n    if (!document) {\n      return;\n    }\n\n    const { cpmAssets } = addAssetsEnhancer(document);\n    const { link, links } = transformLinksEnhancer(document, addCampaignCodeToUrl);\n\n    const enhancedDoc: RelatedDocument = {\n      _meta,\n      headline: document.headline ?? undefined,\n      shortDescription: document.shortDescription ?? undefined,\n      longDescription: document.longDescription ?? undefined,\n      segmentIds: document.segmentIds ?? [],\n      experimentationConfiguration: document.experimentationConfiguration,\n      links,\n      link,\n      cpmAssets,\n    };\n\n    cpmRelatedDocuments.push(enhancedDoc);\n  });\n\n  return { ...data, cpmRelatedDocuments };\n}\n\nexport function translationCssClassesEnhancer(\n  data: CmsDataTypesIntersection,\n  componentParams?: CmsUnknownComponentParams,\n  documentNumber?: number\n): CmsDataTypesIntersection & {\n  cmsTranslationClasses?: string;\n} {\n  if (!componentParams || !documentNumber) {\n    return data;\n  }\n\n  const itemExcludedFromTranslation = componentParams[`oneLinkNoTx${documentNumber}`] === true;\n\n  if (!itemExcludedFromTranslation) {\n    return data;\n  }\n\n  return {\n    ...data,\n    cmsTranslationClasses: 'OneLinkNoTx',\n  };\n}\n\ntype BreakpointAspectRatioImages = {\n  mobile?: ImageAsset;\n  tablet?: ImageAsset;\n  desktop?: ImageAsset;\n};\n\nexport function addAspectRatioImages(\n  data: CmsDataTypesIntersection & { cpmAssets?: StructuredAsset[] },\n  componentParams: UniversalComponentParams & {\n    aspectRatioMobile?: GuardedType<typeof isCmsAspectRatio>;\n    aspectRatioTablet?: GuardedType<typeof isCmsAspectRatio>;\n    aspectRatioDesktop?: GuardedType<typeof isCmsAspectRatio>;\n  } = {}\n) {\n  const hasAspectRatiosDefined =\n    typeof componentParams.aspectRatioDesktop !== 'undefined' ||\n    typeof componentParams.aspectRatioTablet !== 'undefined' ||\n    typeof componentParams.aspectRatioMobile !== 'undefined';\n\n  if (!hasAspectRatiosDefined || !Array.isArray(data.cpmAssets) || !data.cpmAssets.length) {\n    return {\n      ...data,\n      cmsDefinedAspectRatioImages: [],\n    };\n  }\n\n  const cmsDefinedAspectRatioImages = data.cpmAssets.map(({ aspectRatios }) => {\n    const breakpoints: BreakpointAspectRatioImages = {};\n\n    if (componentParams.aspectRatioMobile) {\n      const convertedAspectRatioMobile = convertCmsAspectRatioToCpmAspectRatio(\n        componentParams.aspectRatioMobile\n      );\n      breakpoints.mobile = convertedAspectRatioMobile && aspectRatios[convertedAspectRatioMobile];\n    }\n\n    if (componentParams.aspectRatioTablet) {\n      const convertedAspectRatioTablet = convertCmsAspectRatioToCpmAspectRatio(\n        componentParams.aspectRatioTablet\n      );\n      breakpoints.tablet = convertedAspectRatioTablet && aspectRatios[convertedAspectRatioTablet];\n    }\n\n    if (componentParams.aspectRatioDesktop) {\n      const convertedAspectRatioDesktop = convertCmsAspectRatioToCpmAspectRatio(\n        componentParams.aspectRatioDesktop\n      );\n      breakpoints.desktop =\n        convertedAspectRatioDesktop && aspectRatios[convertedAspectRatioDesktop];\n    }\n\n    return breakpoints;\n  });\n\n  return {\n    ...data,\n    cmsDefinedAspectRatioImages,\n  };\n}\n\nexport type EnhancedCmsComponentDocument = ForceAppliedType<\n  Omit<CmsDataTypesIntersection, 'links' | 'link' | 'brandCode'> & {\n    id: string;\n    _id: null;\n    headline: string;\n    shortDescription: string;\n    caption: string;\n    label: string;\n    segmentIds: string[];\n    cmsTranslationClasses?: string;\n    cpmRelatedDocuments: (RelatedDocument | undefined)[];\n    cpmAssets: (StructuredAsset | undefined)[];\n    links: OscDomLink[];\n    link: OscDomLink | null;\n    cmsDefinedAspectRatioImages: BreakpointAspectRatioImages[];\n  }\n>;\n\nexport function addCampaignCodesToCaptionLinks(\n  data: CmsDataTypesIntersection,\n  addCampaignCodeToUrl: AddCampaignCodeToUrl\n) {\n  if (Array.isArray(data.videos)) {\n    data.videos = data.videos.map((video) => {\n      if (video.captionLink && video.campaignId) {\n        video.captionLink = addCampaignCodeToUrl(video.captionLink, video.campaignId);\n      }\n\n      return video;\n    });\n  }\n\n  if (Array.isArray(data.multimedia)) {\n    data.multimedia = data.multimedia.map((media) => {\n      if (media.captionLink?.linkUrl && media.captionLink.campaignId) {\n        media.captionLink.linkUrl = addCampaignCodeToUrl(\n          media.captionLink.linkUrl,\n          media.captionLink.campaignId\n        );\n      }\n\n      return media;\n    });\n  }\n\n  return data;\n}\n\n/**\n * Chains together the above enhancer functions, you must remember to update the above type if you change this enhancer composition\n */\nexport function makeCmsComponentDocumentEnhancer(\n  componentSchema: MappedComponent,\n  page: BrPage,\n  addCampaignCodeToUrl: AddCampaignCodeToUrl\n) {\n  const addAssetsEnhancer = makeAddAssetsEnhancer(componentSchema, page, addCampaignCodeToUrl);\n\n  return (\n    data: CmsDataTypesIntersection,\n    componentParams?: UniversalComponentParams,\n    documentNumber?: number\n  ): EnhancedCmsComponentDocument => {\n    const step0 = addCampaignCodesToCaptionLinks(data, addCampaignCodeToUrl);\n    const step1 = refAsDefaultIdEnhancer(step0);\n    const step2 = addDefaultCmsComponentFieldsEnhancer(step1);\n    const step3 = addAssetsEnhancer(step2);\n    const step4 = addAspectRatioImages(step3, componentParams);\n    const step5 = addRelatedDocsEnhancer(step4, page, addAssetsEnhancer, addCampaignCodeToUrl);\n    const step6 = translationCssClassesEnhancer(step5, componentParams, documentNumber);\n    const step7 = renameBrandcodeEnhancer(step6);\n    const step8 = transformLinksEnhancer(step7, addCampaignCodeToUrl);\n\n    return step8 as EnhancedCmsComponentDocument;\n  };\n}\n","import type { CpmMappedPage } from '../mappingEngine/cpmMappedPage';\nimport type { ExtractCampaignCodeTaggingValuesFn, AddCampaignCodeToUrl } from '../adapters/types';\n\nexport function createAddCampaignCodeToUrl(\n  // Name of the component that this link appears in\n  componentName: string,\n  // Mapped page data from CPM\n  mappedPage: CpmMappedPage,\n  // Analytics values provided by the CMS will be used by default. Apps can override this by passing a custom function.\n  extractCampaignCodeTaggingValues: ExtractCampaignCodeTaggingValuesFn\n): AddCampaignCodeToUrl {\n  return function addCampaignCodeToUrl(linkUrl?: string, campaignId?: string | null) {\n    try {\n      // Bail out if a URL or campaign code ID hasn't been passed\n      if (!linkUrl || !campaignId) {\n        return linkUrl || '';\n      }\n\n      const url = new URL(linkUrl);\n      checkValidQueryString(url);\n\n      const params = url.searchParams;\n\n      if (params.has('cid')) {\n        return linkUrl;\n      }\n\n      const { brandCode } = mappedPage;\n      const { adobePageType, cidPostfix } = extractCampaignCodeTaggingValues(mappedPage);\n      const campaignCodeSegments = [\n        'OH',\n        brandCode,\n        campaignId,\n        'MULTIPR',\n        componentName,\n        adobePageType,\n      ];\n\n      if (cidPostfix) {\n        campaignCodeSegments.push(cidPostfix);\n      }\n\n      const cid = campaignCodeSegments.join(',');\n      params.set('cid', cid);\n\n      // We need to keep the CID param human-readable for content/analytics\n      // teams\n      const [href, search] = url.href.split('?');\n      if (!(href && search)) {\n        throw new Error('missing query string');\n      }\n\n      return `${href}?${buildSearchStringForAnalyticsCampaignId(search)}`;\n    } catch {\n      return linkUrl || '';\n    }\n  };\n}\n\n/**\n * Use the analytics values set by the CMS. Consumers are able to override this by passing in their own function.\n */\nexport function getTaggingValuesFromCpmAnalytics(mappedPage: CpmMappedPage) {\n  const postfix: string[] = [];\n  const { analyticsTagging } = mappedPage;\n\n  if (analyticsTagging.primaryCategory) {\n    postfix.push(capitalizeHyphen(analyticsTagging.primaryCategory));\n  }\n\n  if (analyticsTagging.pageDetailOne) {\n    // Campaign code postfix only includes two \"page detail\" levels.\n    postfix.push(capitalizeHyphen(analyticsTagging.pageDetailOne));\n\n    // We only want to include the second page detail if the first exists\n    if (analyticsTagging.pageDetailTwo) {\n      postfix.push(capitalizeHyphen(analyticsTagging.pageDetailTwo));\n    }\n  }\n\n  return {\n    adobePageType: analyticsTagging.adobePageType,\n    cidPostfix: postfix.join('-'),\n  };\n}\n\nfunction capitalizeHyphen(input?: string) {\n  if (!input) {\n    return '';\n  }\n\n  return input.replace(/(^|[\\s-])\\S/g, (match) => match.toUpperCase());\n}\n\n/**\n * Builds a search string that leaves the `cid` param decoded to aid readability\n * Note: search is a string instead of a URLSearchParams because we don't want\n * to modify the encoding of any other parameter.\n */\nexport function buildSearchStringForAnalyticsCampaignId(search: string) {\n  return search\n    .split('&')\n    .map((keyValue) => {\n      const [key, value] = keyValue.split('=');\n\n      if (key === 'cid' && value) {\n        return `cid=${decodeURIComponent(value)}`;\n      }\n\n      return keyValue;\n    })\n    .join('&');\n}\n\n/**\n * Check if the URL has a valid query string with a single ?\n * replace subsequent ? with &\n */\nexport function checkValidQueryString(url: URL) {\n  const questionMarkCount = (url.href.match(/\\?/g) || []).length;\n  if (questionMarkCount > 1) {\n    const [baseUrl, queryString] = url.href.split(/\\?(.+)/);\n    if (baseUrl && queryString) {\n      const fixedQueryString = queryString.replace(/\\?/g, '&');\n      url.href = `${baseUrl}?${fixedQueryString}`;\n    }\n  }\n}\n","import type { ExperimentationAgentIdsSet } from '../mappingEngine/types';\n\nexport function registerExperimentItem(\n  set: ExperimentationAgentIdsSet,\n  isCpmEditor: boolean,\n  config?: { agentId?: string | null; variation?: string | null } | null\n) {\n  if (!config?.agentId || !config?.variation) {\n    return;\n  }\n\n  if (isCpmEditor) {\n    set.add(`${config.agentId}:${config.variation}`);\n  } else {\n    set.add(config.agentId);\n  }\n}\n","import type { Document } from '@bloomreach/spa-sdk';\nimport type {\n  BrandNavigationListData,\n  BrComponent,\n  BrPage,\n  CmsDomLink,\n  ExtractCampaignCodeTaggingValuesFn,\n  ListData,\n  Models,\n  NavigationListData,\n} from '../adapters/types';\nimport type {\n  CpmListData,\n  ExperimentationAgentIdsSet,\n  CpmMandatoryMappingOutputFields,\n  OutputWithMandatories,\n  CpmMappingFunction,\n  CpmMappingFunctionInput,\n} from './types';\nimport type { CmsDataTypesIntersection, MappedComponent, MappedComponentName } from '../schema';\nimport { mappingSchema } from '../schema';\nimport type { useIssues } from '../hooks/use-issues';\nimport {\n  getDocumentKeyNumbersMap,\n  getDocumentOfTypeFromPageAndComponent,\n  getFromPageByRef,\n  modelsToRefs,\n} from '../adapters/getters';\nimport { makeCmsComponentDocumentEnhancer } from '../transformers/enhancers';\nimport type { CpmMappedPage } from './cpmMappedPage';\nimport { parseComponentParams } from './parseComponentParams';\nimport { createAddCampaignCodeToUrl } from '../utils/add-campaign-id-to-url';\nimport { removeNullyFromArray } from '../utils/remove-nully-from-array';\nimport { registerExperimentItem } from '../utils/register-experiment-item';\nimport { transformLink, translateNavigationListLinks } from '../transformers/transform-links';\nimport type {\n  CpmMappedComponentDataRelaxed,\n  CpmMappingFunctionInputRelaxed,\n  CpmMappingFunctionRelaxed,\n} from './typesRelaxed';\n\nfunction handleError<T>(\n  fallback: T,\n  fn: () => T,\n  isCPMEditor: boolean,\n  errorAccumulator?: Array<Error>\n): T {\n  const isLiveMode = !isCPMEditor;\n\n  try {\n    return fn();\n  } catch (err) {\n    if (isLiveMode) {\n      return fallback;\n    } else {\n      if (errorAccumulator && err instanceof Error) {\n        errorAccumulator.push(err);\n        return fallback;\n      } else {\n        throw err;\n      }\n    }\n  }\n}\n\nfunction getItemsRefs(listData: ListData | null, componentBr: BrComponent) {\n  const models = componentBr.getModels<Models>();\n  const directRefs = modelsToRefs(models);\n  const { itemsRef } = listData ?? { itemsRef: directRefs };\n\n  return removeNullyFromArray(itemsRef);\n}\n\nfunction isItemUntranslated(item: unknown) {\n  return (\n    item &&\n    typeof item === 'object' &&\n    'cmsTranslationClasses' in item &&\n    typeof item.cmsTranslationClasses === 'string'\n  );\n}\n\nexport function applyMapData<\n  Component extends MappedComponentName,\n  Output extends CpmMandatoryMappingOutputFields\n>(\n  mapData: CpmMappingFunction<Component, Output>,\n  input: CpmMappingFunctionInput<Component>\n): OutputWithMandatories<Output> {\n  const mappedData = mapData(input);\n\n  return {\n    ...mappedData,\n    cmsTranslationClasses: input.data.cmsTranslationClasses,\n    $ref: input.data.ref?.$ref ?? '',\n    segmentIds: input.data.segmentIds,\n    experimentationConfiguration: input.data.experimentationConfiguration,\n  };\n}\n\n// CpmMandatoryMappingOutputFields\nexport function mapCpmData(\n  component: MappedComponentName,\n  mapData: CpmMappingFunctionRelaxed,\n  pageBr: BrPage,\n  componentBr: BrComponent,\n  mappedPage: CpmMappedPage,\n  { add: addIssue, clear: clearIssue }: ReturnType<typeof useIssues>,\n  extractCampaignCodeTaggingValues: ExtractCampaignCodeTaggingValuesFn,\n  isCPMEditor = false\n): CpmMappedComponentDataRelaxed {\n  const pageType: string = pageBr.getDocument<Document>()?.getData().type;\n  const componentName: string = componentBr.getName() ?? '';\n\n  const componentSchema: MappedComponent = mappingSchema[component];\n  const componentParams = parseComponentParams(\n    componentSchema,\n    componentBr.getParameters<Partial<Record<string, string | boolean>>>()\n  );\n\n  const addCampaignCodeToUrl = createAddCampaignCodeToUrl(\n    componentName,\n    mappedPage,\n    extractCampaignCodeTaggingValues\n  );\n  const enhanceData = makeCmsComponentDocumentEnhancer(\n    componentSchema,\n    pageBr,\n    addCampaignCodeToUrl\n  );\n\n  const experimentationAgentIds: ExperimentationAgentIdsSet = new Set();\n\n  registerExperimentItem(experimentationAgentIds, isCPMEditor, componentParams);\n\n  switch (componentSchema.mappingKind) {\n    case 'Unmapped': {\n      return {\n        componentParams,\n        pageType,\n        componentName,\n        mappedPage,\n        isCPMEditor,\n        experimentationAgentIds,\n        mappingKind: componentSchema.mappingKind,\n        maintainUnsegmentedCount: false,\n      } as unknown as CpmMappedComponentDataRelaxed;\n    }\n\n    case 'NavigationListDocument': {\n      const cmsData =\n        getDocumentOfTypeFromPageAndComponent<NavigationListData | BrandNavigationListData>(\n          ['NavigationList', 'BrandNavigationList'],\n          componentBr,\n          pageBr\n        )?.[0] ?? null;\n\n      return handleError<CpmMappedComponentDataRelaxed>(\n        {\n          componentParams,\n          pageType,\n          componentName,\n          navigationList: null,\n          mappedPage,\n          isCPMEditor,\n        } as unknown as CpmMappedComponentDataRelaxed,\n        () => {\n          if (cmsData === null || !cmsData.items) {\n            throw new Error('can not useCpmData when useData is null');\n          }\n\n          const cmsDocumentType = cmsData.contentType.replace('dxcms:', '');\n\n          if (!(componentSchema.cmsDocumentTypes as readonly string[]).includes(cmsDocumentType)) {\n            throw new Error(`${componentName} can not render \"${cmsDocumentType}\" documents`);\n          }\n\n          const { items } = translateNavigationListLinks(cmsData.items, addCampaignCodeToUrl);\n\n          items?.forEach((item) => {\n            if ('primaryNav' in item) {\n              registerExperimentItem(\n                experimentationAgentIds,\n                isCPMEditor,\n                item.primaryNav.experimentationConfiguration\n              );\n\n              item.secondaryNavItems.forEach((item) => {\n                registerExperimentItem(\n                  experimentationAgentIds,\n                  isCPMEditor,\n                  item.experimentationConfiguration\n                );\n              });\n            }\n\n            if ('links' in item) {\n              item.links.forEach((link) => {\n                registerExperimentItem(\n                  experimentationAgentIds,\n                  isCPMEditor,\n                  link.experimentationConfiguration\n                );\n              });\n            }\n          });\n\n          const navigationList = applyMapData(mapData, {\n            data: {\n              ...cmsData,\n              items,\n            },\n            mappedPage,\n            componentParams,\n            pageType,\n            componentName,\n            addIssue,\n            clearIssue,\n            pageBr,\n            componentBr,\n            cmsDocumentType,\n            isCPMEditor,\n            addCampaignCodeToUrl,\n          } as CpmMappingFunctionInputRelaxed);\n\n          registerExperimentItem(\n            experimentationAgentIds,\n            isCPMEditor,\n            navigationList.experimentationConfiguration\n          );\n\n          return {\n            componentParams,\n            pageType,\n            componentName,\n            navigationList,\n            mappedPage,\n            experimentationAgentIds,\n            mappingKind: componentSchema.mappingKind,\n            maintainUnsegmentedCount: componentSchema.maintainUnsegmentedCount,\n          } as unknown as CpmMappedComponentDataRelaxed;\n        },\n        isCPMEditor\n      );\n    }\n\n    case 'ListDocument': {\n      const listData =\n        getDocumentOfTypeFromPageAndComponent<ListData>(\n          ['ListDocument'],\n          componentBr,\n          pageBr\n        )?.[0] ?? null;\n\n      let cpmListData: CpmListData | null = null;\n\n      if (listData) {\n        const links = removeNullyFromArray(\n          listData.links.map((link: CmsDomLink) => transformLink(link, addCampaignCodeToUrl))\n        );\n\n        links.forEach((link) => {\n          registerExperimentItem(\n            experimentationAgentIds,\n            isCPMEditor,\n            link.experimentationConfiguration\n          );\n        });\n\n        cpmListData = {\n          ...listData,\n          links,\n        };\n      }\n\n      return handleError<CpmMappedComponentDataRelaxed>(\n        {\n          componentParams,\n          pageType,\n          componentName,\n          listData,\n          mappedPage,\n          isCPMEditor,\n        } as unknown as CpmMappedComponentDataRelaxed,\n        () => {\n          //We want to be able to run multiple mappings, and get the errors for each of them.\n          //rather than just throwing on the first error that occurs\n          const errorAccumulator: Array<Error> = [];\n          const itemRefs = getItemsRefs(listData, componentBr);\n\n          // Get document numbers for inline list docs, so we can exclude them from translation\n          const documentNumbers = getDocumentKeyNumbersMap(componentBr.getModels());\n\n          const keyedItems = itemRefs\n            .map((ref) => getFromPageByRef<CmsDataTypesIntersection>(ref, pageBr))\n            .filter((x: CmsDataTypesIntersection | null): x is CmsDataTypesIntersection => !!x)\n            .map((item, index, { length }): CpmMandatoryMappingOutputFields | null =>\n              handleError<CpmMandatoryMappingOutputFields | null>(\n                null,\n                (): CpmMandatoryMappingOutputFields => {\n                  const cmsDocumentType = item.contentType.replace('dxcms:', '');\n\n                  if (\n                    !(componentSchema.cmsDocumentTypes as readonly string[]).includes(\n                      cmsDocumentType\n                    )\n                  ) {\n                    throw new Error(\n                      `${componentName} can not render \"${cmsDocumentType}\" documents`\n                    );\n                  }\n\n                  const documentNumber = documentNumbers.get(item.ref.$ref);\n                  const data = enhanceData(item, componentParams, documentNumber);\n\n                  data.links?.forEach((link) => {\n                    registerExperimentItem(\n                      experimentationAgentIds,\n                      isCPMEditor,\n                      link.experimentationConfiguration\n                    );\n                  });\n\n                  const mappedListData = applyMapData(mapData, {\n                    data,\n                    mappedPage,\n                    componentParams,\n                    pageType,\n                    componentName,\n                    listData: cpmListData,\n                    addIssue,\n                    clearIssue,\n                    pageBr,\n                    componentBr,\n                    index,\n                    length,\n                    cmsDocumentType,\n                    isCPMEditor,\n                    addCampaignCodeToUrl,\n                    //eslint-disable-next-line @typescript-eslint/no-explicit-any\n                  } as any as CpmMappingFunctionInputRelaxed);\n\n                  registerExperimentItem(\n                    experimentationAgentIds,\n                    isCPMEditor,\n                    mappedListData.experimentationConfiguration\n                  );\n\n                  return mappedListData;\n                },\n                isCPMEditor,\n                errorAccumulator\n              )\n            )\n            .filter(\n              (x: CpmMandatoryMappingOutputFields | null): x is CpmMandatoryMappingOutputFields =>\n                !!x\n            )\n            .reduce((keyItems, item, index, items) => {\n              const isUntranslated = isItemUntranslated(item);\n\n              const key = [\n                'cpm-child-',\n                index.toString().padStart(Math.ceil(Math.log10(items.length)) + 1, '0'),\n                isUntranslated ? '-noTx' : '',\n              ].join('');\n\n              keyItems[key] = item;\n\n              return keyItems;\n            }, {} as Record<string, CpmMandatoryMappingOutputFields>);\n\n          if (errorAccumulator.length) {\n            // eslint-disable-next-line @typescript-eslint/only-throw-error\n            throw errorAccumulator;\n          }\n\n          return {\n            componentParams,\n            pageType,\n            componentName,\n            listData: cpmListData,\n            keyedItems,\n            mappedPage,\n            experimentationAgentIds,\n            mappingKind: componentSchema.mappingKind,\n            maintainUnsegmentedCount: componentSchema.maintainUnsegmentedCount,\n          } as unknown as CpmMappedComponentDataRelaxed;\n        },\n        isCPMEditor\n      );\n    }\n\n    case 'DataDocument': {\n      const cmsData =\n        getDocumentOfTypeFromPageAndComponent<CmsDataTypesIntersection>(\n          null,\n          componentBr,\n          pageBr\n        )?.[0] ?? null;\n\n      return handleError<CpmMappedComponentDataRelaxed>(\n        {\n          componentParams,\n          pageType,\n          componentName,\n          data: null,\n          mappedPage,\n          isCPMEditor,\n        } as unknown as CpmMappedComponentDataRelaxed,\n        () => {\n          if (cmsData === null) {\n            throw new Error('can not useCpmData when useData is null');\n          }\n\n          const cmsDocumentType = cmsData.contentType.replace('dxcms:', '');\n\n          if (!(componentSchema.cmsDocumentTypes as readonly string[]).includes(cmsDocumentType)) {\n            throw new Error(`${componentName} can not render \"${cmsDocumentType}\" documents`);\n          }\n\n          const enhancedData = enhanceData(cmsData, componentParams);\n\n          enhancedData.links?.forEach((link) => {\n            registerExperimentItem(\n              experimentationAgentIds,\n              isCPMEditor,\n              link.experimentationConfiguration\n            );\n          });\n\n          const mappedDocumentData = applyMapData(mapData, {\n            data: enhancedData,\n            mappedPage,\n            componentParams,\n            componentName,\n            addIssue,\n            clearIssue,\n            pageBr,\n            componentBr,\n            cmsDocumentType,\n            isCPMEditor,\n            addCampaignCodeToUrl,\n          } as CpmMappingFunctionInputRelaxed);\n\n          registerExperimentItem(\n            experimentationAgentIds,\n            isCPMEditor,\n            mappedDocumentData.experimentationConfiguration\n          );\n\n          return {\n            componentParams,\n            pageType,\n            componentName,\n            mappedPage,\n            experimentationAgentIds,\n            data: mappedDocumentData,\n            mappingKind: componentSchema.mappingKind,\n            maintainUnsegmentedCount: componentSchema.maintainUnsegmentedCount,\n          } as unknown as CpmMappedComponentDataRelaxed;\n        },\n        isCPMEditor\n      );\n    }\n  }\n}\n","import {\n  getDocumentOfTypeFromPageAndComponent,\n  getFromPageByRef,\n  modelsToRefs,\n} from '../adapters/getters';\nimport type { CpmPageModel, Models, BrPage, ListData, BrComponent } from '../adapters/types';\nimport { mappingSchema, getBrComponentName, isMappedComponentName } from '../schema';\nimport type { CmsDataTypesIntersection, MappedComponent } from '../schema';\nimport { makeCmsComponentDocumentEnhancer } from '../transformers/enhancers';\n\nfunction removeNullyFromArray<T>(xs: Array<T | null | undefined>): Array<T> {\n  return xs.filter((x: T | null | undefined): x is T => !!x);\n}\n\ntype $Ref = { $ref: string };\ntype NodeWithChildren = { children: $Ref[] };\ntype Page = CpmPageModel['page'];\ntype DocumentWithHeadline = {\n  data: {\n    headline: string;\n  };\n};\n\n/**\n * Get a document by a reference ID\n */\nconst getDocumentByRef = (page: Page, $ref?: string) => {\n  const ref = `${$ref}`.replace('/page/', '');\n  return page[ref];\n};\n\n/**\n * Ensure a node has an array of child reference IDs (using the `children` property)\n */\nconst isNodeWithChildren = (node: unknown): node is NodeWithChildren => {\n  return !!(\n    node &&\n    typeof node === 'object' &&\n    'children' in node &&\n    Array.isArray(node?.children) &&\n    node.children.every((child: { $ref?: string }) => typeof child.$ref === 'string')\n  );\n};\n\n/**\n * Ensure a node has headline\n */\nconst isDocumentWithHeadline = (node: unknown): node is DocumentWithHeadline => {\n  return !!(\n    node &&\n    typeof node === 'object' &&\n    'data' in node &&\n    node.data &&\n    typeof node.data === 'object' &&\n    'headline' in node.data\n  );\n};\n\n/**\n * Get the `main` content area document for the page\n */\nconst getMainDocument = (page: Page, rootDocument: unknown) => {\n  if (!isNodeWithChildren(rootDocument)) {\n    return;\n  }\n\n  const mainDocumentRef = rootDocument.children.find((child) => {\n    const childDocument = getDocumentByRef(page, child.$ref);\n\n    return childDocument && 'name' in childDocument && childDocument.name === 'main';\n  });\n\n  const mainDocument = getDocumentByRef(page, mainDocumentRef?.$ref);\n\n  if (isNodeWithChildren(mainDocument)) {\n    return mainDocument;\n  }\n};\n\nfunction getItemsRefs(listData: ListData | null, componentBr: BrComponent) {\n  const models = componentBr.getModels<Models>();\n  const directRefs = modelsToRefs(models);\n  const { itemsRef } = listData ?? { itemsRef: directRefs };\n\n  return itemsRef ? removeNullyFromArray(itemsRef) : [];\n}\n\n/**\n * Traverses through the page model to find a component that has images that can be used for the SEO meta image\n */\nexport const getPagePrimaryImage = (pageBr: BrPage): string | undefined => {\n  const validAssets = removeNullyFromArray(\n    pageBr\n      .getComponent('main')\n      ?.getChildren()\n      .filter((componentBr) => {\n        const componentName = getBrComponentName(componentBr);\n        if (!isMappedComponentName(componentName)) return false;\n\n        // these are the only components we can presume will have SEO image compatable images\n        return new Set(['Carousel', 'Full Width Image', 'Masthead Image']).has(componentName);\n      })\n      .map((componentBr) => {\n        const componentName = getBrComponentName(componentBr);\n        if (!isMappedComponentName(componentName)) return [];\n\n        const componentSchema: MappedComponent = mappingSchema[componentName];\n        const enhanceData = makeCmsComponentDocumentEnhancer(\n          componentSchema,\n          pageBr,\n          // Stubbing the analytics function is fine here because we're only looking for images\n          (linkUrl) => linkUrl || ''\n        );\n\n        // Grab all the documents attached to this component\n        const listData =\n          getDocumentOfTypeFromPageAndComponent<ListData>(\n            ['ListDocument'],\n            componentBr,\n            pageBr\n          )?.[0] ?? null;\n\n        const itemsData = getItemsRefs(listData, componentBr)\n          .map((ref) => getFromPageByRef<CmsDataTypesIntersection>(ref, pageBr))\n          .filter((x: CmsDataTypesIntersection | null): x is CmsDataTypesIntersection => !!x);\n\n        const instanceData =\n          getDocumentOfTypeFromPageAndComponent<CmsDataTypesIntersection>(\n            null,\n            componentBr,\n            pageBr\n          )?.[0] ?? null;\n\n        // run the documents through the enhancer\n        const enhancedData = [...itemsData, instanceData]\n          .filter(\n            (data: CmsDataTypesIntersection | null): data is CmsDataTypesIntersection => !!data\n          )\n          .map((data) => enhanceData(data))\n\n          // ignore any segmented documents\n          .filter((data) => data.segmentIds.length === 0)\n\n          // and extract the assets\n          .map(({ cpmAssets }) => cpmAssets);\n\n        return enhancedData;\n      })\n      .flat()\n      .flat() ?? []\n  ).map(({ aspectRatios }) => aspectRatios);\n\n  // validAssets will now contain all useful assets, in page order.\n\n  const firstAssetOfAspectRatio = validAssets.reduce(\n    (acc, val) => ({\n      ...acc,\n      ...val,\n    }),\n    {}\n  );\n\n  return firstAssetOfAspectRatio['21x9']?.url ?? firstAssetOfAspectRatio['18x5']?.url;\n};\n\n/**\n * Getting Article title from the first Masthead component on the page\n */\nexport const getArticleTitle = (pageModel: CpmPageModel) => {\n  const page = pageModel.page;\n\n  const rootDoc = getDocumentByRef(page, pageModel.root.$ref);\n\n  const mainDoc = getMainDocument(page, rootDoc);\n\n  if (!mainDoc) {\n    return '';\n  }\n\n  for (const containerDoc of mainDoc.children) {\n    const container = getDocumentByRef(page, containerDoc?.$ref);\n\n    if (container && 'name' in container && container.name === 'mastheadImage') {\n      const documentRef = container.models?.document?.$ref;\n\n      const document = getDocumentByRef(page, documentRef);\n\n      return isDocumentWithHeadline(document) ? document.data.headline : '';\n    }\n  }\n};\n","import type { Reference } from '@bloomreach/spa-sdk';\nimport type { BrPage } from '../adapters/types';\n\nexport type MaybeMarkdownContent = {\n  headline?: string;\n  subheading?: string;\n  description?: string;\n  shortDescription?: string;\n  longDescription?: string;\n  markdownEditor?: string;\n  contentBlock?: Array<{ [key: string]: string }>;\n  itemsRef?: Array<Reference>;\n};\n\nexport function hasPageGotHeadingOne(brPage: BrPage) {\n  const children = brPage.getComponent('main')?.getChildren();\n\n  if (!children) {\n    return false;\n  }\n\n  for (const child of children) {\n    const params = child.getParameters();\n    const models = child.getModels();\n    const hasContentGotH1 = hasModelsGotH1(brPage, Object.values(models));\n\n    if (params.topHeadingLevel === 'h1' || hasContentGotH1) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction hasModelsGotH1(brPage: BrPage, refs: Array<Reference>) {\n  for (const ref of refs) {\n    const content = brPage.getContent(ref);\n    const data = content?.getData<MaybeMarkdownContent>();\n    let hasListDataGotH1 = false;\n\n    if (!data) {\n      return false;\n    }\n\n    if (Array.isArray(data.itemsRef)) {\n      hasListDataGotH1 = hasModelsGotH1(brPage, data.itemsRef);\n    }\n\n    if (hasListDataGotH1 || hasDocumentGotH1(data)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction hasDocumentGotH1(data: MaybeMarkdownContent) {\n  return (\n    hasHeadingOne(data.headline) ||\n    hasHeadingOne(data.subheading) ||\n    hasHeadingOne(data.description) ||\n    hasHeadingOne(data.shortDescription) ||\n    hasHeadingOne(data.longDescription) ||\n    hasHeadingOne(data.markdownEditor) ||\n    hasContentBlockGotH1(data.contentBlock)\n  );\n}\n\nfunction hasContentBlockGotH1(contentBlock?: Array<{ [key: string]: string }>) {\n  if (!Array.isArray(contentBlock)) {\n    return false;\n  }\n\n  for (const block of contentBlock) {\n    for (const content of Object.values(block)) {\n      if (hasHeadingOne(content)) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n}\n\n// Content team create H1's using both `#Heading` and `# Heading`\nconst headingOnePattern = /^#(?!#)\\s*.+$/m;\n\nexport function hasHeadingOne(text?: string) {\n  return headingOnePattern.test(text ?? '');\n}\n","import type { Document } from '@bloomreach/spa-sdk';\nimport type { AnalyticsTagging, BrPage } from '../adapters/types';\nimport { getArticleTitle, getPagePrimaryImage } from '../fetching/get-page-seo-data';\nimport { getBrandCodeFromPage } from './getBrandCodeFromPage';\nimport { hasPageGotHeadingOne } from '../utils/has-page-got-h1';\n\nfunction getPageDocumentData(pageBr: BrPage) {\n  return pageBr.getDocument<{\n    model: {\n      data: {\n        contentAssociation: string[];\n        contentType: 'dxcms:Page';\n        hidePageHeader: boolean | null;\n        hidePageFooter: boolean | null;\n        seo: {\n          hideSearchEngine: boolean;\n          metaDescription: string | null;\n          metaKeywords: string | null;\n          pageHeading: string | null;\n          pageTitle: string | null;\n        };\n        /**\n         * Allow the CMS to override the inferred default tagging values (based off of the pageType).\n         * Note: The `analyticsTagging` object was introduced in BRCMS-2748 so older pages may not have this field.\n         */\n        analyticsTagging?: AnalyticsTagging;\n        type: string;\n      };\n    };\n    type: 'document';\n  }>();\n}\n\n/**\n * This is usage-specific data that can not be provided in a generalized way by CPM.\n *\n * It includes:\n * - Data that is outside the scope of CPM, eg:\n *   - cookie information\n *   - current browser pathname\n *   - locale / language / region\n * - Data that must be calculated from the CPM page and provided to the app, eg:\n *   - seo information\n *   - page title\n *   - page header image\n *   - analytics tagging\n *\n * Must be calculated by a function that can be passed to CPMs fetchServerCpmPage function.\n * Its output will be included in the CpmDataBundle, and passed to every mapping function\n * under the key `domainData`\n */\nexport type CpmMappedPage = {\n  brandCode: string;\n  articleTitle: string;\n  seoImage: string;\n  isHeaderH1: boolean;\n  hidePageHeader: boolean;\n  hidePageFooter: boolean;\n  pageType: string;\n  pathname: string;\n  languageCode: string;\n  seo: {\n    hideSearchEngine: boolean;\n    metaDescription: string | null;\n    metaKeywords: string | null;\n    pageHeading: string | null;\n    pageTitle: string | null;\n  };\n  analyticsTagging: AnalyticsTagging;\n};\n\nexport function extractMappedPage(\n  pathname: string,\n  localeCode: string,\n  pageBr: BrPage\n): CpmMappedPage {\n  const { language: languageCode } = new Intl.Locale(localeCode);\n\n  const pageModel = pageBr.toJSON();\n\n  const documentData = getPageDocumentData(pageBr);\n\n  const seo = documentData?.model?.data?.seo ?? ({} as Record<string, undefined>);\n  const analyticsTagging =\n    documentData?.model?.data.analyticsTagging ?? ({} as Record<string, undefined>);\n\n  const brandCode = getBrandCodeFromPage(pageModel);\n  const shouldHeaderRenderH1 = !hasPageGotHeadingOne(pageBr);\n\n  return {\n    brandCode,\n    articleTitle: getArticleTitle(pageModel) ?? '',\n    seoImage: getPagePrimaryImage(pageBr) ?? '',\n    isHeaderH1: shouldHeaderRenderH1,\n    hidePageHeader: !!documentData?.model.data.hidePageHeader,\n    hidePageFooter: !!documentData?.model.data.hidePageFooter,\n    languageCode,\n    pageType: pageBr.getDocument<Document>()?.getData()?.type,\n    pathname,\n    seo: {\n      hideSearchEngine: !!seo.hideSearchEngine,\n      metaDescription: seo.metaDescription ?? null,\n      metaKeywords: seo.metaKeywords ?? null,\n      pageHeading: seo.pageHeading ?? null,\n      pageTitle: seo.pageTitle ?? null,\n    },\n    analyticsTagging: {\n      pageDetailOne: analyticsTagging.pageDetailOne ?? '',\n      pageDetailTwo: analyticsTagging.pageDetailTwo ?? '',\n      pageDetailThree: analyticsTagging.pageDetailThree ?? '',\n      primaryCategory: analyticsTagging.primaryCategory ?? null,\n      adobePageType: analyticsTagging.adobePageType ?? null,\n      trackEventType: analyticsTagging.trackEventType ?? null,\n    },\n  };\n}\n","import type { Page } from '@bloomreach/spa-sdk';\nimport { initialize } from '@bloomreach/spa-sdk';\nimport type { QueryClient } from '@tanstack/react-query';\n\nimport type {\n  BrComponent,\n  BrPage,\n  BrPageModel,\n  CpmPageModel,\n  ExtractCampaignCodeTaggingValuesFn,\n} from '../adapters/types';\nimport type { serverSideCmsPageModelQuery as serverSideCmsPageModelQueryImport } from '../generated/queries';\nimport type { KeyedMappingDefinition, CpmServerBundle } from './types';\nimport type { CpmMappingFunctionRelaxed, CpmPreMappedDataInstanceRelaxed } from './typesRelaxed';\nimport { mapCpmData } from './mapCpmData';\nimport { getBrComponentName, isMappedComponentName, type MappedComponentName } from '../schema';\nimport { removeUndefineds } from '../helpers';\nimport { type CpmMappedPage, extractMappedPage } from './cpmMappedPage';\nimport { getPath } from '../utils/unknown-object-helpers';\nimport { getTaggingValuesFromCpmAnalytics } from '../utils/add-campaign-id-to-url';\nimport { logError } from '@dx-ui/framework-logger';\n\nexport function makeFetchServerCpmPage(\n  definitions: Partial<KeyedMappingDefinition>,\n  serverSideCmsPageModelQuery: typeof serverSideCmsPageModelQueryImport\n) {\n  function preMapComponent(\n    componentName: MappedComponentName,\n    componentBr: BrComponent,\n    pageBr: BrPage,\n    mappedPage: CpmMappedPage,\n    extractCampaignCodeTaggingValues: ExtractCampaignCodeTaggingValuesFn\n  ): CpmPreMappedDataInstanceRelaxed {\n    type MapData = CpmMappingFunctionRelaxed | undefined;\n\n    const mapData = definitions[componentName]?.mapData as MapData;\n\n    if (!mapData) {\n      throw new Error(`No mapping provided for component \"${componentName}\"`);\n    }\n\n    const mappedData = mapCpmData(\n      componentName,\n      mapData as unknown as CpmMappingFunctionRelaxed,\n      pageBr,\n      componentBr,\n      mappedPage,\n      {\n        add: () => null,\n        clear: () => null,\n      },\n      extractCampaignCodeTaggingValues\n    );\n\n    return { componentName, mappedData } as unknown as CpmPreMappedDataInstanceRelaxed;\n  }\n\n  function preMapSection(\n    pageBr: Page,\n    mappedPage: CpmMappedPage,\n    sectionName: string,\n    extractCampaignCodeTaggingValues: ExtractCampaignCodeTaggingValuesFn\n  ): Record<string, CpmPreMappedDataInstanceRelaxed> {\n    const brComponents = pageBr.getComponent(sectionName)?.getChildren() ?? [];\n\n    return Object.fromEntries(\n      brComponents\n        .map(function applyDataMapping(componentBr) {\n          let data: CpmPreMappedDataInstanceRelaxed | null = null;\n\n          try {\n            const componentName = getBrComponentName(componentBr);\n            if (!isMappedComponentName(componentName)) {\n              throw new Error(`Cannot map unknown component`);\n            }\n\n            data = preMapComponent(\n              componentName,\n              componentBr,\n              pageBr,\n              mappedPage,\n              extractCampaignCodeTaggingValues\n            );\n          } catch {\n            const [id, label, ref] = [\n              getPath(componentBr, ['model', 'id']),\n              getPath(componentBr, ['model', 'label']),\n              getPath(componentBr, ['model', 'links', 'self', 'href']),\n            ];\n\n            logError(\n              'Cpm Fetch Error',\n              'preMap',\n              `${String(label)}|${String(id)}|${String(label)}|${String(ref)}`\n            );\n          }\n\n          return {\n            isUntranslated: !!getPath(componentBr, ['model', 'meta', 'paramsInfo', 'oneLinkNoTx']),\n            data,\n          };\n        })\n        .map(function assignIndexedKeys({ isUntranslated, data }, i, { length }) {\n          return [\n            [\n              'cpm-',\n              i.toString().padStart(Math.ceil(Math.log10(length)) + 1, '0'),\n              isUntranslated ? '-noTx' : '',\n            ].join(''),\n            data,\n          ];\n        })\n        .filter((item) => item[1] !== null)\n    );\n  }\n\n  return async function fetchServerCpmPage(\n    queryClient: QueryClient,\n    contentPath: string,\n    localeCode: string,\n    pathname: string,\n    sectionNames: string[],\n    extractCampaignCodeTaggingValues = getTaggingValuesFromCpmAnalytics\n  ): Promise<CpmServerBundle<KeyedMappingDefinition> | null> {\n    const cmsPageModel: CpmPageModel = (\n      await serverSideCmsPageModelQuery(queryClient, {\n        path: contentPath,\n        language: localeCode,\n      })\n    ).cmsPageModel;\n\n    if (!cmsPageModel) {\n      return null;\n    }\n\n    const cpmPageModel = cmsPageModel;\n\n    //eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const bloomReachConfiguration: any = {\n      httpClient: () => Promise.resolve({ data: cpmPageModel }),\n    };\n\n    const cpmPage = initialize(bloomReachConfiguration, cpmPageModel as BrPageModel);\n    const mappedPage = extractMappedPage(pathname, localeCode, cpmPage);\n    const preMappedData = Object.fromEntries(\n      sectionNames.map((sectionName) => [\n        sectionName,\n        preMapSection(cpmPage, mappedPage, sectionName, extractCampaignCodeTaggingValues),\n      ])\n    );\n    const experimentationAgentIds = Array.from(\n      Object.values(preMappedData)\n        .flatMap((section) => Object.values(section))\n        .reduce((agentIds, component) => {\n          const mappedAgentIds = component.mappedData.experimentationAgentIds;\n\n          if (mappedAgentIds?.size) {\n            return new Set([...agentIds, ...mappedAgentIds]);\n          }\n\n          return agentIds;\n        }, new Set<string>())\n    ).filter((id) => !!id);\n\n    return removeUndefineds({\n      contentPath,\n      mappedPage,\n      preMappedData,\n      experimentationAgentIds,\n    });\n  };\n}\n","import type * as React from 'react';\n\nexport const ErrorBlock: React.FC<{ title: React.ReactNode; message: string }> = ({\n  title,\n  message,\n}) => {\n  return (\n    <div className=\"bg-danger-alt flex flex-col items-center justify-center p-8 text-center\">\n      <h2 className=\"text-2xl font-bold\" data-e2e=\"pageSubTitle\">\n        {title}\n      </h2>\n\n      <p>{message}</p>\n    </div>\n  );\n};\n","/**\nUsed to declare expected non-recoverable errors while mapping.\n\nUse this when the error is:\n- Part of normal operation\n- Impossible to handle gracefully\n- Should tell the content editor that they've done something wrong\n\nAn example would be an ImageHeadliner component with no Image attached\n*/\nexport class CpmMappingError extends Error {\n  constructor(message: string, options?: any) {\n    super(message, options);\n    this.name = 'CpmMappingError';\n    this.message = message;\n    Object.setPrototypeOf(this, CpmMappingError.prototype);\n  }\n}\n","import * as React from 'react';\nimport { ErrorBlock } from './ErrorBlock';\nimport type { BaseData } from '../adapters/types';\nimport { logError } from '@dx-ui/framework-logger';\nimport { CpmMappingError } from '../mappingEngine/CpmMappingError';\n\ntype ErrorBoundaryProps = {\n  children: React.ReactNode;\n  displayName?: string;\n  data?: BaseData | null;\n  showError: boolean;\n};\n\nexport type ErrorType = Error | string | null | Array<ErrorType>;\n\nconst messageFromError = (err: ErrorType): string =>\n  err instanceof Error ? err.message : typeof err === 'string' ? err : '';\n\nconst titleFromProps = (\n  data?: ErrorBoundaryProps['data'],\n  displayName?: ErrorBoundaryProps['displayName']\n) => {\n  const titleEntity = data ? <code>{displayName}</code> : 'component';\n  const titleSuffix = data ? (\n    <>\n      {' '}\n      with <code>{data.contentType}</code> data\n    </>\n  ) : (\n    ''\n  );\n\n  return (\n    <>\n      Something went wrong rendering {titleEntity}.{titleSuffix}\n    </>\n  );\n};\n\nexport class ErrorBoundary extends React.Component<\n  ErrorBoundaryProps,\n  { hasError: boolean; error: ErrorType }\n> {\n  constructor(props: ErrorBoundaryProps) {\n    super(props);\n    this.state = { hasError: false, error: null };\n  }\n\n  static getDerivedStateFromError(error: Error | string) {\n    return { hasError: !!error, error };\n  }\n\n  componentDidCatch(error: Array<Error> | Error | string) {\n    if (Array.isArray(error)) {\n      for (const errorInstance of error) {\n        if (!(errorInstance instanceof CpmMappingError)) {\n          logError('Cpm Error', errorInstance);\n        }\n      }\n    } else if (!(error instanceof CpmMappingError)) {\n      logError('Cpm Error', error);\n    }\n\n    //eslint-disable-next-line no-console\n    console.error(error);\n  }\n\n  render() {\n    const { data, displayName, children, showError } = this.props;\n\n    if (!this.state.hasError) {\n      return children;\n    }\n\n    // Only render errors in editor mode\n    if (!showError) {\n      return null;\n    }\n\n    if (Array.isArray(this.state.error)) {\n      return this.state.error.map((error) => (\n        <ErrorBlock\n          key={messageFromError(error)}\n          title={titleFromProps(data, displayName)}\n          message={messageFromError(error)}\n        />\n      ));\n    } else {\n      return (\n        <ErrorBlock\n          title={titleFromProps(data, displayName)}\n          message={messageFromError(this.state.error)}\n        />\n      );\n    }\n  }\n}\n","import * as React from 'react';\nimport type { CpmMappedPage } from './cpmMappedPage';\n\ntype MappingEngineContextValue = {\n  mappedPage: CpmMappedPage;\n};\n\nconst MappingContext = React.createContext<MappingEngineContextValue | null>(null);\n\nexport function MappingContextProvider({\n  children,\n  mappedPage,\n}: {\n  children: React.ReactNode;\n  mappedPage: CpmMappedPage;\n}) {\n  const TypeForcedProvider: React.FC<{\n    value: MappingEngineContextValue;\n    children: React.ReactNode;\n  }> = MappingContext.Provider as any; //eslint-disable-line @typescript-eslint/no-explicit-any\n\n  const value = { mappedPage };\n  return <TypeForcedProvider value={value}>{children}</TypeForcedProvider>;\n}\n\nexport function useMappingContext(): MappingEngineContextValue {\n  const val = React.useContext(MappingContext);\n\n  if (val === null) {\n    throw new Error('can not useMappingContext outside of MappingContext.Provider');\n  } else {\n    return val;\n  }\n}\n","import { BrComponentContext, BrPageContext } from '@bloomreach/react-sdk';\nimport type { BrComponent, BrPage } from './types';\nimport { useContext } from 'react';\n\nfunction makeBloomContextHook<T>(context: React.Context<T | undefined>, name: string): () => T {\n  return () => {\n    const extracted = useContext(context);\n\n    if (extracted === undefined) {\n      throw new Error(`Invalid Context call for \"${name}\"`);\n    } else {\n      return extracted;\n    }\n  };\n}\n\nexport const useBrComponentContext = makeBloomContextHook<BrComponent>(\n  BrComponentContext,\n  'BrComponentContext'\n);\n\nexport const usePartialBrPageContext = makeBloomContextHook<BrPage>(BrPageContext, 'BrPageContext');\n\n/**\n * Access context without throwing if it doesn't exist\n */\nfunction makeBloomContextHookSafe<T>(\n  context: React.Context<T | undefined> | undefined\n): () => T | undefined {\n  return () => {\n    if (context) {\n      return useContext(context);\n    } else {\n      return undefined;\n    }\n  };\n}\n\n/**\n * Hook to access Bloomreach context (if it exists).\n */\nexport const useBrPageContextSafe = makeBloomContextHookSafe<BrPage>(BrPageContext);\n","import type { ReactNode } from 'react';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nexport type Issue = {\n  id: string;\n  message: ReactNode;\n};\n\nexport type Issues = Record<string, ReactNode>;\n\nexport type EditorIssuesContextValue = {\n  isOpen: boolean;\n  issues: Record<string, ReactNode>;\n  addIssues: (issues: Issue[]) => void;\n  clearIssue: (id: string) => void;\n  toggle: () => void;\n};\n\nconst EditorIssuesContext = createContext<EditorIssuesContextValue | undefined>(undefined);\n\nexport function EditorIssuesProvider({ children }: { children: ReactNode }) {\n  const [issues, setIssues] = useState<Issues>({});\n  const [isOpen, setIsOpen] = useState(false);\n\n  const addIssues = (_issues: Issue[]) => {\n    if (!_issues.length) {\n      return;\n    }\n\n    const newIssues = _issues\n      .filter((i) => !issues[i.id])\n      .reduce((issues: Issues, currentIssue) => {\n        issues[currentIssue.id] = currentIssue.message;\n        return issues;\n      }, {});\n\n    if (Object.keys(newIssues).length) {\n      setIssues((prevIssues) => ({\n        ...prevIssues,\n        ...newIssues,\n      }));\n    }\n  };\n  const clearIssue = (id: string) => {\n    if (!issues[id]) {\n      return;\n    }\n\n    setIssues((issues) => {\n      delete issues[id];\n      return issues;\n    });\n  };\n  const toggle = () => setIsOpen((isOpen) => !isOpen);\n\n  const editorContextValue = {\n    issues,\n    isOpen,\n    toggle,\n    addIssues,\n    clearIssue,\n  };\n\n  return (\n    <EditorIssuesContext.Provider value={editorContextValue}>\n      {children}\n    </EditorIssuesContext.Provider>\n  );\n}\n\nfunction issueStub() {\n  throw new Error('can not add or clear issues on this component');\n}\n\nexport function useIssuesContext() {\n  const context = useContext(EditorIssuesContext);\n\n  if (!context) {\n    return {\n      addIssues: issueStub,\n      clearIssue: issueStub,\n      isOpen: false,\n      issues: {} as Record<string, ReactNode>,\n      toggle: issueStub,\n      isCPMEditor: false,\n    };\n  }\n\n  return context;\n}\n\nexport function useIssues() {\n  const [issues, setIssues] = useState<Issue[]>([]);\n  const { addIssues, clearIssue } = useIssuesContext();\n\n  // We have to use an effect to call addIssue because this hook gets called while rendering\n  useEffect(() => {\n    if (issues.length) {\n      addIssues(issues);\n    }\n  }, [issues, addIssues]);\n\n  const add = (issue?: Issue) => {\n    if (!issue) {\n      return;\n    }\n\n    const exists = issues.find((i) => i.id === issue.id);\n\n    if (exists) {\n      return;\n    }\n\n    setIssues([...issues, issue]);\n  };\n\n  return {\n    add,\n    clear: clearIssue,\n  };\n}\n","import type { ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\nimport { usePartialBrPageContext } from '../adapters/hooks';\nimport type { BrPage, BrPageModel } from '../adapters/types';\n\nconst CpmMergedBrPageContext = createContext<BrPageModel | null>(null);\n\nexport function useCpmMergedBrPageContext() {\n  const pageBr = usePartialBrPageContext();\n  const cpmBrPageContext = useContext(CpmMergedBrPageContext);\n\n  // Some components render straight away without needing to fetch, so don't throw if context is null\n  if (!cpmBrPageContext) {\n    return pageBr;\n  }\n\n  const mergedBrPage = Object.create(pageBr);\n\n  mergedBrPage.model.page = {\n    ...mergedBrPage.model.page,\n    ...cpmBrPageContext.page,\n  };\n\n  return mergedBrPage as BrPage;\n}\n\nexport function CpmMergedBrPageContextProvider({\n  children,\n  page,\n}: {\n  children: ReactNode;\n  page: BrPageModel;\n}) {\n  return <CpmMergedBrPageContext.Provider value={page}>{children}</CpmMergedBrPageContext.Provider>;\n}\n","import type { BaseData } from '../adapters/types';\nimport type { CmsDocumentType } from '../schema';\nimport { getDocumentOfTypeFromPageAndComponent } from '../adapters/getters';\nimport { useBrComponentContext } from '../adapters/hooks';\nimport { useCpmMergedBrPageContext } from '../context/CpmMergedBrPageContext';\n\nexport const useData = <T extends BaseData>({\n  documentType,\n}: {\n  documentType?: CmsDocumentType;\n} = {}): T[] | null => {\n  const page = useCpmMergedBrPageContext();\n  const component = useBrComponentContext();\n  return getDocumentOfTypeFromPageAndComponent<T>(\n    documentType ? [documentType] : null,\n    component,\n    page\n  );\n};\n\nexport const useDataSingle = <T extends BaseData>(\n  query: { documentType?: CmsDocumentType } = {}\n): T | null => useData<T>(query)?.[0] ?? null;\n","import { useBrComponentContext } from '../adapters/hooks';\nimport { useCpmMergedBrPageContext } from '../context/CpmMergedBrPageContext';\n\n/**\n * This hook decides if the Bloomreach manage content button should be rendered\n */\nexport function useHideManageContentButton() {\n  const page = useCpmMergedBrPageContext();\n  const component = useBrComponentContext();\n  const componentName = component.getName();\n  const document = page.getDocument<{\n    model: {\n      data: {\n        hidePageHeader: boolean | null;\n        hidePageFooter: boolean | null;\n      };\n    };\n  }>();\n\n  if (componentName === 'Header') {\n    return document?.model.data.hidePageHeader === true;\n  }\n\n  if (componentName === 'Footer') {\n    return document?.model.data.hidePageFooter === true;\n  }\n\n  return false;\n}\n","import { useIssuesContext } from '../hooks/use-issues';\n\nexport function EditorIssues({ id }: { id: string }) {\n  const { issues, isOpen, toggle } = useIssuesContext();\n  const panelId = `${id}-issues`;\n  const issueCount = Object.keys(issues).length;\n  const issuePostfix = `issue${issueCount > 1 ? 's' : ''}`;\n\n  if (!issueCount) {\n    return null;\n  }\n\n  return (\n    <div className=\"min-h-14 overflow-visible text-left\">\n      <div className=\"absolute left-2 top-2 z-50 ml-2 rounded-lg\">\n        <button\n          aria-expanded={isOpen}\n          aria-controls={panelId}\n          /* eslint-disable-next-line tailwindcss/no-custom-classname */\n          className=\"editor-hints-cta bg-warn w-40\"\n          onClick={() => toggle()}\n          type=\"button\"\n        >\n          &#9888; {isOpen ? 'Hide' : 'Show'} {issueCount} {issuePostfix}\n        </button>\n        {/* eslint-disable-next-line tailwindcss/no-custom-classname */}\n        <div className=\"bg-warn-alt mt-2 rounded-lg px-4 py-2\" id={panelId} hidden={!isOpen}>\n          <ul className=\"list-disc pl-2\">\n            {Object.keys(issues).map((key) => {\n              return (\n                <li key={key} className=\"leading-6\">\n                  {issues[key]}\n                </li>\n              );\n            })}\n          </ul>\n        </div>\n      </div>\n    </div>\n  );\n}\n","export const NewContentBanner = ({ displayName }: { displayName: string }) => {\n  return (\n    <div\n      className=\"bg-info-alt border-border-alt relative flex flex-col items-center justify-center p-8 text-center\"\n      style={{ borderStyle: 'dashed', borderTopWidth: 2, padding: 64 }}\n    >\n      <h2 className=\"text-2xl font-bold\" data-e2e=\"pageSubTitle\">\n        {displayName ? <code>{displayName}</code> : 'Unknown component'}\n      </h2>\n\n      <p>Please attach a document to this component.</p>\n    </div>\n  );\n};\n","export const NullDocumentBanner = ({ displayName }: { displayName: string }) => {\n  return (\n    // eslint-disable-next-line tailwindcss/no-custom-classname\n    <div className=\"bg-danger-alt border-border-alt flex flex-col items-center justify-center space-y-6 p-16 text-center font-bold\">\n      <h2 className=\"text-2xl\" data-e2e=\"NullDocumentBanner\">\n        {displayName ? <code>{displayName}</code> : 'Unknown component'}\n      </h2>\n\n      <div>\n        <p>Attached document has been deleted or is missing.</p>\n        <p className=\"mt-2\">Select a new document or this page will not publish.</p>\n      </div>\n    </div>\n  );\n};\n","import type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport { createContext, useContext, useState } from 'react';\n\ntype Segments = Record<string, Array<string>>;\nexport type DispatchSegmentsUpdate = Dispatch<SetStateAction<Segments>>;\n\nexport type SegmentsContext = [Segments, DispatchSegmentsUpdate];\nconst noop = () => undefined;\n\nconst EditorPageSegmentationContext = createContext<SegmentsContext>([{}, noop]);\n\n/**\n * Store all segments + component/document names for the CPM editor so that it can filter them\n */\nexport function EditorPageSegmentsContextProvider({ children }: { children: ReactNode }) {\n  const state = useState<Segments>({});\n\n  return (\n    <EditorPageSegmentationContext.Provider value={state}>\n      {children}\n    </EditorPageSegmentationContext.Provider>\n  );\n}\n\nexport function useEditorPageSegmentsContext() {\n  const context = useContext(EditorPageSegmentationContext);\n\n  if (context === undefined) {\n    throw new Error(\n      `SegmentsContext is undefined. This component can only be used in apps that are wrapped in SegmentationContextProvider.`\n    );\n  }\n\n  return context;\n}\n","import type { Component as BrComponent, Reference } from '@bloomreach/spa-sdk';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nimport { useBrComponentContext } from '../adapters/hooks';\nimport type { DocumentModels } from '../adapters/types';\nimport { useCpmMergedBrPageContext } from '../context/CpmMergedBrPageContext';\nimport type { DispatchSegmentsUpdate } from '../context/EditorPageSegmentationContext';\nimport { useEditorPageSegmentsContext } from '../context/EditorPageSegmentationContext';\n\ntype BrComponentData = BrComponent & {\n  model: {\n    id: string;\n    name: string;\n    label: string;\n    models?: DocumentModels;\n  };\n};\n\ntype ItemsRef = (Reference | null)[];\n\n/**\n * Find all segments attached to a component so that they can be filtered in the editor\n */\nexport function SegmentationWrapper({ children }: { children: ReactNode }) {\n  const [_, setSegments] = useEditorPageSegmentsContext();\n  const page = useCpmMergedBrPageContext();\n  const brComponent = useBrComponentContext() as unknown as BrComponentData;\n\n  const models = brComponent.getModels();\n  const componentName = brComponent.model.label;\n\n  useEffect(() => {\n    registerSegments(models, page, componentName, setSegments);\n  }, [componentName, models, page, setSegments]);\n\n  return children;\n}\n\nfunction registerSegments(\n  models: DocumentModels,\n  page: ReturnType<typeof useCpmMergedBrPageContext>,\n  componentName: string,\n  setSegments: DispatchSegmentsUpdate\n) {\n  Object.values(models).forEach((docRef) => {\n    const content = page.getContent(docRef?.$ref || '');\n\n    if (!content || typeof content.getData !== 'function') {\n      return;\n    }\n\n    const data = content.getData();\n\n    if (!data) {\n      return;\n    }\n\n    const name = `${componentName}: ${data.displayName}`;\n\n    if (Array.isArray(data.segmentIds)) {\n      data.segmentIds.forEach((segmentId) => {\n        setSegments((prevState) => {\n          const nextState = { ...prevState };\n          let modifiedState = false;\n\n          if (!nextState[segmentId]) {\n            nextState[segmentId] = [];\n            modifiedState = true;\n          }\n\n          // we know this is defined, we just set it above\n          const nextSegment = nextState[segmentId];\n\n          if (!nextSegment.includes(name)) {\n            nextSegment.push(name);\n            modifiedState = true;\n          }\n\n          if (modifiedState) {\n            return nextState;\n          }\n\n          return prevState;\n        });\n      });\n    }\n\n    if (Array.isArray(data.itemsRef)) {\n      registerSegments(convertItemsRefToModels(data.itemsRef), page, componentName, setSegments);\n    }\n  });\n}\n\nfunction convertItemsRefToModels(itemsRef: ItemsRef) {\n  return itemsRef.reduce((models, ref, index) => {\n    models[`${index}`] = ref;\n    return models;\n  }, {} as DocumentModels);\n}\n","import type * as React from 'react';\nimport type { BrProps } from '@bloomreach/react-sdk';\nimport { BrManageContentButton } from '@bloomreach/react-sdk';\n\nimport { EditorIssuesProvider } from '../hooks/use-issues';\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { useDataSingle } from '../hooks/use-data';\nimport { useHideManageContentButton } from '../hooks/use-hide-manage-content-button';\nimport { EditorIssues } from './EditorIssues';\nimport { NewContentBanner } from './NewContentBanner';\nimport { NullDocumentBanner } from './NullDocumentBanner';\nimport { useBrComponentContext } from '../adapters/hooks';\nimport { useCpmMergedBrPageContext } from '../context/CpmMergedBrPageContext';\nimport { SegmentationWrapper } from './SegmentationWrapper';\n\n/**\n * Get a new ID when the parent/child document has changed\n * Note: This will be undefined in live mode because Core+\n * doesn't have ids\n */\nconst getEditorContentId = (data: null | { id?: string } | { id?: string }[]) => {\n  if (!data) {\n    return;\n  }\n\n  if (Array.isArray(data)) {\n    return data\n      .reduce((compound: string[], item) => {\n        if (item?.id) {\n          compound.push(item.id);\n        }\n\n        return compound;\n      }, [])\n      .join(':');\n  } else if (data.id) {\n    return data.id;\n  }\n};\nexport const EditWrapper = ({\n  children,\n  displayName,\n  isEditable = true,\n  isMappedComponent,\n}: {\n  children: React.ReactNode;\n  displayName: string;\n  isEditable?: boolean;\n  isMappedComponent: boolean;\n}) => {\n  const hideManageContentButton = useHideManageContentButton();\n  const page = useCpmMergedBrPageContext();\n  const component = useBrComponentContext();\n\n  const { document: documentRef } = component.getModels();\n\n  const document = documentRef && page.getContent(documentRef);\n  const data = useDataSingle();\n\n  if (!document && isMappedComponent) {\n    // Document has been deleted but is still attached to component\n    // which will stop the page publishing\n    if (document === null) {\n      return <NullDocumentBanner displayName={displayName} />;\n    }\n\n    return <NewContentBanner displayName={displayName} />;\n  }\n\n  const wrappedChildren = (\n    <ErrorBoundary\n      // Force the ErrorBoundary component to reset when the document has changed in editor mode\n      key={getEditorContentId(data)}\n      displayName={displayName}\n      showError\n      data={data}\n    >\n      {children}\n    </ErrorBoundary>\n  );\n\n  if (!isEditable || !isMappedComponent) {\n    return wrappedChildren;\n  }\n\n  return (\n    <SegmentationWrapper>\n      <EditorIssuesProvider key={getEditorContentId(data)}>\n        <div className=\"relative\">\n          {wrappedChildren}\n          <EditorIssues id={`${data?.id}`} />\n          {!hideManageContentButton ? (\n            <BrManageContentButton content={document} parameter=\"document\" relative />\n          ) : null}\n        </div>\n      </EditorIssuesProvider>\n    </SegmentationWrapper>\n  );\n};\n\nexport function withWrapper({\n  Inner,\n  displayName,\n  isEditable = true,\n  isMappedComponent,\n}: {\n  Inner: React.FC<BrProps>;\n  displayName: string;\n  isEditable?: boolean;\n  isMappedComponent: boolean;\n}) {\n  return function WithWrapperInner(brProps: BrProps) {\n    return (\n      <EditWrapper\n        displayName={displayName}\n        isEditable={isEditable}\n        isMappedComponent={isMappedComponent}\n      >\n        <Inner {...brProps} />\n      </EditWrapper>\n    );\n  };\n}\n\nexport default EditWrapper;\n","import type * as React from 'react';\n\nimport type { BrProps } from '@bloomreach/react-sdk';\nimport type { ContainerItem } from '@bloomreach/spa-sdk';\nimport { ErrorBlock } from './ErrorBlock';\n\nexport type FallbackProps = BrProps<ContainerItem> & {\n  mappingName?: string;\n};\n\nconst Fallback: React.FC<BrProps<ContainerItem>> = (props: FallbackProps) => {\n  let message = 'This component type is not supported by CPM';\n\n  if (props.mappingName) {\n    message = `${message} in the ${props.mappingName} mapping library`;\n  }\n\n  return (\n    <ErrorBlock\n      title={<>Could not render {props.component?.getLabel() ?? 'Unknown Component'}</>}\n      message={message}\n    />\n  );\n};\n\nexport default Fallback;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n  BrComponent as BrComponentPoorlyTyped,\n  BrPage as BrPagePoorlyTyped,\n} from '@bloomreach/react-sdk';\nimport type { Configuration, Page, PageModel } from '@bloomreach/spa-sdk';\nimport type { BrMapping } from './types';\n\nexport const BrComponent = BrComponentPoorlyTyped as any as React.FC<{ path: string }>;\nexport const BrPage = BrPagePoorlyTyped as any as React.FC<{\n  page: PageModel | Page;\n  children: React.ReactNode;\n  configuration: Configuration;\n  mapping: BrMapping;\n}>;\n","import { createContext, useContext } from 'react';\nimport Cookies from 'universal-cookie';\n\nexport const CookiesContext = createContext<Cookies>(new Cookies());\n\nexport const useCookies = () => useContext(CookiesContext);\n","export const getIsReducedMotion = () =>\n  typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n    ? window.matchMedia('(prefers-reduced-motion: reduce)').matches\n    : true;\n","\"use client\";\n\n// src/useSuspenseQuery.ts\nimport { QueryObserver, skipToken } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nimport { defaultThrowOnError } from \"./suspense.js\";\nfunction useSuspenseQuery(options, queryClient) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (options.queryFn === skipToken) {\n      console.error(\"skipToken is not allowed for useSuspenseQuery\");\n    }\n  }\n  return useBaseQuery(\n    {\n      ...options,\n      enabled: true,\n      suspense: true,\n      throwOnError: defaultThrowOnError,\n      placeholderData: void 0\n    },\n    QueryObserver,\n    queryClient\n  );\n}\nexport {\n  useSuspenseQuery\n};\n//# sourceMappingURL=useSuspenseQuery.js.map","import type { QueryKey } from '@tanstack/react-query';\nimport {\n  QueryClient,\n  QueryClientProvider,\n  QueryErrorResetBoundary,\n  useSuspenseQuery,\n} from '@tanstack/react-query';\nimport type { BrProps } from '@bloomreach/react-sdk';\nimport type { Page, ContainerItem } from '@bloomreach/spa-sdk';\nimport { ErrorBoundary as OSCErrorBoundary } from '@dx-ui/osc-error-boundary';\nimport { BrandButton } from '@dx-ui/osc-brand-buttons';\nimport { Spinner } from '@dx-ui/osc-spinner';\nimport * as React from 'react';\n\nimport type { BrPageModel, DocumentModels } from '../adapters/types';\nimport { CpmMergedBrPageContextProvider } from '../context/CpmMergedBrPageContext';\nimport type { MappedComponentName } from '../schema';\n\nconst MAX_TEXT_SAMPLE_SIZE = 1500;\n\nexport function findLastImageName(text: string) {\n  const sampleSize = text.length < MAX_TEXT_SAMPLE_SIZE ? text.length : MAX_TEXT_SAMPLE_SIZE;\n  const sample = text.slice(-sampleSize);\n  const lastMatch = [...sample.matchAll(/\"displayName\":\"([^\"]*)\"/g)].pop();\n\n  if (Array.isArray(lastMatch) && lastMatch.length > 1) {\n    return lastMatch[1];\n  }\n}\n\nexport function makeDefaultQueryFetcherFn(token?: string) {\n  return async function defaultQueryFn({ queryKey }: { queryKey: QueryKey }) {\n    const [link] = queryKey;\n\n    const url = new URL(link as string);\n    const params = new URLSearchParams(url.search);\n\n    // Remove the ref level param so the CMS returns all the information\n    params.delete('_maxreflevel');\n\n    url.search = params.toString();\n\n    // Auth header required to see content that isn't published in the editor\n    const headers = new Headers();\n    if (token) {\n      headers.set('Authorization', `Bearer ${token}`);\n    }\n\n    const req = await fetch(url, {\n      headers,\n      credentials: 'include',\n    });\n\n    // Get the text first, in case the JSON response is invalid\n    const text = await req.text();\n\n    try {\n      return JSON.parse(text);\n    } catch (err) {\n      if (err instanceof SyntaxError) {\n        // Most common error is a broken image which causes the server to send a bad JSON object\n        const imageName = findLastImageName(text);\n\n        if (imageName) {\n          throw new Error(\n            `Error parsing JSON response. The image named \"${imageName}\" is probably the cause, please re-browse the image.`,\n            { cause: err }\n          );\n        }\n      }\n\n      throw err;\n    }\n  };\n}\n\nexport function CpmQueryClientProvider({\n  children,\n  token,\n  queryFn = makeDefaultQueryFetcherFn,\n}: {\n  children: React.ReactNode;\n  token?: string;\n  queryFn?: typeof makeDefaultQueryFetcherFn;\n}) {\n  const [queryClient] = React.useState(\n    () =>\n      new QueryClient({\n        defaultOptions: {\n          queries: {\n            retry: 0,\n            queryFn: queryFn(token),\n          },\n        },\n      })\n  );\n\n  return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>;\n}\n\n/**\n * Determine if a component needs to fetch additional data before it can render\n */\nexport function shouldFetchContent(page: Page, models?: DocumentModels) {\n  if (!models) {\n    return false;\n  }\n\n  return Object.values(models).some((ref) => {\n    const content = page.getContent(ref?.$ref ?? '');\n\n    if (!content || typeof content.getData !== 'function') {\n      return false;\n    }\n    const data = content.getData();\n\n    const shouldFetchImages =\n      Array.isArray(data?.images) && data.images.some((image) => !!image?.imageRef?.uuid);\n    const shouldFetchListItems =\n      Array.isArray(data?.itemsRef) && data.itemsRef.some((itemRef) => !!itemRef?.uuid);\n    const shouldFetchRelatedDocuments =\n      Array.isArray(data?.relatedDocumentsRef) &&\n      data.relatedDocumentsRef.some((ref) => !!ref?.uuid);\n\n    return shouldFetchImages || shouldFetchListItems || shouldFetchRelatedDocuments;\n  });\n}\n\nexport function CpmDataWrapper({\n  component: brComponent,\n  page: brPage,\n  children,\n  componentName,\n}: BrProps<ContainerItem> & {\n  children: React.ReactNode;\n  componentName: MappedComponentName;\n}) {\n  if (!brComponent) {\n    return (\n      <ErrorBanner>\n        Missing Bloomreach component (No <pre>BrContainerItem</pre>)\n      </ErrorBanner>\n    );\n  }\n\n  if (!brPage) {\n    return (\n      <ErrorBanner>\n        Missing Bloomreach page (No <pre>BrPage</pre>)\n      </ErrorBanner>\n    );\n  }\n\n  const shouldFetch = shouldFetchContent(brPage, brComponent.getModels());\n\n  if (!shouldFetch) {\n    return children;\n  }\n\n  const url = brComponent.getUrl();\n\n  if (!url) {\n    return <ErrorBanner>Component has no URL to fetch data</ErrorBanner>;\n  }\n\n  return (\n    <QueryErrorResetBoundary>\n      {({ reset }) => (\n        <OSCErrorBoundary\n          onReset={reset}\n          fallbackRender={({ error, resetErrorBoundary }) => (\n            <ErrorBanner>\n              <p className=\"text-2xl\">There was an error loading data for {componentName}!</p>\n              <pre style={{ whiteSpace: 'normal' }}>{error.message}</pre>\n              <BrandButton label=\"Try again\" onClick={() => resetErrorBoundary()} />\n            </ErrorBanner>\n          )}\n        >\n          <React.Suspense\n            fallback={\n              <InfoBanner>\n                <p className=\"text-2xl\">Loading data for {componentName}</p>\n                <Spinner size=\"md\" />\n              </InfoBanner>\n            }\n          >\n            <FetchComponentData brPage={brPage} queryUrl={url}>\n              {children}\n            </FetchComponentData>\n          </React.Suspense>\n        </OSCErrorBoundary>\n      )}\n    </QueryErrorResetBoundary>\n  );\n}\n\nfunction FetchComponentData({\n  brPage,\n  children,\n  queryUrl,\n}: {\n  brPage: Page;\n  children: React.ReactNode;\n  queryUrl: string;\n}) {\n  const { data } = useSuspenseQuery<BrPageModel>({\n    queryKey: [queryUrl],\n  });\n\n  React.useEffect(() => {\n    if (data) {\n      brPage.sync();\n    }\n  }, [brPage, data]);\n\n  return <CpmMergedBrPageContextProvider page={data}>{children}</CpmMergedBrPageContextProvider>;\n}\n\nfunction InfoBanner({ children }: { children: React.ReactNode }) {\n  return (\n    <div className=\"bg-info-alt border-border-alt flex flex-col items-center justify-center space-y-4 border p-8 text-center\">\n      {children}\n    </div>\n  );\n}\n\nfunction ErrorBanner({ children }: { children: React.ReactNode }) {\n  return (\n    <div className=\"bg-danger-alt border-danger flex flex-col items-center justify-center space-y-4 border p-8 text-center\">\n      {children}\n    </div>\n  );\n}\n","import type { MouseEvent, ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useEffect } from 'react';\nimport type { AgentsSelection, ConductricsSelection } from '@dx-ui/framework-conductrics';\nimport { sendReward, useConductricsSelection } from '@dx-ui/framework-conductrics';\n\nconst fallbackValue = {};\nexport const CpmConductricsAgentsContext = createContext<AgentsSelection>(fallbackValue);\n\nexport function CpmConductricsAgentsProvider({\n  agentIds,\n  children,\n}: {\n  agentIds: string[];\n  children: ReactNode;\n}) {\n  if (!agentIds.length) {\n    return (\n      <CpmConductricsAgentsContext.Provider value={fallbackValue}>\n        {children}\n      </CpmConductricsAgentsContext.Provider>\n    );\n  }\n\n  return <ConductricsFetcher agentIds={agentIds}>{children}</ConductricsFetcher>;\n}\n\nexport function useCpmConductricsAgents() {\n  const context = useContext(CpmConductricsAgentsContext);\n\n  if (!context) {\n    throw new Error(\n      '`useCpmConductricsAgents` must be used within a `CpmConductricsAgentsProvider`'\n    );\n  }\n\n  return context;\n}\n\nfunction ConductricsFetcher({ agentIds, children }: { agentIds: string[]; children: ReactNode }) {\n  const isSingleAgent = agentIds.length === 1;\n  const selections = useConductricsSelection(agentIds.map((agentId) => ({ agentId })));\n\n  const handleClick = useCallback((event: MouseEvent<HTMLDivElement> | Event) => {\n    if (!(event.target instanceof Element)) {\n      return;\n    }\n\n    const interactiveElement = event.target.closest<HTMLButtonElement | HTMLAnchorElement>(\n      'a, button'\n    );\n\n    if (!interactiveElement) {\n      return;\n    }\n\n    const goal = interactiveElement.dataset.conductricsGoal;\n    const value = interactiveElement.dataset.conductricsValue;\n\n    if (goal) {\n      sendReward(goal, castToNumber(value));\n    }\n  }, []);\n\n  useEffect(() => {\n    if (document?.body) {\n      document.body.addEventListener('click', handleClick, { passive: true });\n    }\n\n    return () => {\n      if (document?.body) {\n        document.body.removeEventListener('click', handleClick);\n      }\n    };\n  }, [handleClick]);\n\n  // useConductricsSelection will return an object that is of type `ConductricsSelection` instead of\n  // Record<AgentID, ConductricsSelection> when there is an array with a single agent ID passed to it.\n  // We need to convert this to a record.\n  const agents =\n    isSingleAgent && isConductricsSingleSelection(selections)\n      ? {\n          [`${[agentIds[0]]}`]: selections,\n        }\n      : selections;\n\n  return (\n    <CpmConductricsAgentsContext.Provider value={agents}>\n      {children}\n    </CpmConductricsAgentsContext.Provider>\n  );\n}\n\nfunction castToNumber(value?: string | number) {\n  const v = Number(value);\n  return Number.isFinite(v) ? v : undefined;\n}\n\nfunction isConductricsSingleSelection(value: unknown): value is ConductricsSelection {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    'isLoaded' in value &&\n    'error' in value &&\n    'selection' in value\n  );\n}\n","import type { ReactNode, Dispatch, SetStateAction } from 'react';\nimport { createContext, useContext, useState } from 'react';\n\ntype Variations = Set<string>;\ntype Agents = Map<string, Variations>;\ntype ConductricsAgentsContextValue = [Agents, Dispatch<SetStateAction<Agents>>];\n\nconst noop = () => undefined;\nconst initialMap = new Map();\nconst defaultValue: ConductricsAgentsContextValue = [initialMap, noop];\n\nconst ConductricsAgentsContext = createContext(defaultValue);\n\nexport function ConductricsAgentsContextProvider({ children }: { children: ReactNode }) {\n  const state = useState<Agents>(initialMap);\n\n  return (\n    <ConductricsAgentsContext.Provider value={state}>{children}</ConductricsAgentsContext.Provider>\n  );\n}\n\nexport function useConductricsAgentsContext() {\n  const context = useContext(ConductricsAgentsContext);\n\n  if (context === undefined) {\n    throw new Error(\n      `ConductricsAgentsContext is undefined. This hook can only be used in apps that are wrapped in ConductricsAgentsContextProvider.`\n    );\n  }\n\n  return context;\n}\n\nexport function registerMappedAgents(\n  context: ConductricsAgentsContextValue,\n  mappedAgentIds: Set<string>\n) {\n  const [agents, setAgents] = context;\n  const nextAgents = cloneAgentsMap(agents);\n  let modified = false;\n\n  for (const av of mappedAgentIds) {\n    const [agentId, variation] = av.split(':');\n\n    if (!agentId || !variation) {\n      continue;\n    }\n\n    const variations = nextAgents.get(agentId);\n\n    if (!variations) {\n      nextAgents.set(agentId, new Set([variation]));\n      modified = true;\n      continue;\n    }\n\n    if (!variations.has(variation)) {\n      variations.add(variation);\n      modified = true;\n    }\n  }\n\n  if (modified) {\n    setAgents(nextAgents);\n  }\n}\n\nfunction cloneAgentsMap(agents: Agents) {\n  const clonedMap = new Map();\n\n  for (const [key, value] of agents) {\n    const clonedVariations = new Set([...value]);\n\n    clonedMap.set(key, clonedVariations);\n  }\n\n  return clonedMap;\n}\n","import type { ReactNode, Dispatch, SetStateAction } from 'react';\nimport { createContext, useState, useRef, useEffect, useContext } from 'react';\nimport type { ConductricsSelection } from '@dx-ui/framework-conductrics';\n\ntype PreviewConductricsAgents = Record<string, string | null>;\n\ntype PreviewConductricsAgentsContextValue = [\n  PreviewConductricsAgents,\n  Dispatch<SetStateAction<PreviewConductricsAgents>>\n];\nconst defaultValue = {};\nconst noop = () => undefined;\nconst defaultContextValue: PreviewConductricsAgentsContextValue = [defaultValue, noop];\n\nconst PreviewConductricsAgentsContext = createContext(defaultContextValue);\n\nconst storageKey = 'cpmPreviewAgents';\n\nexport function PreviewConductricsAgentsProvider({ children }: { children: ReactNode }) {\n  const state = useState<PreviewConductricsAgents>(defaultValue);\n  const [conductricsAgentIds, setConductricsAgentsIds] = state;\n  const initialized = useRef(false);\n\n  useEffect(() => {\n    try {\n      const conductricsAgentsStorage = sessionStorage.getItem(storageKey);\n      const previewConductricsAgents = conductricsAgentsStorage\n        ? JSON.parse(conductricsAgentsStorage)\n        : {};\n\n      if (!initialized.current) {\n        initialized.current = true;\n        setConductricsAgentsIds(previewConductricsAgents);\n      } else {\n        sessionStorage.setItem(storageKey, JSON.stringify(conductricsAgentIds));\n      }\n    } catch (error) {\n      // eslint-disable-next-line no-console\n      console.error('Failed to save conductrics agent IDs to session storage', error);\n    }\n  }, [conductricsAgentIds, setConductricsAgentsIds]);\n\n  return (\n    <PreviewConductricsAgentsContext.Provider value={state}>\n      {children}\n    </PreviewConductricsAgentsContext.Provider>\n  );\n}\n\nexport function usePreviewConductricsAgents() {\n  const context = useContext(PreviewConductricsAgentsContext);\n\n  if (context === undefined) {\n    throw new Error(\n      `ConductricsAgentsContext is undefined. This hook can only be used in apps that are wrapped in ConductricsAgentsContextProvider.`\n    );\n  }\n\n  return context;\n}\n\nexport function convertPreviewAgentsToSelections(agents: PreviewConductricsAgents) {\n  return Object.entries(agents)\n    .filter(([, variation]) => typeof variation === 'string' && !!variation)\n    .reduce<Record<string, ConductricsSelection>>(\n      (accumulator, [agentId, variation]) => ({\n        ...accumulator,\n        [agentId]: {\n          error: null,\n          isLoaded: true,\n          selection: {\n            choice: variation ?? undefined,\n          },\n        },\n      }),\n      {}\n    );\n}\n","export type Segments = Array<string>;\n\nexport type SegmentedItem = {\n  segmentIds?: Segments;\n};\n\ntype GetFilteredItemsOptions<TProps> = {\n  items: Array<TProps & SegmentedItem>;\n  segments: Segments;\n  numItems?: number;\n};\n\nexport const getUnsegmentedItems = <T extends SegmentedItem>(items: Array<T>) =>\n  items?.filter((item) => item.segmentIds?.length === 0 || !item.segmentIds) || [];\n\nexport const getFilteredItems = <T>({ segments, items, numItems }: GetFilteredItemsOptions<T>) => {\n  const filteredItems = items?.filter((item) => {\n    // Don't filter any items with 0 segments\n    if ((item.segmentIds?.length ?? 0) <= 0) {\n      return true;\n    }\n\n    return segments?.filter((segmentId) => item?.segmentIds?.includes(segmentId))?.length > 0;\n  });\n\n  return numItems ? filteredItems?.slice(0, numItems) : filteredItems;\n};\n","import { env } from '@dx-ui/framework-env';\n\nexport const isProdApp = () => env('APP_ENV') === 'prd';\n\n// Cookie name for the production Adobe Audience Manager cookie\nexport const TMS_LIVE_COOKIE_NAME = 'TMS';\n// Lower environments use this cookie\nexport const TMS_DEV_COOKIE_NAME = 'TMS_DEV';\n","import type { ReactNode, Dispatch, SetStateAction } from 'react';\nimport { createContext, useContext, useEffect, useRef, useState } from 'react';\n\nimport type { Segments } from '../utils/segments';\n\nexport type PreviewSegmentIds = Segments;\n\nexport type PreviewSegmentsContext = [\n  PreviewSegmentIds,\n  Dispatch<SetStateAction<PreviewSegmentIds>>\n];\nconst noop = () => undefined;\n\nexport const PreviewSegmentsContext = createContext<PreviewSegmentsContext>([[], noop]);\n\nconst storageKey = 'cpmPreviewSegments';\n\nexport function PreviewSegmentsContextProvider({\n  children,\n  value = [],\n  isCPMEditor = false,\n}: {\n  children: ReactNode;\n  value?: PreviewSegmentIds;\n  isCPMEditor?: boolean;\n}) {\n  if (isCPMEditor) {\n    return children;\n  }\n\n  return (\n    <PreviewSegmentsContext.Provider value={[value, noop]}>\n      {children}\n    </PreviewSegmentsContext.Provider>\n  );\n}\n\n/**\n * Save filtered segments in browser session storage. We need to do this because the Bloomreach editor reloads the page\n * when components are added/removed which would reset the state.\n */\nexport function EditorPreviewSegmentsContextProvider({ children }: { children: ReactNode }) {\n  const state = useState<PreviewSegmentIds>([]);\n  const [segmentIds, setSegmentIds] = state;\n  const initialized = useRef(false);\n\n  useEffect(() => {\n    try {\n      const segmentsStorage = sessionStorage.getItem(storageKey);\n      const previewSegments = segmentsStorage ? JSON.parse(segmentsStorage) : [];\n\n      if (!initialized.current) {\n        initialized.current = true;\n        setSegmentIds(previewSegments);\n      } else {\n        sessionStorage.setItem(storageKey, JSON.stringify(segmentIds));\n      }\n    } catch (error) {\n      // eslint-disable-next-line no-console\n      console.error('Failed to save preview segment IDs to session storage', error);\n    }\n  }, [segmentIds, setSegmentIds]);\n\n  return (\n    <PreviewSegmentsContext.Provider value={state}>{children}</PreviewSegmentsContext.Provider>\n  );\n}\n\nexport function usePreviewSegmentsContext() {\n  const previewContentContext = useContext(PreviewSegmentsContext);\n\n  if (previewContentContext === undefined) {\n    throw new Error(\n      `PreviewSegmentsContext is undefined. This component can only be used in apps that are wrapped in PreviewSegmentsContextProvider.`\n    );\n  }\n\n  return previewContentContext;\n}\n","import { useMemo, useState, useEffect } from 'react';\nimport type Cookies from 'universal-cookie';\n\nimport type { Segments, SegmentedItem } from '../utils/segments';\nimport { getFilteredItems, getUnsegmentedItems } from '../utils/segments';\nimport { TMS_LIVE_COOKIE_NAME, TMS_DEV_COOKIE_NAME, isProdApp } from '../utils/constants';\nimport { useCookies } from '../context/CookiesContext';\nimport { usePreviewSegmentsContext } from '../context/PreviewSegmentsContext';\n\nconst getSegmentCookie = (cookies: Cookies) => {\n  let cookie = '';\n\n  if (!isProdApp) {\n    cookie = cookies.get(TMS_DEV_COOKIE_NAME);\n  }\n\n  if (!cookie) {\n    cookie = cookies.get(TMS_LIVE_COOKIE_NAME);\n  }\n\n  return cookie;\n};\n\nexport const useSegments = () => {\n  /*\n   * This must use a combo of useState and useEffect, rather than useMemo.\n   *\n   * This is because the server does not have segment information, so will\n   * always render the page with unsegmented content.\n   *\n   * When the client hydrates, it will have segmentation information right from initial render.\n   * If you do use useMemo, it will hydrate in a segmented state.\n\n   * React would therefore not know to update the DOM, because the client render doesn't\n   * know anything has changed.\n   *\n   * https://reactjs.org/docs/react-dom.html#hydrate\n   *\n   */\n  const [segments, setSegments] = useState<Segments>([]);\n  const cookies = useCookies();\n\n  useEffect(() => {\n    const tms: string = getSegmentCookie(cookies) || '';\n\n    setSegments(\n      tms\n        .split(',')\n        .filter((entry) => (entry.toLowerCase() || '').startsWith('web'))\n        .map((entry) => entry.split('=')[1] || '')\n    );\n  }, [cookies]);\n\n  return segments;\n};\n\ntype UseSegmentedItemsOptions = {\n  /**\n   * Will make sure we don't exceed the number of unsegmented items by adding segmented ones in\n   * This is useful for the dynamic grids (4XGrid / Grid369), where the number of items must be the same, whether we're segmented or not\n   */\n  maintainUnsegmentedCount?: boolean;\n};\n\nexport function useSegmentedItems<T extends SegmentedItem>(\n  items: T[],\n  options: UseSegmentedItemsOptions = {}\n): T[] {\n  const cookieSegments = useSegments();\n  const [previewSegments] = usePreviewSegmentsContext();\n  const segments = previewSegments.length ? previewSegments : cookieSegments;\n\n  const numItems = options.maintainUnsegmentedCount\n    ? getUnsegmentedItems(items).length\n    : items.length;\n\n  const filteredItems = useMemo(\n    () => getFilteredItems({ items, segments, numItems }),\n    [items, numItems, segments]\n  );\n\n  return filteredItems;\n}\n\nexport function useGetFilterSegmentedItems() {\n  const cookieSegments = useSegments();\n  const [previewSegments] = usePreviewSegmentsContext();\n\n  return <T extends SegmentedItem>(items: T[], options: UseSegmentedItemsOptions = {}): T[] => {\n    const segments = previewSegments.length ? previewSegments : cookieSegments;\n\n    const numItems = options.maintainUnsegmentedCount\n      ? getUnsegmentedItems(items).length\n      : items.length;\n\n    return getFilteredItems({ items, numItems, segments });\n  };\n}\n","import type { ExperimentationConfiguration, OscDomLink } from '../adapters/types';\nimport type { AgentsSelection } from '@dx-ui/framework-conductrics';\n\nexport type ExperimentationItem = {\n  experimentationConfiguration?: ExperimentationConfiguration;\n  links?: OscDomLink[];\n  link?: OscDomLink;\n} | null;\n\n/**\n * Filters out documents and any child links if they do not match conductrics selections.\n * Items without `experimentationConfiguration` will always be returned.\n */\nexport function filterExperimentationItems<Item extends ExperimentationItem>(\n  agents: AgentsSelection,\n  shouldRenderExperiment: (\n    agents: AgentsSelection,\n    config?: CmsExperimentationConfiguration\n  ) => boolean,\n  items: Item[]\n) {\n  return items\n    .map((item) => {\n      if (!shouldRenderExperiment(agents, item?.experimentationConfiguration)) {\n        return null;\n      }\n\n      return {\n        ...item,\n        ...filterLinks(agents, shouldRenderExperiment, item),\n      };\n    })\n    .filter((item) => !!item);\n}\n\nexport function filterLinks<Item extends ExperimentationItem>(\n  agents: AgentsSelection,\n  shouldRenderExperiment: (\n    agents: AgentsSelection,\n    config?: CmsExperimentationConfiguration\n  ) => boolean,\n  item: Item\n) {\n  if (item?.links?.length) {\n    const links = item.links.filter((link) =>\n      shouldRenderExperiment(agents, link.experimentationConfiguration)\n    );\n\n    return {\n      links,\n      // Link could be undefined if all links have been filtered out\n      link: links[0],\n    };\n  }\n\n  return {};\n}\n","import { useEffect } from 'react';\nimport { useCpmMergedBrPageContext } from '../context/CpmMergedBrPageContext';\nimport { usePreviewSegmentsContext } from '../context/PreviewSegmentsContext';\nimport { usePreviewConductricsAgents } from '../context/PreviewConductricsAgents';\n\n// Bloomreach needs to render edit document buttons each time\n// we add/remove items based on filtering\nexport function useSyncBrPage() {\n  const brPage = useCpmMergedBrPageContext();\n  const [agents] = usePreviewSegmentsContext();\n  const [segments] = usePreviewConductricsAgents();\n\n  useEffect(() => {\n    brPage.sync();\n  }, [agents, segments, brPage]);\n}\n","import { effectsList } from '../mappingEngine/parseComponentParams';\n\nexport function validateCompomentParamEffects(\n  componentParams: Record<string, string | boolean | number | { [key: string]: unknown }>,\n  supportedEffects: Record<string, boolean> | undefined,\n  componentName: string,\n  addIssue: (issue: { id: string; message: string }) => void,\n  clearIssue: (id: string) => void\n): void {\n  const fullSupportedEffects: Record<string, boolean> =\n    supportedEffects ?? Object.fromEntries(effectsList.map((effect: string) => [effect, false]));\n\n  for (const effect of effectsList) {\n    if (componentParams[effect] === true && fullSupportedEffects[effect] === false) {\n      addIssue({\n        id: `${componentName}-${effect}`,\n        message: `\"${componentName}\" does not support effect ${effect}`,\n      });\n    } else {\n      clearIssue(`${componentName}-${effect}`);\n    }\n  }\n}\n","import { ParallaxProvider } from 'react-scroll-parallax';\nimport Cookies from 'universal-cookie';\nimport type { ContainerItem } from '@bloomreach/spa-sdk';\nimport { TYPE_CONTAINER_ITEM_UNDEFINED } from '@bloomreach/spa-sdk';\nimport * as React from 'react';\nimport { ErrorBoundary } from '../components/ErrorBoundary';\nimport { MappingContextProvider, useMappingContext } from './context';\nimport type {\n  CpmDataBundle,\n  CpmServerBundle,\n  CpmClientBundle,\n  KeyedMappingDefinition,\n  CpmMappedComponentData,\n  CpmPreMappedDataInstance,\n  CpmMandatoryMappingOutputFields,\n  CpmListDocumentData,\n  CpmDataDocumentData,\n} from './types';\nimport { useBrComponentContext } from '../adapters/hooks';\nimport type { BrMapping, ExtractCampaignCodeTaggingValuesFn } from '../adapters/types';\nimport EditWrapper from '../components/EditWrapper';\nimport Fallback from '../components/Fallback';\nimport { useIssues } from '../hooks/use-issues';\nimport type { MappedComponentName } from '../schema';\nimport { mappingSchema } from '../schema';\nimport { mapCpmData } from './mapCpmData';\nimport { BrPage, BrComponent } from '../adapters/components';\nimport { CookiesContext } from '../context/CookiesContext';\nimport { getIsReducedMotion } from '../utils/get-is-reduced-motion';\nimport { getTaggingValuesFromCpmAnalytics } from '../utils/add-campaign-id-to-url';\nimport { type AgentsSelection, useShouldRenderExperiment } from '@dx-ui/framework-conductrics';\nimport { useRouter } from 'next/router';\nimport { HeadingLevelProvider } from '@dx-ui/osc-heading-level';\nimport type { BrProps } from '@bloomreach/react-sdk';\nimport { CpmQueryClientProvider, CpmDataWrapper } from './DataWrapper';\nimport { useCpmMergedBrPageContext } from '../context/CpmMergedBrPageContext';\nimport { CpmConductricsAgentsProvider, useCpmConductricsAgents } from './ConductricsWrapper';\nimport { registerMappedAgents, useConductricsAgentsContext } from '../context/ConductricsAgents';\nimport {\n  usePreviewConductricsAgents,\n  convertPreviewAgentsToSelections,\n} from '../context/PreviewConductricsAgents';\nimport { useGetFilterSegmentedItems } from '../hooks/use-segments';\nimport { filterExperimentationItems, filterLinks } from '../utils/filter-experimentation-items';\nimport Head from 'next/head';\nimport { OneLinkWrapper } from '@dx-ui/osc-brands-wrappers';\nimport { useSyncBrPage } from '../hooks/use-sync-br-page';\nimport { validateCompomentParamEffects } from '../utils/validate-component-effects';\nimport type { CpmComponentDefinitionRelaxed } from './typesRelaxed';\n\nexport type CpmRendererProps<Definitions extends KeyedMappingDefinition> = {\n  cpmData: CpmDataBundle<Definitions>;\n  sectionNames: Array<string>;\n  children: (layout: Record<string, React.ReactNode>) => React.ReactNode;\n  campaignCodeTaggingValues?: ExtractCampaignCodeTaggingValuesFn;\n  mappingName?: string;\n};\n\nexport type CpmServerRendererProps = CpmRendererProps<KeyedMappingDefinition> & {\n  cpmData: CpmServerBundle<KeyedMappingDefinition>;\n  definitions: Partial<KeyedMappingDefinition>;\n};\n\nexport type CpmEditorRendererProps = CpmRendererProps<KeyedMappingDefinition> & {\n  cpmData: CpmClientBundle;\n  definitions: Partial<KeyedMappingDefinition>;\n};\n\nfunction makeCpmMappingComponent(\n  definition: CpmComponentDefinitionRelaxed,\n  campaignCodeTaggingValues: ExtractCampaignCodeTaggingValuesFn\n) {\n  const { component: RenderComponent, cpmComponentName, mapData } = definition;\n  const componentSchema = mappingSchema[cpmComponentName];\n\n  const CpmMapper = () => {\n    useSyncBrPage();\n    const pageBr = useCpmMergedBrPageContext();\n    const componentBr = useBrComponentContext();\n    const issuesCallbacks = useIssues();\n    const { mappedPage } = useMappingContext();\n    const filterSegmentedItems = useGetFilterSegmentedItems();\n    const conductricsAgentsContext = useConductricsAgentsContext();\n    const [previewAgents] = usePreviewConductricsAgents();\n    const agents = convertPreviewAgentsToSelections(previewAgents);\n    const shouldRenderExperiment = useShouldRenderExperiment();\n\n    const props = mapCpmData(\n      cpmComponentName,\n      mapData,\n      pageBr,\n      componentBr,\n      mappedPage,\n      issuesCallbacks,\n      campaignCodeTaggingValues,\n      true\n    );\n\n    registerMappedAgents(conductricsAgentsContext, props.experimentationAgentIds);\n\n    if (props.componentParams && props.mappingKind !== 'Unmapped') {\n      // compare the component specific params to universal params, flag issues for params not supported\n      validateCompomentParamEffects(\n        props.componentParams,\n        props.componentParams?.supportedEffects,\n        cpmComponentName,\n        issuesCallbacks.add,\n        issuesCallbacks.clear\n      );\n    }\n\n    // Filter out components that have agentId/variant set\n    if (\n      props.componentParams.agentId &&\n      props.componentParams.variation &&\n      !shouldRenderExperiment(agents, {\n        agentId: props.componentParams.agentId,\n        variation: props.componentParams.variation,\n      })\n    ) {\n      return null;\n    }\n\n    const componentData = filterMappedData(\n      props,\n      agents,\n      shouldRenderExperiment,\n      filterSegmentedItems,\n      props.maintainUnsegmentedCount\n    );\n\n    if (isCpmListMappingKind(componentData) && !componentData.items?.length) {\n      return null;\n    }\n\n    return (\n      <OneLinkWrapper componentParams={props.componentParams}>\n        <HeadingLevelProvider\n          isEnabled={!!props.componentParams.topHeadingLevel}\n          level={props.componentParams.topHeadingLevel}\n        >\n          <RenderComponent\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            {...(componentData as any)}\n            experimentationAgents={agents}\n          />\n        </HeadingLevelProvider>\n      </OneLinkWrapper>\n    );\n  };\n\n  return function CpmMappingWrapper(props: BrProps<ContainerItem>) {\n    return (\n      <CpmDataWrapper {...props} componentName={definition.cpmComponentName}>\n        <EditWrapper\n          displayName={definition.cpmComponentName}\n          isEditable={componentSchema.isEditable}\n          isMappedComponent={componentSchema.mappingKind !== 'Unmapped'}\n        >\n          <CpmMapper />\n        </EditWrapper>\n      </CpmDataWrapper>\n    );\n  };\n}\n\nconst UniversalProviders = ({ children }: { children: React.ReactNode }) => (\n  <ParallaxProvider isDisabled={getIsReducedMotion()}>\n    <CookiesContext.Provider value={new Cookies()}>{children}</CookiesContext.Provider>\n  </ParallaxProvider>\n);\n\nexport function makeCpmRenderer<Definitions extends KeyedMappingDefinition>(\n  definitions: Partial<Definitions>\n) {\n  return function CpmRenderer({\n    cpmData,\n    children,\n    sectionNames,\n    mappingName,\n    campaignCodeTaggingValues = getTaggingValuesFromCpmAnalytics,\n  }: CpmRendererProps<Definitions>) {\n    // Data from the CMS\n    if ('cpmPage' in cpmData) {\n      return (\n        <CpmEditorRenderer\n          campaignCodeTaggingValues={campaignCodeTaggingValues}\n          cpmData={cpmData}\n          definitions={definitions}\n          mappingName={mappingName}\n          sectionNames={sectionNames}\n        >\n          {children}\n        </CpmEditorRenderer>\n      );\n    }\n\n    // Pre-processed data from on the server for apps\n    return (\n      <CpmConductricsAgentsProvider agentIds={cpmData.experimentationAgentIds}>\n        <Head>\n          <meta name=\"dx_cpm_page\" />\n        </Head>\n        <CpmAppRender\n          campaignCodeTaggingValues={campaignCodeTaggingValues}\n          cpmData={cpmData}\n          definitions={definitions}\n          mappingName={mappingName}\n          sectionNames={sectionNames}\n        >\n          {children}\n        </CpmAppRender>\n      </CpmConductricsAgentsProvider>\n    );\n  };\n}\n\n/**\n * CpmEditorRenderer is only rendered inside the editor app (dx-cpm-lite)\n */\nfunction CpmEditorRenderer({\n  definitions,\n  cpmData,\n  children,\n  sectionNames,\n  mappingName,\n  campaignCodeTaggingValues = getTaggingValuesFromCpmAnalytics,\n}: CpmEditorRendererProps) {\n  const router = useRouter();\n  const mapping = {\n    ...Object.fromEntries(\n      Object.values(definitions).map((definition) => [\n        definition.cpmComponentName,\n        makeCpmMappingComponent(\n          definition as CpmComponentDefinitionRelaxed,\n          campaignCodeTaggingValues\n        ),\n      ])\n    ),\n    //eslint-disable-next-line @typescript-eslint/no-explicit-any\n    [TYPE_CONTAINER_ITEM_UNDEFINED]: (props: any) => (\n      <Fallback {...props} mappingName={mappingName} />\n    ),\n  } as BrMapping;\n\n  return (\n    <UniversalProviders>\n      <MappingContextProvider mappedPage={cpmData.mappedPage}>\n        <CpmQueryClientProvider token={router.query?.token as string}>\n          <BrPage\n            page={cpmData.cpmPage}\n            configuration={cpmData.bloomReachConfiguration}\n            mapping={mapping}\n          >\n            {children(\n              Object.fromEntries(\n                sectionNames.map((sectionName) => [\n                  sectionName,\n                  <BrComponent key={sectionName} path={sectionName} />,\n                ])\n              )\n            )}\n          </BrPage>\n        </CpmQueryClientProvider>\n      </MappingContextProvider>\n    </UniversalProviders>\n  );\n}\n\n/**\n * CpmAppRender is rendered inside apps like dx-brands-ui or dx-guests-ui\n */\nfunction CpmAppRender<Definitions extends KeyedMappingDefinition>({\n  definitions,\n  cpmData,\n  children,\n  sectionNames,\n}: CpmServerRendererProps) {\n  const filterSegmentedItems = useGetFilterSegmentedItems();\n  const agents = useCpmConductricsAgents();\n  const shouldRenderExperiment = useShouldRenderExperiment();\n  const { preMappedData } = cpmData;\n\n  //eslint-disable-next-line no-inner-declarations\n  function composePreMappedData(sectionName: string): React.ReactNode {\n    const section = preMappedData[sectionName];\n\n    if (!section) {\n      return null;\n    }\n\n    return (\n      <React.Fragment>\n        {Object.values(section).map(\n          (\n            {\n              componentName,\n              mappedData,\n            }: CpmPreMappedDataInstance<MappedComponentName, Definitions>,\n            i: number\n          ) => {\n            const componentDefinition = definitions[componentName];\n\n            if (!componentDefinition) {\n              return null;\n            }\n\n            // Filter out components that have agentId/variant set\n            if (\n              mappedData.componentParams.agentId &&\n              mappedData.componentParams.variation &&\n              !shouldRenderExperiment(agents, {\n                agentId: mappedData.componentParams.agentId,\n                variation: mappedData.componentParams.variation,\n              })\n            ) {\n              return null;\n            }\n\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            const RenderComponent = (componentDefinition as any).component;\n\n            const componentData = filterMappedData(\n              mappedData,\n              agents,\n              shouldRenderExperiment,\n              filterSegmentedItems,\n              mappedData.maintainUnsegmentedCount\n            );\n\n            if (isCpmListMappingKind(componentData) && !componentData.items?.length) {\n              return null;\n            }\n\n            return (\n              // eslint-disable-next-line react/no-array-index-key -- This data will come from the server, it will never change, we're safe to use indexes as keys\n              <ErrorBoundary showError={false} key={i}>\n                <OneLinkWrapper componentParams={mappedData.componentParams}>\n                  <HeadingLevelProvider\n                    isEnabled={!!mappedData.componentParams.topHeadingLevel}\n                    level={mappedData.componentParams.topHeadingLevel}\n                  >\n                    <RenderComponent {...componentData} experimentationAgents={agents} />\n                  </HeadingLevelProvider>\n                </OneLinkWrapper>\n              </ErrorBoundary>\n            );\n          }\n        )}\n      </React.Fragment>\n    );\n  }\n\n  return (\n    <UniversalProviders>\n      <MappingContextProvider mappedPage={cpmData.mappedPage}>\n        {children(\n          Object.fromEntries(\n            sectionNames.map((sectionName) => [sectionName, composePreMappedData(sectionName)])\n          )\n        )}\n      </MappingContextProvider>\n    </UniversalProviders>\n  );\n}\n\n/**\n * Filter documents and links based on clientside conductrics state & the segmentation cookie (TMS)\n */\nexport function filterMappedData<\n  ComponentName extends MappedComponentName,\n  MappingDefinition extends KeyedMappingDefinition\n>(\n  mappedData: CpmMappedComponentData<\n    ComponentName,\n    ReturnType<MappingDefinition[ComponentName]['mapData']>\n  >,\n  agents: AgentsSelection,\n  shouldRenderExperiment: (\n    agents: AgentsSelection,\n    config?: CmsExperimentationConfiguration\n  ) => boolean,\n  filterSegmentedItems: ReturnType<typeof useGetFilterSegmentedItems>,\n  shouldMaintainUnsegmentedCount: boolean\n) {\n  if (isCpmListMappingKind(mappedData)) {\n    const segmentedItems = filterSegmentedItems(Object.values(mappedData.keyedItems), {\n      maintainUnsegmentedCount: shouldMaintainUnsegmentedCount,\n    });\n\n    return {\n      ...mappedData,\n      items: filterExperimentationItems(agents, shouldRenderExperiment, segmentedItems),\n      listData: mappedData.listData\n        ? {\n            ...mappedData.listData,\n            links: mappedData.listData.links.filter((link) =>\n              shouldRenderExperiment(agents, link.experimentationConfiguration)\n            ),\n          }\n        : null,\n    };\n  }\n\n  if (isCpmDataDocumentMappingKind(mappedData) && !!mappedData.data) {\n    return {\n      ...mappedData,\n      data: {\n        ...mappedData.data,\n        ...filterLinks(agents, shouldRenderExperiment, mappedData.data),\n      },\n    };\n  }\n\n  return mappedData;\n}\n\nexport function isCpmListMappingKind<\n  ComponentName extends MappedComponentName,\n  Output extends CpmMandatoryMappingOutputFields\n>(\n  data: CpmMappedComponentData<ComponentName, Output>\n): data is CpmMappedComponentData<ComponentName, Output> & CpmListDocumentData<Output> {\n  return data.mappingKind === 'ListDocument';\n}\n\nexport function isCpmDataDocumentMappingKind<\n  ComponentName extends MappedComponentName,\n  Output extends CpmMandatoryMappingOutputFields\n>(\n  data: CpmMappedComponentData<ComponentName, Output>\n): data is CpmMappedComponentData<ComponentName, Output> & CpmDataDocumentData<Output> {\n  return data.mappingKind === 'DataDocument';\n}\n","import type * as React from 'react';\n\nimport type { CpmServerBundle, KeyedMappingDefinition } from './types';\n\nimport { makeFetchServerCpmPage } from './fetchServerCpmPage';\nimport type { CpmRendererProps } from './CpmRenderer';\nimport { makeCpmRenderer } from './CpmRenderer';\nimport type { QueryClient } from '@tanstack/react-query';\nimport type { getTaggingValuesFromCpmAnalytics } from '../utils/add-campaign-id-to-url';\nimport { serverSideCmsPageModelQuery } from '../generated/queries';\n\ntype FetchServerCpmPage<Definitions extends KeyedMappingDefinition> = (\n  queryClient: QueryClient,\n  contentPath: string,\n  localeCode: string,\n  pathname: string,\n  sectionNames: string[],\n  extractCampaignCodeTaggingValues?: typeof getTaggingValuesFromCpmAnalytics\n) => Promise<CpmServerBundle<Definitions> | null>;\n\nexport function generateCpmAppInterface<Definitions extends KeyedMappingDefinition>(\n  definitions: Partial<Definitions>\n): {\n  fetchServerCpmPage: FetchServerCpmPage<Definitions>;\n  CpmRenderer: React.FC<CpmRendererProps<Definitions>>;\n} {\n  const CpmRenderer = makeCpmRenderer<Definitions>(definitions);\n  const fetchServerCpmPage = makeFetchServerCpmPage(\n    definitions as KeyedMappingDefinition,\n    serverSideCmsPageModelQuery\n  );\n\n  return {\n    fetchServerCpmPage,\n    CpmRenderer,\n  };\n}\n","import type { Configuration } from '@bloomreach/spa-sdk';\nimport { env } from '@dx-ui/framework-env';\n\ntype HttpClient = Configuration['httpClient'];\ntype HttpRequest = Parameters<HttpClient>[0];\ntype HttpResponse = ReturnType<HttpClient>;\n\nexport const makeClientBrConfiguration = (contentPath: string): Configuration => {\n  const [_, channelName, ...pathSlugs] = contentPath.split('/');\n  const path = '/' + pathSlugs.join('/');\n\n  // Related to editor mode preview, not dx-preview header, however same effect\n  const queryString = contentPath.split('?')[1];\n  const previewSlug = new URLSearchParams(queryString).get('preview');\n\n  const endpoint = [\n    env('CMS_BASE_URL'),\n    channelName,\n    ...(previewSlug ? ['/', previewSlug] : []),\n    '/resourceapi',\n  ].join('');\n\n  return {\n    debug: true, // gives console.debug messages, might be useful in editor\n    endpoint: `${endpoint}?_maxreflevel=0`,\n    httpClient,\n    request: { path },\n  } satisfies Configuration;\n};\n\nexport const httpClient: Configuration['httpClient'] = async ({\n  method,\n  url: _url,\n  headers: requestHeaders,\n  data: requestData,\n}: HttpRequest): HttpResponse => {\n  const url = new URL(_url);\n  const params = new URLSearchParams(url.search);\n\n  // We need *all* references when adding/removing documents from components\n  if (params.get('_hn:type') === 'component-rendering') {\n    params.delete('_maxreflevel');\n  }\n\n  url.search = params.toString();\n\n  const headers = Object.fromEntries(\n    Object.entries(requestHeaders ?? {}).map(([key, val]) => [key, val + ''])\n  );\n\n  const fetchResponse = await fetch(url, {\n    method,\n    headers,\n    credentials: 'include',\n    body: requestData ? requestData : undefined,\n  });\n\n  const data = await fetchResponse.json();\n\n  return { data };\n};\n","import { useState, useEffect } from 'react';\nimport { initialize } from '@bloomreach/spa-sdk';\n\nimport { makeClientBrConfiguration } from '../fetching/make-client-br-configuration';\nimport type { CpmClientBundle } from './types';\nimport { extractMappedPage } from './cpmMappedPage';\nimport { logError } from '@dx-ui/framework-logger';\n\ntype ClientCpmPageError = { errorTitle: string; statusCode: 404 | 500 };\ntype Output =\n  | (CpmClientBundle & { blueprint: string; pageType: string })\n  | ClientCpmPageError\n  | null;\n\nexport function useClientCpmPage(contentPath: string, localeCode: string): Output {\n  const [output, setOutput] = useState<Output>(null);\n\n  useEffect(() => {\n    (async () => {\n      try {\n        setOutput(null);\n\n        if (contentPath === undefined) {\n          setOutput({\n            statusCode: 404,\n            errorTitle: 'Page Not Found',\n          });\n          return;\n        }\n\n        const bloomReachConfiguration = makeClientBrConfiguration(contentPath);\n        const cpmPage = await initialize(bloomReachConfiguration);\n        const cpmPageModel = cpmPage.toJSON();\n        const mappedPage = extractMappedPage(contentPath, localeCode, cpmPage);\n        const blueprint = (cpmPageModel?.channel?.info?.props?.blueprintName as string) ?? '';\n        const rootDocument = cpmPage.getContent(cpmPageModel?.root.$ref);\n        // @ts-expect-error - need to update types to reflect actual data\n        const pageType = rootDocument?.name ?? '';\n\n        setOutput({\n          blueprint,\n          pageType,\n          mappedPage,\n          cpmPage,\n          bloomReachConfiguration,\n          contentPath,\n          __cpmPageModel: cpmPageModel,\n          experimentationAgentIds: [],\n        });\n      } catch (error) {\n        // eslint-disable-next-line no-console\n        console.error(error);\n\n        if (\n          error instanceof Error &&\n          error.name === 'TypeError' &&\n          /Cannot read properties of undefined/.test(error.message)\n        ) {\n          // eslint-disable-next-line no-console\n          console.error(\n            'Failed to initialise Bloomreach. This can be caused by invalid JSON in the page response.'\n          );\n        }\n\n        setOutput({\n          statusCode: 500,\n          errorTitle: 'Unavailable',\n        });\n      }\n    })().catch((error) => logError('USE_CLIENT_CPM_PAGE', error, 'failed in useclientcpmpage()'));\n  }, [contentPath, localeCode]);\n\n  return output;\n}\n","import type { MappedComponentName } from '../schema';\nimport type {\n  CpmMappedComponentData,\n  CpmComponentDefinition,\n  CpmMappingFunction,\n  CpmMandatoryMappingOutputFields,\n} from './types';\n\nexport function createCpmComponentDefinition<\n  ComponentName extends MappedComponentName,\n  MappingOutput extends CpmMandatoryMappingOutputFields\n>(\n  cpmComponentName: ComponentName,\n  mapData: CpmMappingFunction<ComponentName, MappingOutput>,\n  component: React.ComponentType<\n    CpmMappedComponentData<\n      ComponentName,\n      ReturnType<CpmMappingFunction<ComponentName, MappingOutput>>\n    >\n  >\n): CpmComponentDefinition<ComponentName, MappingOutput> {\n  return {\n    cpmComponentName,\n    mapData,\n    component,\n  };\n}\n","//TODO: unify with ErrorBlock\nexport const GenericError = ({\n  description1,\n  description2 = '',\n}: {\n  description1: string;\n  description2: string;\n}) => {\n  return (\n    <div className=\"m-4 flex h-screen flex-col items-start justify-start p-4 lg:items-center lg:justify-center\">\n      <h2 className=\"mb-10 text-2xl font-bold md:mb-20\" data-e2e=\"pageSubTitle\">\n        Error: {description1}\n      </h2>\n      <h3>{description2}</h3>\n    </div>\n  );\n};\n","import { BrManageContentButton } from '@bloomreach/react-sdk';\nimport { useBrPageContextSafe } from '../adapters/hooks';\n\n/**\n * Allows rendering of a dynamic orange \"manage content\" button. This will only be enabled in the CMS (Bloomreach) via\n * the CPM editor app (dx-cpm-lite).\n */\nexport function useCreateManageContentButton() {\n  // This *won't* throw in apps that are missing the Bloomreach context provider\n  const page = useBrPageContextSafe();\n\n  return function CpmManageContentButton($ref?: string) {\n    // Context will only exist in the editor app\n    if (!page || typeof page.getContent !== 'function' || !$ref) {\n      return null;\n    }\n\n    // Bloomreach needs to know what content should be edited\n    const content = page.getContent($ref);\n\n    if (!content) {\n      return null;\n    }\n\n    return (\n      <div className=\"relative\" data-testid=\"cms-control\">\n        <BrManageContentButton content={content} />\n      </div>\n    );\n  };\n}\n","import type { AssetVariantNames } from '../adapters/types';\nimport type { StructuredAsset, ImageAsset } from '../transformers/enhancers';\n\ntype StructuredAssetWithAspectRatioGuaranteed<AspectRatio extends AssetVariantNames> =\n  StructuredAsset & {\n    aspectRatios: Partial<Record<AssetVariantNames, ImageAsset>> & Record<AspectRatio, ImageAsset>;\n  };\n\nexport function selectFirstAssetWithAspectRatio<AspectRatio extends AssetVariantNames>(\n  aspectRatio: AssetVariantNames,\n  cpmAssets: (StructuredAsset | undefined)[]\n): StructuredAssetWithAspectRatioGuaranteed<AspectRatio> | null {\n  for (const asset of cpmAssets) {\n    if (asset?.aspectRatios?.[aspectRatio]) {\n      return asset as StructuredAssetWithAspectRatioGuaranteed<AspectRatio>;\n    }\n  }\n\n  return null;\n}\n\nexport function selectLastAssetWithAspectRatio<AspectRatio extends AssetVariantNames>(\n  aspectRatio: AssetVariantNames,\n  cpmAssets: (StructuredAsset | undefined)[]\n): StructuredAssetWithAspectRatioGuaranteed<AspectRatio> | null {\n  const reversed = [...cpmAssets].reverse();\n  for (const asset of reversed) {\n    if (asset?.aspectRatios?.[aspectRatio]) {\n      return asset as StructuredAssetWithAspectRatioGuaranteed<AspectRatio>;\n    }\n  }\n\n  return null;\n}\n","import type { ReactNode } from 'react';\nimport cn from 'classnames';\n\nimport type { HeadingAnalysis, HeadingAnalysisNode } from '../../hooks/use-heading-analyzer';\nimport styles from './HeadingAnalyzer.module.css';\n\nexport function HeadingAnalyzer({ analysis }: { analysis: HeadingAnalysis }) {\n  if (!analysis.headings?.length) {\n    return <p className=\"p-4\">No headings detected</p>;\n  }\n\n  return (\n    <div className=\"max-h-[30rem] min-h-40 overflow-scroll\">\n      <HeadingList>\n        {analysis.headings.map((heading) => (\n          <HeadingListItem key={heading.text} heading={heading} />\n        ))}\n      </HeadingList>\n    </div>\n  );\n}\n\nfunction HeadingList({ children }: { children: ReactNode }) {\n  return (\n    <ul className=\"relative pl-4 before:absolute before:left-2 before:top-0 before:h-full before:w-px before:bg-[#101010]\">\n      {children}\n    </ul>\n  );\n}\n\nfunction HeadingListItem({ heading }: { heading: HeadingAnalysisNode }) {\n  const handleClick = () => {\n    const $el = document.querySelector(`[data-heading-analyzer-index=\"${heading.index}\"]`);\n    const outlineCssClass = styles.outline ?? '';\n\n    $el?.scrollIntoView({ behavior: 'auto', block: 'start', inline: 'center' });\n    $el?.classList.add(outlineCssClass);\n\n    setTimeout(() => {\n      $el?.classList.remove(outlineCssClass);\n    }, 4000);\n  };\n\n  const textStyle = cn('block text-left', { 'text-danger': heading.hasError });\n  const headingDescription = (\n    <>\n      <span className=\"font-bold\">H{heading.headingLevel}:</span> {heading.text}\n    </>\n  );\n\n  return (\n    <li\n      aria-label={`H${heading.headingLevel}: ${heading.text}`}\n      className=\"relative px-4 py-2 before:absolute before:-left-2 before:top-5 before:h-px before:w-4 before:bg-[#101010]\"\n    >\n      {heading.isMissing ? (\n        <span className={textStyle}>{headingDescription}</span>\n      ) : (\n        <button className={textStyle} type=\"button\" onClick={handleClick}>\n          {headingDescription}\n        </button>\n      )}\n      {heading.children?.length ? (\n        <div className=\"mt-4\">\n          <HeadingList>\n            {heading.children.map((child) => (\n              <HeadingListItem key={child.text} heading={child} />\n            ))}\n          </HeadingList>\n        </div>\n      ) : null}\n    </li>\n  );\n}\n","import { useEffect, useState } from 'react';\n\nexport type HeadingAnalysisNode = {\n  headingLevel: number;\n  index: number;\n  text: string;\n  children?: HeadingAnalysisNode[];\n  hasError?: boolean;\n  isMissing?: boolean;\n};\n\nexport type HeadingAnalysis = { headings: HeadingAnalysisNode[] | undefined; issueCount: number };\n\nconst config = { childList: true, subtree: true };\nconst defaultValue = { headings: [], issueCount: 0 };\n\nexport function useHeadingAnalyzer(rootElementId = '#__next') {\n  const [analysis, setAnalysis] = useState<HeadingAnalysis>(defaultValue);\n\n  useEffect(() => {\n    const container = document.querySelector(rootElementId);\n\n    if (!container) {\n      return;\n    }\n\n    setAnalysis(createHeadingTree(container));\n\n    const observer = new MutationObserver(() => setAnalysis(createHeadingTree(container)));\n    observer.observe(container, config);\n\n    return () => {\n      observer.disconnect();\n    };\n  }, [rootElementId]);\n\n  return analysis;\n}\n\nconst MISSING_HEADING_TEXT = 'Heading is missing text content!';\n\nfunction createHeadingTree(doc: Document | Element) {\n  const rootNode: HeadingAnalysisNode = { headingLevel: 0, index: -1, text: '', children: [] };\n  const tree = [rootNode];\n  let issueCount = 0;\n\n  doc.querySelectorAll('h1, h2, h3, h4, h5, h6').forEach(($heading, index) => {\n    if ($heading.getAttribute('data-heading-analyzer-ignore')) {\n      return;\n    }\n\n    const headingLevel = parseInt($heading.tagName.slice(1));\n    const text = $heading.textContent ?? MISSING_HEADING_TEXT;\n    const hasError = text === MISSING_HEADING_TEXT;\n    const node: HeadingAnalysisNode = {\n      headingLevel,\n      index,\n      text,\n      children: [],\n      hasError,\n    };\n\n    if (hasError) {\n      issueCount++;\n    }\n\n    while (tree.length && tree[tree.length - 1]!.headingLevel >= headingLevel) {\n      tree.pop();\n    }\n\n    while (tree.length < node.headingLevel) {\n      const missingHeadingLevelNode: HeadingAnalysisNode = {\n        headingLevel: tree.length,\n        index: -tree.length,\n        text: 'Missing heading level!',\n        children: [],\n        hasError: true,\n        isMissing: true,\n      };\n      tree[tree.length - 1]!.children?.push(missingHeadingLevelNode);\n      tree.push(missingHeadingLevelNode);\n      issueCount++;\n    }\n\n    $heading.setAttribute('data-heading-analyzer-index', `${index}`);\n\n    tree[tree.length - 1]!.children?.push(node);\n    tree.push(node);\n  });\n\n  return {\n    issueCount,\n    headings: rootNode.children,\n  };\n}\n","export * as GeneratedQueries from './generated/queries';\n\nexport type {\n  CpmClientBundle,\n  CpmComponentDefinition,\n  CpmDataBundle,\n  CpmMappingFunction,\n  CpmMappingFunctionInput,\n  CpmMappedComponentData,\n  ComponentParamsProperty,\n  CpmPreMappedDataInstance,\n  CpmServerBundle,\n  KeyedMappingDefinition,\n  UniversalComponentParams,\n} from './mappingEngine/types';\n\nexport type {\n  CpmMappingFunctionRelaxed,\n  CpmMappingFunctionInputRelaxed,\n} from './mappingEngine/typesRelaxed';\n\nexport { generateCpmAppInterface } from './mappingEngine/generateCpmAppInterface';\nexport { useClientCpmPage } from './mappingEngine/useClientCpmPage';\nexport { createCpmComponentDefinition } from './mappingEngine/createCpmComponentDefinition';\nexport { applyMapData } from './mappingEngine/mapCpmData';\nexport type { CpmMappedPage } from './mappingEngine/cpmMappedPage';\n\nexport type { MappingSchema, MappedComponentName, MappedComponent } from './schema';\nexport { mappingSchema } from './schema';\n\nexport type { StructuredAsset } from './transformers/enhancers';\nexport type { AnalyticsTagging } from './adapters/types';\nexport type { AssetVariants } from './adapters/types';\nexport type { EditorialData } from './adapters/types';\nexport { ErrorBoundary } from './components/ErrorBoundary';\nexport { GenericError } from './components/GenericError';\nexport { transformLink } from './transformers/transform-links';\nexport { getPagePrimaryImage, getArticleTitle } from './fetching/get-page-seo-data';\nexport { useCreateManageContentButton } from './hooks/use-manage-content-button';\nexport { getTaggingValuesFromCpmAnalytics } from './utils/add-campaign-id-to-url';\nexport { removeNullyFromArray } from './utils/remove-nully-from-array';\nexport {\n  selectFirstAssetWithAspectRatio,\n  selectLastAssetWithAspectRatio,\n} from './utils/select-asset-with-aspect-ratio';\n\nexport type {\n  CpmPageModel,\n  BrComponent,\n  BrPage,\n  AwardData,\n  BaseData,\n  BrandData,\n  BrandNavigationListData,\n  CmsDomLink,\n  EventData,\n  FaqData,\n  ImageData,\n  ListData,\n  LocationData,\n  MessageData,\n  NavigationListData,\n  OffersData,\n  OscDomLink,\n  PageData,\n  PartnerData,\n  PeopleData,\n  PlaceData,\n  PolicyData,\n  PropertyAmenityData,\n  PropertyImageCompoundData,\n  PropertyMessageData,\n  PropertyProfileData,\n  RoomData,\n  StoryData,\n  AppDataResult,\n  AddCampaignCodeToUrl,\n  CpmNavigationList,\n  CpmBrandNavigationItem,\n  CpmBrandNavigationList,\n  CpmNavigationListDocument,\n  ExperimentationConfiguration,\n} from './adapters/types';\n\nexport {\n  useEditorPageSegmentsContext,\n  EditorPageSegmentsContextProvider,\n} from './context/EditorPageSegmentationContext';\nexport { useSegmentedItems } from './hooks/use-segments';\n\nexport { useCookies, CookiesContext } from './context/CookiesContext';\nexport {\n  usePreviewSegmentsContext,\n  PreviewSegmentsContextProvider,\n  EditorPreviewSegmentsContextProvider,\n} from './context/PreviewSegmentsContext';\n\nexport * from './generated/queries';\nexport type { CmsPageModelQuery } from './generated/types';\n\nexport { CpmQueryClientProvider } from './mappingEngine/DataWrapper';\nexport { HeadingAnalyzer } from './components/HeadingAnalyzer/HeadingAnalyzer';\nexport { useHeadingAnalyzer } from './hooks/use-heading-analyzer';\nexport { CpmMappingError } from './mappingEngine/CpmMappingError';\nexport {\n  ConductricsAgentsContextProvider,\n  useConductricsAgentsContext,\n} from './context/ConductricsAgents';\nexport {\n  PreviewConductricsAgentsProvider,\n  usePreviewConductricsAgents,\n} from './context/PreviewConductricsAgents';\nexport { effectsList } from './mappingEngine/parseComponentParams';\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      isB2BMember\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) {\n      if (this.webGuestMetadataCookie.webGuestTokenType === 'tempLogin') {\n        // user exited OTP flow early and needs new app token\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      } else if (this.getIsLoggedIn()) {\n        this.guestInfoPromise = this.fetchGuestInfo();\n      }\n    } else {\n      // old wso2AuthToken flow\n      if (this.authenticationCookie?.guestId) {\n        try {\n          if (this.shouldRefreshToken()) {\n            this.guestInfoPromise = this.refreshLoggedInUserToken().then(() =>\n              this.fetchGuestInfo()\n            );\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.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        // unsure which flow we are in, so call /token\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  /**\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    const endpoint = `${\n      this.authEndpoint\n    }/dx-customer/auth/applications/token${this.getAppNameParam()}`;\n    this.appTokenPromise = fetch(endpoint, {\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    }).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  const authClient = 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  if (isBrowser && !window.authClient) {\n    window.authClient = authClient;\n  }\n\n  return authClient;\n}\n","import type { GuestQuery } from './gql/types';\n\ntype GetGuestNameProps = {\n  guestInfo?: GuestQuery['guest'] | null;\n  ignoreLocalizedName?: boolean;\n};\n\nexport const getGuestFirstName = ({ guestInfo, ignoreLocalizedName }: GetGuestNameProps) => {\n  const guestNameObj = guestInfo?.personalinfo?.name;\n  if (ignoreLocalizedName) {\n    return guestNameObj?.firstName || '';\n  }\n  return guestNameObj?.nameLocalizations?.[0]?.firstName || guestNameObj?.firstName || '';\n};\n\nexport const getGuestLastName = ({ guestInfo, ignoreLocalizedName }: GetGuestNameProps) => {\n  const guestNameObj = guestInfo?.personalinfo?.name;\n  if (ignoreLocalizedName) {\n    return guestNameObj?.lastName || '';\n  }\n  return guestNameObj?.nameLocalizations?.[0]?.lastName || guestNameObj?.lastName || '';\n};\n\nexport const getGuestNameFmt = ({ guestInfo, ignoreLocalizedName }: GetGuestNameProps) => {\n  const guestNameObj = guestInfo?.personalinfo?.name;\n  if (ignoreLocalizedName) {\n    return guestNameObj?.nameFmt || '';\n  }\n  return guestNameObj?.nameLocalizations?.[0]?.nameFmt || guestNameObj?.nameFmt || '';\n};\n\nexport const getGuestNameObj = (\n  props: GetGuestNameProps\n):\n  | (Omit<\n      NonNullable<GuestQuery['guest']>['personalinfo']['name'],\n      'nameLocalizations' | 'nameFmt'\n    > & {\n      nameFmt: string;\n    })\n  | undefined => {\n  return props.guestInfo\n    ? {\n        nameFmt: getGuestNameFmt(props),\n        firstName: getGuestFirstName(props),\n        lastName: getGuestLastName(props),\n      }\n    : undefined;\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 { logError } from '@dx-ui/framework-logger';\n\ndeclare global {\n  interface Window {\n    conductricsSels?: string;\n    conductricsClient?: ClientApi | null;\n    Conductrics?: {\n      ClientApi: {\n        new (args?: ConstructorParams): ClientApi;\n      };\n    };\n    conductricsSelsPath?: string;\n  }\n}\n\nexport type AgentStatus = ValuesOf<typeof Status>;\n\nexport const Status = {\n  OK: 'ok',\n  PENDING: 'p',\n} as const;\n\nexport type Arg = {\n  g?: string;\n  v?: number;\n  a?: string;\n  s?: AgentStatus;\n};\n\ntype ClientApi = {\n  exec: (args: Arg[], cb: (err: Error | false, result?: Result | null) => void) => void;\n};\n\nexport type ConstructorParams = {\n  traits?: string[];\n  dataLayer?: string;\n  inputs?: { [key: string]: string | number | boolean };\n};\n\nexport type Selection = {\n  choice: string | undefined;\n  status?: AgentStatus;\n  meta?: {\n    [key: string]: number | string | boolean;\n  };\n};\n\n/**\n * @see https://support.conductrics.com/v3.0/docs/runtime-api-commands\n * @description myconductrics\n */\nexport type Result = {\n  sels?: {\n    [key: string]: string;\n  };\n  items?: {\n    /**\n     * @description name of agent\n     */\n    a?: string;\n    /**\n     * @description choice the agent made\n     */\n    c?: string;\n    /**\n     * @description meta data on the choice\n     */\n    md?: {\n      [key: string]: number | string | boolean;\n    };\n    /**\n     * @description policy the selected agent was made with\n     * p for paused selections (if the agent does not currently have status \"running\")\n     * r for random selections (random agents always make random selections)\n     * f for fixed selections (the result of a targeted selection rule that you've set up)\n     * a for adaptive selections (when an agent selects the \"best\" selection using predictive analytics)\n     * c for control selections (adaptive agents set aside a small percentage of visitors as a control group, who always get the default variation)\n     * s for sticky selections (if a session has already been assigned a selection previously)\n     * b for bot selections (if a bot or search crawler is detected on our side, the default selection is returned but the request is not counted in reporting).\n     */\n    p?: string;\n    /**\n     * @name status\n     * @description \"ok\" or \"p\" for pending\n     */\n    s?: AgentStatus;\n  }[];\n};\n\nexport type Agent = { agentId: string; status?: AgentStatus };\n\nexport function isApiLoaded() {\n  if (!isBrowser) {\n    return null;\n  }\n  return !!window?.Conductrics;\n}\n\nexport function initConductrics(params?: ConstructorParams) {\n  if (!isBrowser) {\n    return null;\n  }\n  const conductricsClient =\n    (window?.Conductrics && new window.Conductrics.ClientApi(params)) || null;\n  window.conductricsClient = conductricsClient;\n  return null;\n}\n\nfunction getApi() {\n  if (!isBrowser) {\n    return null;\n  }\n  return window.conductricsClient;\n}\n\n/**\n * Add selections to window object for external tracking\n * adds test1Name=choice;\n */\nexport function globalizeSelections(choice?: string, agent?: string) {\n  const parts = window.conductricsSels?.split(';').filter(Boolean) || [];\n\n  // remove duplicates\n  const filteredParts = parts.filter((part) => part.split('=')?.[0] !== agent);\n\n  filteredParts.push(`${agent}=${choice}`);\n  window.conductricsSels = filteredParts.join(';');\n}\n\n/**\n * \"Normalize\" the passed in agents to match the conductrics API\n */\nfunction normalizeAgents(agent: string | Agent[], s?: AgentStatus) {\n  return typeof agent === 'string'\n    ? [{ a: agent, ...(!!s && { s }) }]\n    : agent.map(({ agentId, status }) => ({\n        a: agentId,\n        ...(!!status && { s: status }),\n      }));\n}\n\nexport function getConductricsSelection(\n  agent: string | Agent[],\n  status?: AgentStatus\n): Promise<Result | null | undefined> {\n  const conductricsApi = getApi();\n  if (!conductricsApi) {\n    return Promise.resolve(null);\n  }\n\n  return new Promise((resolve, reject) => {\n    const agents = normalizeAgents(agent, status);\n    conductricsApi?.exec(agents, (error, result) => {\n      if (error) {\n        reject(error);\n      }\n      resolve(result);\n    });\n  });\n}\n\nexport function setConductricsSelectionOK(agent: string | Agent[]) {\n  return getConductricsSelection(agent, Status.OK);\n}\n\nexport function sendRewardAsync(reward: string, value?: number): Promise<void> {\n  const conductricsApi = getApi();\n  if (!conductricsApi) {\n    return Promise.resolve();\n  }\n\n  return new Promise((resolve, reject) => {\n    conductricsApi?.exec([{ g: reward, v: value }], (error) => {\n      if (error) {\n        logError('sendRewardError', error.message, `Reward ID: ${reward}`);\n        reject(error);\n        return;\n      }\n      resolve();\n    });\n  });\n}\n\nexport function sendReward(reward: string, value?: number) {\n  const conductricsApi = getApi();\n  if (!conductricsApi) {\n    return;\n  }\n\n  conductricsApi?.exec([{ g: reward, v: value }], () => null);\n}\n","import { isBrowser } from '@dx-ui/utilities-is-browser';\nimport type { Selection, ConstructorParams, Agent, Result, AgentStatus } from './conductrics';\nimport {\n  isApiLoaded,\n  getConductricsSelection,\n  initConductrics,\n  globalizeSelections,\n} from './conductrics';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useEffect } from 'react';\n\nexport type ConductricsSelection = {\n  selection: Selection | null;\n  isLoaded: boolean;\n  error: Error | null;\n};\n\nexport type AgentsSelection = Record<string, ConductricsSelection>;\n\ntype StateTransformer = (agentId: string) => ConductricsSelection;\n\ntype ConductricsResult = Result | null | undefined;\n\nexport type ClientState = {\n  isInitialized: boolean;\n  isLoading: boolean;\n  error: null | Error;\n};\n\nconst getInitKey = () => 'conductricsInit' + (isBrowser ? window.location.pathname : '');\n\nconst queryKeys = {\n  initKey: getInitKey(),\n  agentKey: 'conductricsSelections',\n} as const;\n\nconst defaultClientState: ClientState = {\n  isInitialized: false,\n  isLoading: true,\n  error: null,\n};\n\nfunction reduceAgents(\n  agents: Agent[],\n  stateOrTransformer: ConductricsSelection | StateTransformer\n): AgentsSelection {\n  return agents.reduce((acc, { agentId }) => {\n    const state =\n      typeof stateOrTransformer === 'function' ? stateOrTransformer(agentId) : stateOrTransformer;\n    return { ...acc, [agentId]: state };\n  }, {});\n}\n\nfunction useConductricsClientQuery() {\n  return useQuery<ClientState>({\n    queryKey: [getInitKey()],\n    initialData: defaultClientState,\n    gcTime: Infinity,\n    staleTime: Infinity,\n    enabled: false,\n  });\n}\n\nfunction useConductricsSelectionQuery(agents: Agent[], status?: AgentStatus) {\n  const { data: clientState } = useConductricsClientQuery();\n  const {\n    data,\n    isSuccess,\n    error: queryError,\n    isLoading: queryIsLoading,\n  } = useQuery<ConductricsResult, Error, ConductricsResult>({\n    queryKey: [queryKeys.agentKey, agents, status],\n    queryFn: () => getConductricsSelection(agents, status),\n    enabled: clientState.isInitialized,\n    retry: false,\n  });\n\n  useEffect(() => {\n    if (isSuccess && data?.sels) {\n      Object.entries(data.sels).forEach(([agentId, choice]) => {\n        globalizeSelections(choice, agentId);\n      });\n    }\n  }, [isSuccess, data]);\n\n  const error = clientState.error || queryError;\n  const isLoading = clientState.isLoading || (clientState.isInitialized && queryIsLoading);\n  return { data, error, isLoading };\n}\n\nfunction useSelection(agents: Agent[], status?: AgentStatus) {\n  const isSingleAgent = agents?.length === 1;\n  const { data, error, isLoading } = useConductricsSelectionQuery(agents, status);\n\n  const isLoaded = !isLoading;\n  const defaultState: ConductricsSelection = { selection: null, isLoaded, error };\n  const getSelection = (agentId: string) => {\n    const item = data?.items?.find(({ a }) => a === agentId);\n    return {\n      choice: data?.sels?.[agentId],\n      status: item?.s,\n      meta: item?.md,\n    };\n  };\n\n  // Bail early if the conductrics API is not available\n  if (error) {\n    return isSingleAgent ? defaultState : reduceAgents(agents, defaultState);\n  }\n\n  const selectedAgentsState = reduceAgents(agents, (agentId: string) => {\n    const selection = getSelection(agentId);\n    return { error, isLoaded, selection };\n  });\n\n  const agentsState: ConductricsSelection | AgentsSelection = isLoaded\n    ? selectedAgentsState\n    : reduceAgents(agents, defaultState);\n\n  // If there's one selection, send back the specific agent's state due to the function signature\n  const firstAgent = agents[0];\n  return isSingleAgent && firstAgent ? agentsState[firstAgent?.agentId] : agentsState;\n}\n\n// Supports singular or multiple agents (such as MVT)\nexport function useConductricsSelection(\n  agentId: string,\n  status?: AgentStatus\n): ConductricsSelection;\nexport function useConductricsSelection(agents: Agent[]): AgentsSelection;\nexport function useConductricsSelection(agentId: string | Agent[], status?: AgentStatus) {\n  const agents = typeof agentId === 'string' ? [{ agentId, status }] : agentId;\n  return useSelection(agents, status);\n}\n\nexport function useInitConductrics() {\n  const client = useQueryClient();\n\n  // Prime the cache\n  useConductricsClientQuery();\n\n  if (isBrowser) {\n    if (window.conductricsSelsPath !== window.location.pathname) {\n      window.conductricsSelsPath = window.location.pathname;\n      window.conductricsSels = undefined;\n    }\n  }\n\n  return (params?: ConstructorParams) => {\n    if (isApiLoaded()) {\n      initConductrics(params);\n      client.setQueryData([getInitKey()], {\n        isInitialized: true,\n        isLoading: false,\n        error: null,\n      });\n    } else {\n      client.setQueryData([getInitKey()], {\n        isInitialized: false,\n        isLoading: false,\n        error: new Error('api-load-error'),\n      });\n    }\n  };\n}\n","import type { SupportedLanguage } from '@dx-ui/framework-i18n';\nimport type { AgentsSelection } from '../conductrics-hooks';\n\nconst CONTROL_VARIANT = 'a';\n\n/**\n * Determines if an element should be rendered based on its `CmsExperimentationConfiguration`,\n * the current locale, and Conductrics agent selection.\n * */\nexport function shouldRenderExperiment({\n  agents,\n  config,\n  locale,\n  supportedAgentLocales = ['en'],\n}: {\n  // Record of Conductrics selections\n  agents: AgentsSelection;\n  // Experiment configuration containing agentId and variation (this is set via the CMS)\n  config?: CmsExperimentationConfiguration;\n  // Active locale\n  locale: SupportedLanguage;\n  // Languages that are supported by the Conductrics Agent for the test e.g. the test should run on both `en` & `es`. Defaults to `en`.\n  supportedAgentLocales?: Array<SupportedLanguage>;\n}) {\n  // Item has no or missing config so we should always render it\n  if (!config || !config.agentId || !config.variation) {\n    return true;\n  }\n\n  const { agentId, variation } = config;\n  const isControlVariant = variation === CONTROL_VARIANT;\n  const agent = agents[agentId];\n  const choice = agent?.selection?.choice?.toLowerCase();\n\n  /**\n   * Render the control variant if any on the conditions below are true:\n   * 1) The locale is unsupported\n   * 2) The agent is still loading\n   * 3) The agent has no selection\n   * 4) The agent has had an error while loading\n   */\n  if (!supportedAgentLocales.includes(locale) || !agent?.isLoaded || !choice || !!agent?.error) {\n    return isControlVariant;\n  }\n\n  return choice === variation;\n}\n","import { useRouter } from 'next/router';\nimport type { SupportedLanguage } from '@dx-ui/framework-i18n';\nimport type { AgentsSelection } from '../conductrics-hooks';\nimport { shouldRenderExperiment } from './should-render-experiment';\n\n/**\n * Returns a function that determines if an element should be rendered based on:\n * 1. The presence of a `CmsExperimentationConfiguration` property\n * 2. The active locale (via `useRouter`)\n *\n * @note For unsupported locales, the control variant (A) is rendered by default.\n * To enable experiments in other languages, include ALL locales in the supportedAgentLocales array.\n */\nexport function useShouldRenderExperiment(\n  supportedAgentLocales: Array<SupportedLanguage> = ['en']\n) {\n  const router = useRouter();\n  // OneLink uses `?content=<locale>` to override the app locale\n  const locale = (router.query?.content as string | undefined) || router.locale || 'en';\n\n  return (agents: AgentsSelection, config?: CmsExperimentationConfiguration) => {\n    return shouldRenderExperiment({\n      agents,\n      config,\n      locale,\n      supportedAgentLocales,\n    });\n  };\n}\n","export * from './conductrics';\nexport * from './conductrics-hooks';\nexport * from './conductrics-server';\nexport * from './util/use-should-render-experiment';\n","export * from './lib';\n","/**\n * Defaults that all apps should import.\n */\nexport const defaultPublicVars = [\n  'APP_ENV',\n  'APP_NAME',\n  'APP_VER',\n  'DX_AUTH_API_CLIENT_URI',\n  'DX_AUTH_API_CUSTOMER_APP_ID',\n  'DX_AUTH_UI',\n  'DX_GRAPHQL_CLIENT_URI',\n  'EXTERNAL_HGV_PROGRAM_DETAILS_URL',\n  'HONORS_JOIN_URL',\n  'OHW_BASE_URL',\n  'RUMCS_CAPTURE_CUSTOM_ERRORS',\n  'TRACKING_SEED_FILE',\n  'TMTP_MANAGE_FAMILY_AND_FRIENDS_LINK',\n  'EXTERNAL_TMTP_PROGRAM_DETAILS_URL',\n  'ANALYTICS_OSC_TRACKING_ENABLED',\n  'DISABLE_LOGGER_CONSOLE_ERROR',\n] as const;\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 './onelink-utils';\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","import { addDays, startOfWeek } from 'date-fns';\n\nconst weekStartsOnLocale: Record<string, 0 | 1> = {\n  en: 0,\n  ar: 0,\n  bg: 1,\n  cs: 1,\n  da: 1,\n  fi: 1,\n  fr: 1,\n  id: 1,\n  nl: 1,\n  de: 1,\n  it: 1,\n  ja: 1,\n  ko: 0,\n  no: 1,\n  pl: 1,\n  pt: 1,\n  ro: 1,\n  ru: 1,\n  es: 1,\n  sv: 1,\n  th: 0,\n  tr: 1,\n  'zh-hans': 1,\n  'zh-hant': 1,\n};\n\nexport const fullDateFormat = (date: Date, locale: Intl.Locale) =>\n  date.toLocaleDateString(locale, { dateStyle: 'full' });\n\nexport const weekStartsOn = (locale: Intl.Locale) =>\n  locale.baseName ? weekStartsOnLocale[locale.baseName] : 0;\n\nexport const getDaysOfWeek = (locale: Intl.Locale) => {\n  const startDate = startOfWeek(new Date(), { weekStartsOn: weekStartsOn(locale) });\n  const days = [...Array(7)].map((n, i) => {\n    const day = addDays(startDate, i);\n    return {\n      short: day.toLocaleDateString(locale, { weekday: 'short' }),\n      long: day.toLocaleDateString(locale, { weekday: 'long' }),\n    };\n  });\n  return days;\n};\n\n/**\n * Converts 12-hour time format string (e.g., \"4:00 PM\") to 24-hour time format (e.g., \"16:00\")\n *\n * @param time - Time string in 12-hour format with AM/PM modifier (e.g., \"4:00 PM\")\n * @returns Time string in 24-hour format (e.g., \"16:00\")\n *\n * @example\n * convertTimeTo24HourFormat(\"4:00 PM\") // returns \"16:00\"\n * convertTimeTo24HourFormat(\"4 pm\") // returns \"16:00\"\n * convertTimeTo24HourFormat(\"12:00 AM\") // returns \"00:00\"\n * convertTimeTo24HourFormat(\"12 am\") // returns \"00:00\"\n * convertTimeTo24HourFormat(\"11:30 AM\") // returns \"11:30\"\n * convertTimeTo24HourFormat(\"11:30 am\") // returns \"11:30\"\n */\nexport function convertTimeTo24HourFormat(time: string) {\n  const [timePart, modifier] = time.split(' ');\n  const [hoursStr, minutes = '00'] = timePart?.split(':') || [];\n  let hours = hoursStr;\n  if (hours === '12') {\n    hours = '00';\n  }\n  if (hours && modifier?.toLowerCase() === 'pm') {\n    hours = String(parseInt(hours, 10) + 12);\n  }\n  return `${hours}:${minutes}`;\n}\n\nconst localeDays = {\n  sunday: '2023-01-01T00:00:00',\n  monday: '2023-01-02T00:00:00',\n  tuesday: '2023-01-03T00:00:00',\n  wednesday: '2023-01-04T00:00:00',\n  thursday: '2023-01-05T00:00:00',\n  friday: '2023-01-06T00:00:00',\n  saturday: '2023-01-07T00:00:00',\n};\n\nexport type LocaleDayNameKey = keyof typeof localeDays;\n\nexport function getLocaleDayName(locale: Intl.Locale, dayNameKey: LocaleDayNameKey) {\n  return new Date(localeDays[dayNameKey]).toLocaleDateString(locale, { weekday: 'long' });\n}\n","export const getIntlNumberLocale = (locale: string) => {\n  if (locale === 'ar') {\n    return 'ar-ae';\n  }\n  return locale;\n};\n\nfunction getNumberFormatOptions(locale: string) {\n  if (locale === 'ar') {\n    return { useGrouping: false };\n  }\n  return { useGrouping: true };\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(\n        getIntlNumberLocale(locale),\n        options || getNumberFormatOptions(locale)\n      ).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 { 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","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","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","/* istanbul ignore file */\nexport * from './app-with-translation';\nexport * from './date-time-utils';\nexport * from './locale-utils';\nexport * from './number-utils';\nexport * from './onelink-utils';\nexport * from './string-utils';\nexport * from './translated-url';\nexport * from './types';\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 type { UserLocation } from '../location-util';\n\nexport const sessionKey = 'userLocation';\n\nexport const initialUserSession: UserLocation = {\n  city: undefined,\n  continent: undefined,\n  country: undefined,\n  coordinate: undefined,\n  region: undefined,\n  zipCode: undefined,\n};\n\nexport const initialContext = {\n  ...initialUserSession,\n  isLoading: false,\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  clear: () => {},\n};\n","import { createContext } from 'react';\nimport { initialContext } from './utils/constants';\nimport type { UserLocation } from './location-util';\n\nexport type ILoadable = {\n  isLoading: boolean;\n};\n\nexport type LocationState = {\n  clear: () => void;\n  lastUpdated?: Date;\n} & ILoadable &\n  UserLocation;\n\nexport const LocationContext = createContext<LocationState>(initialContext);\n","type IExpire<T> = {\n  expireDate: number;\n  instance: T;\n};\n\n/**\n * @param ttl milliseconds\n */\nexport const saveToSession = <T>(object: T, key: string, ttl: number) => {\n  const env: IExpire<T> = {\n    instance: object,\n    expireDate: new Date().getTime() + ttl,\n  };\n  window.sessionStorage.setItem(key, JSON.stringify(env));\n};\n\nexport const retrieveFromSession = <T>(key: string) => {\n  const env: { expireDate: Date; instance: T } | null = window.sessionStorage.getItem(key)\n    ? JSON.parse(window.sessionStorage.getItem(key) as string)\n    : null;\n\n  if (!env) return null;\n\n  const ttl = new Date(env.expireDate).getTime() - new Date().getTime();\n\n  if (ttl <= 0) {\n    window.sessionStorage.removeItem(key);\n    return null;\n  }\n  return env.instance;\n};\n","export type Coordinate = {\n  latitude: number;\n  longitude: number;\n};\n\nexport type UserLocation = {\n  addressBiasCoordinate?: Coordinate;\n  addressBiasDegrees?: number;\n  city?: string;\n  continent?: string;\n  coordinate?: Coordinate;\n  country?: string;\n  marketingBiasCoordinate?: Coordinate;\n  marketingBiasDegrees?: number;\n  refreshTTL?: number;\n  region?: string;\n  searchBiasCoordinate?: Coordinate;\n  searchBiasDegrees?: number;\n  zipCode?: string;\n};\n\n/**\n * Generates the coordinate bias based on the zone degrees provided. Defaults to a zone degree of 10.\n *\n * @param coordinate\n * @param biasDegrees\n */\nexport function getCoordinateBias(coordinate: Coordinate, biasDegrees = 10): Coordinate {\n  const calcBias = (point: number): number =>\n    Math.floor(point / biasDegrees) * biasDegrees + biasDegrees / 2;\n  return {\n    latitude: calcBias(coordinate.latitude),\n    longitude: calcBias(coordinate.longitude),\n  };\n}\n","/* eslint-disable no-console */\nimport * as React from 'react';\nimport type { LocationState } from './location-context';\nimport { LocationContext } from './location-context';\nimport { initialContext, sessionKey } from './utils/constants';\nimport { saveToSession, retrieveFromSession } from './utils/session';\nimport type { UserLocation } from './location-util';\nimport { getCoordinateBias } from './location-util';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nexport const LocationProviderConsumer = LocationContext.Consumer;\n\nexport const LocationProvider = ({ children }: { children: React.ReactNode }) => {\n  const [state, dispatch] = React.useState<LocationState>({\n    ...initialContext,\n    isLoading: true,\n  });\n\n  const clear = () => {\n    window.sessionStorage.removeItem(sessionKey);\n    dispatch({ ...initialContext, isLoading: true });\n    console.info('cleared userLocation');\n  };\n\n  const CLIENT_LOCATION_URI = '/en/clientLocation/';\n\n  React.useEffect(() => {\n    if (!isBrowser) return;\n\n    let userLocation: UserLocation | null = null;\n\n    try {\n      const session = retrieveFromSession<UserLocation>(sessionKey);\n      if (session) {\n        userLocation = session;\n      }\n    } catch (err: any) {\n      console.info('Unable to find session info with key:', sessionKey, err?.message);\n    }\n\n    // if in local then dispatch local\n    if (userLocation) {\n      dispatch({ ...userLocation, isLoading: false, clear });\n    } else {\n      fetch(CLIENT_LOCATION_URI)\n        .then((response: Response) => response.json())\n        .then((data) => {\n          userLocation = data.userLocation as UserLocation;\n          if (userLocation.coordinate) {\n            // Default the search bias degrees to 10 if not provided, then calculate the search bias coordinate\n            userLocation.searchBiasDegrees = userLocation.searchBiasDegrees || 10;\n            userLocation.searchBiasCoordinate = getCoordinateBias(\n              userLocation.coordinate,\n              userLocation.searchBiasDegrees\n            );\n            // Default the address bias degrees to 10 if not provided, then calculate the address bias coordinate\n            userLocation.addressBiasDegrees = userLocation.addressBiasDegrees || 1;\n            userLocation.addressBiasCoordinate = getCoordinateBias(\n              userLocation.coordinate,\n              userLocation.addressBiasDegrees\n            );\n            // Default the marketing bias degrees to 4 if not provided, then calculate the marketing bias coordinate\n            userLocation.marketingBiasDegrees = userLocation.marketingBiasDegrees || 4;\n            userLocation.marketingBiasCoordinate = getCoordinateBias(\n              userLocation.coordinate,\n              userLocation.marketingBiasDegrees\n            );\n          }\n          // Default the refresh TTL to 1 hour if not provided, and set the user location into session storage\n          userLocation.refreshTTL = userLocation.refreshTTL || 3600;\n          saveToSession(userLocation, sessionKey, userLocation.refreshTTL * 1000);\n          dispatch({ ...userLocation, isLoading: false, clear });\n        })\n        .catch((error) => {\n          console.info('Unable to fetch location information:', error?.message);\n          dispatch({ ...initialContext, clear });\n        });\n    }\n  }, [CLIENT_LOCATION_URI]);\n\n  return <LocationContext.Provider value={state}>{children}</LocationContext.Provider>;\n};\n\nexport function useLocation() {\n  const context = React.useContext(LocationContext);\n  if (context === undefined) {\n    throw new Error(`useLocation must be used within a LocationProvider`);\n  }\n  return context;\n}\n","/* istanbul ignore file */\nexport * from './location-provider';\nexport * from './location-context';\nexport * from './location-util';\n","export * from './lib';\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, normalizeError(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(normalizeError(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\ntype ErrorValue = string | Error | Record<string, unknown>;\n\nfunction stringifyValue(value: ErrorValue) {\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\nfunction normalizeError(error: ErrorValue) {\n  const errorString = stringifyValue(error);\n  const firstLeftArrow = errorString.indexOf('<');\n  return (firstLeftArrow > 0 ? errorString.slice(0, firstLeftArrow) : errorString).trim();\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","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 { 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","export function filterCookies(cookingString: string, allowedCookies: string[]): string {\n  const result = cookingString.split('; ');\n  return result\n    .filter((cookie) => {\n      const [key] = cookie.split('=');\n      if (!key) return false;\n      return allowedCookies.includes(key);\n    })\n    .join('; ');\n}\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';\nimport { filterCookies } from './cookie-forward';\nimport { env } from '@dx-ui/framework-env';\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 appVersion = env('APP_VER', appName ? `${appName}:0.0.1` : '');\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  if (serverResponse?.req?.headers['cookie']) {\n    headers['cookie'] = filterCookies(serverResponse.req.headers['cookie'], [\n      'webGuestToken',\n      'webGuestMetadata',\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    appVersion,\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      },\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        {process.env.NODE_ENV === 'development' && (\n          <ReactQueryDevtools initialIsOpen={false} {...devtoolsOptions} />\n        )}\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","import type { BrandCode } from './types';\n\ntype BrandCodeToBrandNameMapper = {\n  [key in keyof BrandCode]: string | null;\n};\nexport const brandCodeToBrandNameMapper: BrandCodeToBrandNameMapper = {\n  CH: 'conrad-hotels',\n  DT: 'doubletree-by-hilton',\n  ES: 'embassy-suites',\n  EY: 'livsmart-studios',\n  GI: 'hilton-garden-inn',\n  GU: 'graduate-hotels',\n  GV: 'hilton-grand-vacations',\n  HH: null,\n  HI: 'hilton-hotels',\n  HP: 'hampton-by-hilton',\n  HT: 'home2-suites',\n  HW: 'homewood-suites',\n  LX: 'small-luxury-hotels-slh',\n  ND: 'nomad-hotels',\n  OL: 'lxr-hotels',\n  OU: 'autocamp-stays',\n  PE: 'spark-by-hilton',\n  PO: 'tempo-by-hilton',\n  PY: 'canopy-by-hilton',\n  QQ: 'curio-collection',\n  RU: 'tru-by-hilton',\n  SA: 'signia-hilton',\n  UA: 'motto-by-hilton',\n  UP: 'tapestry-collection',\n  WA: 'waldorf-astoria',\n  WW: null,\n};\n","export type Dates = {\n  arrivalDate?: Date | null;\n  flexibleDates?: boolean;\n  departureDate?: Date | null;\n};\n\nexport type BaseUriBuilderParams<T1, T2> = {\n  urlParams?: T1;\n  relative?: boolean;\n  locale?: string;\n  path?: T2;\n  brandCode?: keyof BrandCode;\n  baseUrl?: string;\n  brandSlug?: string;\n  primarySlug?: string;\n} & ({ brandCode?: never } | { brandSlug?: never });\n\nexport type BrandCode = {\n  CH: 'CH';\n  DT: 'DT';\n  ES: 'ES';\n  EY: 'EY';\n  GI: 'GI';\n  GU: 'GU';\n  GV: 'GV';\n  HH: 'HH';\n  HI: 'HI';\n  HP: 'HP';\n  HT: 'HT';\n  HW: 'HW';\n  LX: 'LX';\n  ND: 'ND';\n  OL: 'OL';\n  OU: 'OU';\n  PE: 'PE';\n  PO: 'PO';\n  PY: 'PY';\n  QQ: 'QQ';\n  RU: 'RU';\n  SA: 'SA';\n  UA: 'UA';\n  UP: 'UP';\n  WA: 'WA';\n  WW: 'WW';\n};\n\nexport type Locale = {\n  ar: 'ar';\n  cs: 'cs';\n  da: 'da';\n  de: 'de';\n  en: 'en';\n  es: 'es';\n  fi: 'fi';\n  fr: 'fr';\n  it: 'it';\n  ja: 'ja';\n  ko: 'ko';\n  nl: 'nl';\n  no: 'no';\n  pl: 'pl';\n  pt: 'pt';\n  ro: 'ro';\n  ru: 'ru';\n  sv: 'sv';\n  th: 'th';\n  tr: 'tr';\n  zh: 'zh';\n};\n\nexport type Person = { age: number | null };\nexport type Adult = Partial<Person>;\nexport type Child = Person;\n\nexport type Room = {\n  adults: Adult[] | number;\n  children: Child[] | number;\n};\n\nexport type CBPRoom = {\n  adults: Adult[];\n  children: Child[];\n};\n\nexport type Rates = {\n  aarp?: boolean;\n  corporateAccount?: string;\n  employeeRate?: boolean;\n  friendsAndFamilyRate?: boolean;\n  government?: boolean;\n  groupCode?: string;\n  offerId?: number | null;\n  ownerHGVRate?: boolean;\n  ownerVIPRate?: boolean;\n  pnd?: string | null;\n  promoCode?: string;\n  requestedRatesOnly?: boolean;\n  senior?: boolean;\n  smbRate?: boolean | null;\n  travelAgents?: boolean;\n  tripleA?: boolean;\n  usePoints?: boolean;\n  [prop: string]: string | boolean | number | null | undefined;\n};\n\nexport const RatePlanCodes = {\n  AAA: 'HCAAA',\n  AARP: 'HCARP',\n  GOVERNMENT_MILITARY: 'GDSGOV',\n  SENIOR: 'GDSSNR',\n  USE_POINTS: 'HCSMR',\n} as const;\n\nexport const RatePlanParamKeys = {\n  aarp: 'aarpRate',\n  corporateAccount: 'corporateCode',\n  employeeRate: 'employeeRate',\n  friendsAndFamilyRate: 'friendsAndFamilyRate',\n  fromId: 'fromId',\n  government: 'governmentOrMilitaryRate',\n  groupCode: 'groupCode',\n  offerId: 'offerId',\n  ownerHGVRate: 'ownerHGVRate',\n  ownerVIPRate: 'ownerVIPRate',\n  pnd: 'pnd',\n  promoCode: 'promotionCode',\n  requestedRatesOnly: 'requestedRatesOnly',\n  senior: 'seniorRate',\n  smbRate: 'smbRate',\n  spec_plan: 'spec_plan',\n  travelAgentId: 'travelAgentId',\n  travelAgents: 'travelAgentRate',\n  tripleA: 'aaaRate',\n  usePoints: 'redeemPts',\n} as const;\n\nexport const sortByValues = [\n  'distance',\n  'points_ascending',\n  'points_descending',\n  'price_ascending',\n  'price_descending',\n  'brand',\n] as const;\nexport type SortByValues = (typeof sortByValues)[number];\nexport function isSortByValue(someString: string): someString is SortByValues {\n  return Boolean(sortByValues.find((value) => someString === value));\n}\n\nexport const tripAdvisorRatings = [\n  'fiveAndUp',\n  'fourAndUp',\n  'threeAndUp',\n  'twoAndUp',\n  'allRatings',\n] as const;\nexport type TripAdvisorRatings = (typeof tripAdvisorRatings)[number];\nexport function isTripAdvisorRating(someString: string): someString is TripAdvisorRatings {\n  return Boolean(tripAdvisorRatings.find((rating) => rating === someString));\n}\n","import type { Room, Rates, Dates, Person, CBPRoom } from '../types';\nimport { RatePlanParamKeys } from '../types';\nimport { format } from 'date-fns';\n\n/**\n * create a safe query parameter string for specialRates based parameters\n * @param rates {Rates}\n * @returns string\n */\nexport const buildRatesParams = (params: URLSearchParams, rates: Rates) => {\n  Object.keys(rates).forEach((rateKey) => {\n    if (rates[rateKey]) {\n      params.append(\n        RatePlanParamKeys[rateKey as keyof typeof RatePlanParamKeys],\n        encodeURI(rates[rateKey] as string)\n      );\n    }\n  });\n};\n\n/**\n * Maps the original Room type to the newer room type that includes child ages for CBP (child based pricing)\n * @param rooms\n * @returns CBPRoom[]\n */\nconst mapRoomsArrayToCBPFormat = (rooms: Room[]) =>\n  rooms.reduce((accum, curr) => {\n    // if either param is old occuptant number then convert to array of objects, otherwise use new CBP value that is passed\n    const adults: Person[] =\n      typeof curr.adults === 'number' ? Array(curr.adults).fill({ age: undefined }) : curr.adults;\n    const children: Person[] =\n      typeof curr.children === 'number'\n        ? Array(curr.children).fill({ age: undefined })\n        : curr.children;\n    accum.push({ adults, children });\n    return accum;\n  }, [] as CBPRoom[]);\n\n/**\n * create a safe query parameter string for rooms based query parameters\n * @param rooms\n * @returns string\n */\nexport const buildRoomsParams = (params: URLSearchParams, numRooms?: number, rooms?: Room[]) => {\n  if (!rooms && !numRooms) return;\n\n  if (rooms) {\n    const normalizedRooms = mapRoomsArrayToCBPFormat(rooms);\n    if (normalizedRooms.length !== numRooms) {\n      params.append('numRooms', String(numRooms));\n    }\n\n    // single room logic param names differ from multiroom\n    else if (normalizedRooms.length === 1 && normalizedRooms[0]) {\n      params.append('numRooms', String(normalizedRooms.length));\n      params.append('numAdults', String(normalizedRooms[0].adults.length));\n      params.append('numChildren', String(normalizedRooms[0].children.length));\n      params.append(\n        'room1ChildAges',\n        normalizedRooms[0].children\n          .filter((c) => c.age !== undefined)\n          .map((c) => c.age)\n          .join(',')\n      );\n      params.append(\n        'room1AdultAges',\n        normalizedRooms[0].adults\n          .filter((a) => a.age !== undefined)\n          .map((a) => a.age)\n          .join(',')\n      );\n    } else {\n      params.append('numRooms', String(normalizedRooms.length));\n      normalizedRooms.forEach((room, i) => {\n        const currentRoom = normalizedRooms[i];\n        params.append(`room${i + 1}NumAdults`, String(room.adults.length));\n        params.append(`room${i + 1}NumChildren`, String(room.children.length));\n        if (currentRoom)\n          params.append(\n            `room${i + 1}AdultAges`,\n            currentRoom.adults\n              .filter((a) => a.age !== undefined)\n              .map((a) => a.age)\n              .join(',')\n          );\n        if (currentRoom)\n          params.append(\n            `room${i + 1}ChildAges`,\n            currentRoom.children\n              .filter((c) => c.age !== undefined)\n              .map((c) => c.age)\n              .join(',')\n          );\n      });\n    }\n  } else if (numRooms) params.append('numRooms', String(numRooms));\n};\n\n/**\n * Creates a safe query parameter string for dates based query parameters.\n * @param dates\n * @returns string\n */\n\nexport const buildDatesParams = (params: URLSearchParams, dates?: Dates) => {\n  if (!dates) return;\n\n  if (dates?.arrivalDate) params.append('arrivalDate', format(dates?.arrivalDate, 'yyyy-MM-dd'));\n  if (dates?.departureDate)\n    params.append('departureDate', format(dates?.departureDate, 'yyyy-MM-dd'));\n  if (dates?.flexibleDates !== undefined)\n    params.append('flexibleDates', dates?.flexibleDates.toString());\n};\n\nexport type GetGroupOrTransientSubpathProps = {\n  groupsPath: string;\n  numAttendees: number;\n  numRooms: number;\n  transientPath: string;\n};\n/**\n *\n * @param groupPath - path that corresponds to 10+ or group booking (example: group-search, group)\n * @param transientPath - path that corresponds to <10 or transient booking (example: search, reservations)\n * @param numRooms - number of rooms requested (typically for hotel rooms)\n * @param numAttendees - number of attendees requested (typically for meeting room)\n */\nexport const getGroupOrTransientSubpath = ({\n  groupsPath,\n  numAttendees,\n  numRooms,\n  transientPath,\n}: GetGroupOrTransientSubpathProps) => {\n  return numRooms >= 10 || numAttendees > 0 ? groupsPath : transientPath;\n};\n","import type {\n  Room,\n  Rates,\n  Dates,\n  SortByValues,\n  BaseUriBuilderParams,\n  TripAdvisorRatings,\n} from '../types';\nimport { brandCodeToBrandNameMapper } from '../constants';\nimport {\n  buildRoomsParams,\n  buildRatesParams,\n  buildDatesParams,\n  getGroupOrTransientSubpath,\n} from '../uri-builder-utils/uri-builder.utils';\n\nexport type Path =\n  | 'go-hilton'\n  | 'hgv-max'\n  | 'find-hotels'\n  | 'go-hilton-find-hotels'\n  | 'hgv-max-find-hotels'\n  | 'search'\n  | 'group-search';\n\nexport type SearchUrlParams = {\n  adjoiningRoomStay?: boolean;\n  availableHotelsOnly?: boolean;\n  content?: string;\n  dates?: Dates;\n  displayCurrency?: string;\n  f_amenityIds?: string[];\n  f_attributeIds?: string[];\n  f_brandCodes?: string[];\n  f_price?: [number, number];\n  f_tripAdvisorRatings?: TripAdvisorRatings;\n  maxPoints?: number | null;\n  numAttendees?: number | null;\n  numRooms?: number | null;\n  placeId?: string | null;\n  programAccountId?: number | null;\n  query?: string;\n  rates?: Rates;\n  rooms?: Room[];\n  sessionToken?: string;\n  sortBy?: SortByValues;\n  specialRateTokens?: string[];\n  cid?: string;\n};\n\n/**\n * Returns an OHW formatted search URL\n *\n * @param {SearchUrlParams} urlParams\n * @param {boolean} relative - use relative pathing (defaults to absolute pathing)\n * @param {keyof Locale}  locale Language locale (defaults to en)\n * @param {Path}  path (optional) search path ('go-hilton' | 'find-hotels' | 'go-hilton-find-hotels' | 'search' | 'group-search'). Defaults to 'search'\n * @param {keyof BrandCode}  brandCode (optional) Hilton brand code\n *\n *  The following paths map to following search experiences\n *  go-hilton => search with tmtp options\n *  find-hotels => search zero experience\n *  go-hilton-find-hotels => search zero with tmtp options\n *  search => main search page\n *  group-search => 10+ search experience\n *\n *  The following url parameters apply to find-hotels, search, go-hilton and go-hilton-find-hotels\n *\n *  brandCode\n *\n *  locale\n *\n *  query\n *\n *  placeId\n *\n *  arrivalDate\n *\n *  departureDate\n *\n *  datesFlex\n *\n *  sessionToken\n *\n *  rooms\n *\n *  aarp\n *\n *  corporateAccount\n *\n *  employeeRate\n *\n *  friendsAndFamilyRate\n *\n *  government\n *\n *  groupCode\n *\n *  offerId\n *\n *  ownerVIPRate\n *\n *  ownerHGVRate\n *\n *  pnd\n *\n *  promoCode\n *\n *  senior\n *\n *  travelAgents\n *\n *  tripleA\n *\n *  usePoints\n *\n *  specialRateTokens\n *\n *  requestedRatesOnly\n *\n *  displayCurrency\n *\n *  adjoiningRoomStay\n *\n *  maxPoints\n *\n *  sortBy\n *\n *  f_amenityIds\n *\n *  f_attributeIds\n *\n *  f_brandCodes\n *\n *  f_price\n *\n *  f_tripAdvisorRatings\n *\n *  availableHotelsOnly\n *\n * The following url parameters apply to group search (10+).\n *\n *  query\n *\n *  brandCode\n *\n *  arrivalDate\n *\n *  departureDate\n *\n *  numRooms\n *\n *  numAttendees\n *\n *  sessionToken\n *\n *  placeId\n */\nexport const searchUriBuilder = ({\n  brandCode = 'HH',\n  locale = 'en',\n  path = 'search',\n  urlParams,\n  relative,\n  baseUrl,\n  brandSlug,\n  primarySlug,\n}: BaseUriBuilderParams<SearchUrlParams, Path>) => {\n  const {\n    adjoiningRoomStay,\n    availableHotelsOnly,\n    content,\n    dates,\n    displayCurrency,\n    f_amenityIds,\n    f_attributeIds,\n    f_brandCodes,\n    f_price,\n    f_tripAdvisorRatings,\n    maxPoints,\n    numAttendees,\n    numRooms,\n    placeId,\n    programAccountId,\n    query = '',\n    rates,\n    rooms,\n    sessionToken,\n    sortBy,\n    specialRateTokens,\n    cid,\n  } = urlParams || {};\n\n  // use relative pathing if enabled or if user does not provide baseUrl\n  let url = relative || (!relative && !baseUrl) ? `/${locale}` : `${baseUrl}/${locale}`;\n  const isDateless = !(dates?.arrivalDate || dates?.departureDate);\n  const basePath = getGroupOrTransientSubpath({\n    numAttendees: numAttendees ?? 0,\n    numRooms: numRooms ?? 0,\n    transientPath: path,\n    groupsPath: 'group-search',\n  });\n\n  // switch between different search paths, depending on desired experience\n  switch (basePath) {\n    case 'go-hilton':\n      url += '/go-hilton/search/';\n      break;\n    case 'hgv-max':\n      url += '/hgv-max/search/';\n      break;\n    case 'find-hotels':\n      if (primarySlug) {\n        url += `/${primarySlug}`;\n      }\n      url += '/search';\n      if (brandSlug) {\n        url += `/${brandSlug}`;\n      }\n      url += '/find-hotels/';\n      break;\n    case 'go-hilton-find-hotels':\n      url += '/go-hilton/find-hotels/';\n      break;\n    case 'hgv-max-find-hotels':\n      url += '/hgv-max/search/find-hotels/';\n      break;\n    case 'group-search':\n      url += '/group-search/';\n      break;\n    case 'search':\n    default:\n      url += '/search/';\n  }\n\n  //only append brand if brandcode actually should be its own search page\n  if (basePath === 'search' && brandCodeToBrandNameMapper[brandCode])\n    url += `${brandCodeToBrandNameMapper[brandCode]}/`;\n\n  //if no url params just return url\n  if (!urlParams || !Object.keys(urlParams)) return url;\n\n  const params = new URLSearchParams();\n\n  const filteredSpecialRateTokens = specialRateTokens?.filter(\n    (specialRate) => specialRate !== 'HCARP'\n  );\n  if (placeId) params.append('placeId', placeId);\n  if (dates) buildDatesParams(params, dates);\n  // these parameters dont apply to group search (10+)\n  if (basePath !== 'group-search') {\n    if (rooms) buildRoomsParams(params, numRooms ? numRooms : rooms.length, rooms);\n    if (rates) buildRatesParams(params, rates);\n    if (filteredSpecialRateTokens)\n      params.append('specialRateTokens', filteredSpecialRateTokens.join(','));\n    if (displayCurrency) params.append('displayCurrency', displayCurrency);\n    if (adjoiningRoomStay) params.append('adjoiningRoomStay', String(adjoiningRoomStay));\n    if (isDateless && typeof maxPoints === 'number')\n      params.append('maxPoints', maxPoints.toString());\n    if (sortBy) params.append('sortBy', sortBy);\n    if (f_amenityIds) params.append('f-amenityIds', f_amenityIds.join(','));\n    if (f_attributeIds && f_attributeIds?.length)\n      params.append('f-attributeIds', f_attributeIds.join(','));\n    if (f_brandCodes) params.append('f-brandCodes', f_brandCodes.join(','));\n    if (f_price) params.append('f-price', f_price.join(','));\n    if (f_tripAdvisorRatings) params.append('f-tripAdvisorRatings', f_tripAdvisorRatings);\n    if (availableHotelsOnly) params.append('availableHotelsOnly', String(availableHotelsOnly));\n    if (programAccountId) params.append('programAccountId', programAccountId.toString());\n  }\n  // these parameters only apply to group search (10+ search)\n  else {\n    if (brandCode) params.append('brandCode', brandCode);\n    if (numRooms) params.append('numRooms', numRooms.toString());\n    if (numAttendees) params.append('attendee_count', numAttendees.toString());\n  }\n  // passthrough parameters that apply to all searches\n  if (sessionToken) params.append('sessionToken', sessionToken);\n  if (cid) params.append('cid', cid);\n  if (content) params.append('content', content);\n\n  const queryString = params.toString();\n\n  return `${url}?query=${encodeURIComponent(query)}${queryString ? '&' : ''}${queryString}`;\n};\n","export * from './search-uri-builder';\n","import type { BaseUriBuilderParams } from '../types';\nimport { brandCodeToBrandNameMapper } from '../constants';\nimport type { SearchUrlParams } from '../search-uri-builder';\n\nexport type BasePath = 'locations' | 'meetings-events';\n\nexport type LocationUrlParams = Omit<SearchUrlParams, 'dates' | 'dateRange'> & {\n  redeemPts?: boolean;\n  location?: LocationCoords;\n  bounds?: Bounds;\n  geocodeType?: string;\n  placeUri?: string | null;\n};\n\ntype LocationCoords = {\n  latitude: number;\n  longitude: number;\n};\n\ntype Bounds = {\n  northeast: {\n    latitude: number;\n    longitude: number;\n  };\n  southwest: {\n    latitude: number;\n    longitude: number;\n  };\n};\n/**\n * Returns an OHW formatted search URL\n *\n * @param {boolean}  relative Use relative pathing  (defaults to absolute pathing)\n * @param {string}  locale Language locale (defaults to en)\n * @param {BasePath}  BasePath (optional) dream BasePath ('locations' | 'meetings-events'). Defaults to 'locations'\n * @param {keyof BrandCode}  brandCode (optional) Hilton brand code (defaults to HH)\n *\n *  The following paths map to following search experiences\n *  locations => default locations page\n *  meetings-event => Venue search ( 10+ dream ) experience\n *\n *  The following url parameters apply to locations page (dream pages)\n *\n *  brandName = ''\n *\n *  locale = 'en'\n *\n *  location = ''\n *\n *  displayCurrency = 'LOCAL'\n *\n *  redeemPts = false\n *\n *  The following url parameters apply to meeting-events page (venue pages)\n *\n *  locale = 'en'\n *\n *  location = ''\n *\n *  sortBy\n *\n *  f_amenityIds\n *\n *  f_brandCodes\n *\n *  f_price\n *\n *  f_tripAdvisorRatings\n *\n */\nexport const locationUriBuilder = ({\n  locale = 'en',\n  path = 'locations',\n  brandCode,\n  urlParams,\n  relative,\n  baseUrl,\n}: BaseUriBuilderParams<LocationUrlParams, BasePath>) => {\n  const {\n    displayCurrency,\n    redeemPts,\n    sessionToken,\n    sortBy,\n    f_amenityIds,\n    f_brandCodes,\n    f_price,\n    f_tripAdvisorRatings,\n    adjoiningRoomStay,\n    placeUri,\n    placeId,\n    location,\n    geocodeType,\n    bounds,\n    query,\n    cid,\n    content,\n  } = urlParams || {};\n\n  // use relative pathing if enabled or if user does not provide baseUrl\n  let fullPath =\n    relative || (!relative && !baseUrl)\n      ? `/${locale}`\n      : //if the base URL has a trailing slash, do not append a second one\n        `${baseUrl}${baseUrl?.endsWith('/') ? '' : '/'}${locale}`;\n\n  // switch between different dream paths depending on desired experience\n  switch (path) {\n    case 'meetings-events':\n      fullPath += '/meetings-events/';\n      break;\n    case 'locations':\n    default:\n      fullPath += '/locations/';\n  }\n\n  if (placeUri) {\n    fullPath += placeUri.endsWith('/') ? placeUri : `${placeUri}/`;\n  }\n\n  const isBrandCodeMatchedWithFilter =\n    !f_brandCodes || (f_brandCodes.length === 1 && f_brandCodes[0] === brandCode);\n  // brandname parameter should be added to the uri slug to dream locations pages\n  if (\n    brandCode &&\n    !!brandCodeToBrandNameMapper[brandCode] &&\n    path === 'locations' &&\n    isBrandCodeMatchedWithFilter\n  ) {\n    fullPath += `${brandCodeToBrandNameMapper[brandCode]}/`;\n  }\n\n  const params = new URLSearchParams();\n  if (path !== 'meetings-events') {\n    if (displayCurrency) params.set('displayCurrency', displayCurrency);\n    if (redeemPts) params.append('redeemPts', String(redeemPts));\n    if (sortBy) params.append('sortBy', sortBy);\n    if (f_amenityIds) params.append('f-amenityIds', f_amenityIds.join(','));\n    if (f_brandCodes) params.append('f-brandCodes', f_brandCodes.join(','));\n    if (f_price) params.append('f-price', String(f_price));\n    if (f_tripAdvisorRatings) params.append('f-tripAdvisorRatings', f_tripAdvisorRatings);\n    if (adjoiningRoomStay) params.append('adjoiningRoomStay', String(adjoiningRoomStay));\n    if (placeId) params.append('placeId', placeId);\n    if (query) params.append('query', query);\n    if (location) {\n      params.append('coords', `${location.latitude},${location.longitude}`);\n      if (geocodeType) params.append('geocodeType', geocodeType);\n    }\n    if (bounds) {\n      params.append(\n        'bounds',\n        `${bounds.southwest.latitude},${bounds.southwest.longitude},${bounds.northeast.latitude},${bounds.northeast.longitude}`\n      );\n    }\n    if (content) {\n      params.append('content', content);\n    }\n  }\n\n  if (sessionToken) params.append('sessionToken', sessionToken);\n  if (cid) params.append('cid', cid);\n\n  const queryParams = params.toString();\n  fullPath += queryParams ? `?${queryParams}` : '';\n  return fullPath;\n};\n","export * from './location-uri-builder';\n","import type { Dates, Room, Adult, Child, BaseUriBuilderParams } from '../types';\nimport { format, startOfToday, addDays } from 'date-fns';\nimport { getGroupOrTransientSubpath } from '../uri-builder-utils/uri-builder.utils';\n\nexport type BookRates = {\n  aaaRate?: boolean | null;\n  aarpRate?: boolean | null;\n  corporateCode?: string | null;\n  employeeRate?: boolean | null;\n  friendsAndFamilyRate?: boolean | null;\n  fromId?: string | null;\n  governmentRate?: boolean | null;\n  groupCode?: string | null;\n  offerId?: number | null;\n  ownerHGVRate?: boolean | null;\n  ownerVIPRate?: boolean | null;\n  pnd?: string | null;\n  promotionCode?: string | null;\n  ratePlanCodes?: string | null;\n  redeemPts?: boolean | null;\n  roomCategory?: string | null;\n  roomTypeCode?: string | null;\n  seniorRate?: boolean | null;\n  smbRate?: boolean | null;\n  travelAgent?: boolean | null;\n  travelAgentId?: string | null;\n};\n\nexport type BookPath = 'book' | 'modify';\nexport type BookUrlParams = {\n  dates?: Dates;\n  rates?: BookRates;\n  rooms?: Room[];\n  numRooms?: number | null;\n  numAttendees?: number | null;\n  ctyhocn: string;\n  displayCurrency?: string;\n  adjoiningRoomStay?: boolean;\n  programAccountId?: number | null;\n  additionalQS?: {\n    [key: string]: string | boolean | undefined;\n  };\n};\n\ntype BookUrlQS = { [key: string]: undefined | string | number | null | boolean };\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function bookUriBuilder({\n  locale = 'en',\n  path = 'book',\n  urlParams,\n  relative,\n  baseUrl,\n  page = 'rooms',\n}: BaseUriBuilderParams<BookUrlParams, BookPath> & {\n  page?: 'rooms' | 'rates' | 'flexibledates' | 'deeplink' | 'payment';\n}): string {\n  const urlparts: string[] = [buildBaseUrl({ relative, baseUrl, locale })];\n\n  const numRooms = urlParams?.numRooms ?? urlParams?.rooms?.length ?? 1;\n  const numAttendees = urlParams?.numAttendees ? urlParams?.numAttendees : 0;\n\n  if (path === 'modify') {\n    urlparts.push('modify');\n  } else {\n    urlparts.push('book');\n  }\n\n  urlparts.push(\n    getGroupOrTransientSubpath({\n      numAttendees: numAttendees ?? 0,\n      numRooms: numRooms ?? 0,\n      transientPath: 'reservation',\n      groupsPath: 'group',\n    }),\n    page\n  );\n\n  return `${urlparts.join('/')}/?${bookParamBuilder(urlParams)}`;\n}\n\nexport function bookParamBuilder(\n  urlParams: BaseUriBuilderParams<BookUrlParams, BookPath>['urlParams']\n) {\n  const {\n    ctyhocn,\n    displayCurrency,\n    adjoiningRoomStay,\n    dates,\n    rooms,\n    rates = {},\n    additionalQS = {},\n    numRooms,\n    numAttendees,\n    programAccountId,\n  } = urlParams || {};\n\n  const arrivalDate = dates?.arrivalDate || startOfToday();\n  const departureDate = dates?.departureDate || addDays(startOfToday(), 1);\n  const nonEmptyAdditionalQS = Object.fromEntries(\n    Object.entries(additionalQS).filter(([, v]) => Boolean(v) || v === false)\n  );\n\n  const querystringObj: BookUrlQS = {\n    ctyhocn,\n    arrivalDate: formatDate(arrivalDate),\n    departureDate: formatDate(departureDate),\n    ...rates,\n    ...(numRooms == null && !numAttendees && roomsToQS(rooms)),\n    ...nonEmptyAdditionalQS,\n  };\n\n  if (displayCurrency) querystringObj.displayCurrency = displayCurrency;\n  if (adjoiningRoomStay) querystringObj.adjoiningRoomStay = adjoiningRoomStay;\n  if (numRooms != null) querystringObj.numRooms = numRooms;\n  if (numRooms == null && numAttendees) querystringObj.numRooms = 0;\n  if (numAttendees) querystringObj.numAttendees = numAttendees;\n  if (additionalQS.cid) querystringObj.cid = additionalQS.cid;\n  if (programAccountId) querystringObj.programAccountId = programAccountId;\n\n  return new URLSearchParams(mapParams(querystringObj)).toString();\n}\n\n// Mimic the behavior of 'querystring' encode.\nfunction mapParams<T extends BookUrlQS>(params: T) {\n  return Object.entries(params).reduce((params, [key, value]) => {\n    if (typeof value === 'boolean') {\n      return { ...params, [key]: String(value) };\n    }\n    if (typeof value === 'number') {\n      return { ...params, [key]: isFinite(value) ? String(value) : '' };\n    }\n    if (typeof value === 'string') {\n      return { ...params, [key]: value };\n    }\n    return { ...params, [key]: '' };\n  }, {} as Record<string, string>);\n}\n\nfunction buildBaseUrl({\n  relative,\n  baseUrl,\n  locale,\n}: {\n  relative?: boolean;\n  baseUrl?: string;\n  locale: string;\n}) {\n  return relative || (!relative && !baseUrl) ? `/${locale}` : `${baseUrl}/${locale}`;\n}\n\nfunction formatDate(date: Date) {\n  return format(date, 'yyyy-MM-dd');\n}\n\nfunction roomsToQS(rooms?: Room[]) {\n  if (!rooms?.length) {\n    return {\n      room1NumAdults: 1,\n    };\n  }\n  if ((rooms?.length || 1) >= 10) {\n    return {\n      numRooms: rooms?.length,\n    };\n  }\n  return rooms.reduce((prev, curr, index) => {\n    const adults: Adult[] =\n      typeof curr.adults === 'number' ? Array(curr.adults).fill({ age: null }) : curr.adults;\n    const children: Child[] =\n      typeof curr.children === 'number' ? Array(curr.children).fill({ age: null }) : curr.children;\n\n    const roomNumber = index + 1;\n    if (adults.length) {\n      prev[`room${roomNumber}NumAdults`] = adults.length;\n      const adultAges = adults\n        .filter((a) => a.age !== undefined && a.age !== null)\n        .map((a) => a.age);\n      if (adultAges.length) {\n        prev[`room${roomNumber}AdultAges`] = adultAges.join(',');\n      }\n    }\n    if (children.length) {\n      prev[`room${roomNumber}NumChildren`] = children.length;\n      const childAges = children.filter((c) => c.age !== null).map((c) => c.age);\n      if (childAges.length) {\n        prev[`room${roomNumber}ChildAges`] = childAges.join(',');\n      }\n    }\n\n    return prev;\n  }, {} as Record<string, number | string>);\n}\n","import type { Maybe } from '@dx-ui/gql-types';\nimport {\n  buildDatesParams,\n  buildRatesParams,\n  buildRoomsParams,\n} from '../uri-builder-utils/uri-builder.utils';\nimport type { Dates, Rates, Room } from '../types';\n\nexport type PropertyUrlParams = {\n  dates?: Dates;\n  numAttendees?: number | null;\n  numRooms?: number | null;\n  query?: string;\n  rates?: Rates;\n  redeemPts?: boolean;\n  rooms?: Room[];\n  adjoiningRoomStay?: boolean;\n  sessionToken?: string;\n  specialRateTokens?: string[];\n  displayCurrency?: string | null;\n};\n/**\n * Returns an OHW formatted property URL\n *\n * @param {PropertyUrlParams} urlParams\n *\n */\n\nexport const propertyUriBuilder = ({\n  baseUrl,\n  urlParams,\n}: {\n  baseUrl?: Maybe<string>;\n  urlParams?: PropertyUrlParams;\n}) => {\n  if (!urlParams || !Object.keys(urlParams).length) return baseUrl;\n  const {\n    dates,\n    rooms,\n    rates,\n    specialRateTokens,\n    numRooms,\n    sessionToken,\n    displayCurrency,\n    adjoiningRoomStay,\n  } = urlParams ?? {};\n\n  const params = new URLSearchParams();\n  if (dates) buildDatesParams(params, dates);\n  if (rooms) buildRoomsParams(params, numRooms ? numRooms : rooms.length, rooms);\n  if (adjoiningRoomStay) params.append('adjoiningRoomStay', adjoiningRoomStay.toString());\n  if (displayCurrency) params.append('displayCurrency', displayCurrency);\n  if (rates) buildRatesParams(params, rates);\n  if (specialRateTokens && !!specialRateTokens.length)\n    params.append('specialRateTokens', specialRateTokens.join(','));\n  if (sessionToken) params.append('sessionToken', sessionToken);\n\n  const queryString = params.toString();\n  return `${baseUrl}?${queryString}`;\n};\n","export * from './property-uri-builder';\n","export * from './uri-builder';\nexport * from './search-uri-builder';\nexport * from './location-uri-builder';\nexport * from './book-uri-builder';\nexport * from './types';\nexport * from './property-uri-builder';\n","export * from './lib';\n","import type * as React from 'react';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport cx from 'classnames';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\n\nexport type AnimateRevealItemType = {\n  delay: number;\n  isAnimated?: boolean;\n  animationType?: 'fade-in-up' | 'wipe' | 'fade-in';\n  className?: string;\n};\n\nexport const AnimateRevealItem: React.FC<React.PropsWithChildren<AnimateRevealItemType>> = ({\n  children,\n  delay,\n  animationType = 'fade-in',\n  isAnimated = false,\n  className,\n}) => {\n  const isReducedMotion = getIsReducedMotion();\n  const { ref: intersectionRef, isIntersecting: inView } = useIntersectionObserver({\n    threshold: [0.3],\n    freezeOnceVisible: true,\n  });\n  const ref = !isReducedMotion && isAnimated ? intersectionRef : null;\n\n  if (animationType === 'wipe') {\n    const clipPathValue = inView ? 'inset(0% 0% 0%)' : 'inset(0% 0% 100%)';\n\n    return (\n      <div className={className} ref={ref}>\n        <div\n          className={cx({\n            'opacity-100': inView && isAnimated,\n            'duration-1000 ease-in-out opacity-0 motion-reduce:opacity-100 motion-reduce:transition-none':\n              isAnimated,\n          })}\n          data-testid=\"wipe-item-wrapper\"\n          style={\n            isAnimated\n              ? {\n                  transitionDelay: `${delay}ms`,\n                  clipPath: isReducedMotion ? 'inset(0% 0% 0%)' : clipPathValue,\n                }\n              : {}\n          }\n        >\n          {children}\n        </div>\n      </div>\n    );\n  }\n\n  const isFadeInUp = animationType === 'fade-in-up';\n\n  return (\n    <div\n      ref={ref}\n      data-testid=\"fade-item-wrapper\"\n      style={\n        isAnimated\n          ? {\n              transitionDelay: `${delay}ms`,\n              transitionTimingFunction: 'cubic-bezier(.25, .46, .45, .99);',\n            }\n          : {}\n      }\n      className={cx(\n        {\n          'opacity-100': inView && isAnimated,\n          'opacity-100 translate-y-0': inView && isAnimated && isFadeInUp,\n          'translate-y-6': !inView && isAnimated && isFadeInUp,\n          'duration-1000 opacity-0 motion-reduce:transition-none motion-reduce:opacity-100 transition-all':\n            isAnimated,\n        },\n        className\n      )}\n    >\n      {children}\n    </div>\n  );\n};\n\nexport default AnimateRevealItem;\n","export * from './animate-reveal-item';\n","export * from './lib';\n","import classnames from 'classnames';\nimport { Icon } from '@dx-ui/osc-icon';\nimport type { IconProps } from '@dx-ui/osc-icon';\n\nexport function BrandIcon(props: IconProps) {\n  return (\n    <span className=\"inline-block self-center\">\n      <Icon {...props} className={classnames(props.className)} />\n    </span>\n  );\n}\n","import classnames from 'classnames';\n\nexport type Variant = 'solid' | 'outline';\n\nexport type ClassNamesArgs = Partial<{\n  brandComponentTheme: CmsBrandComponentTheme;\n  variant: Variant;\n}>;\n\nexport function getClassnames({ brandComponentTheme: theme, variant }: ClassNamesArgs) {\n  const isDark = theme === 'dark';\n  const isLight = theme === 'light';\n  const isSolid = variant === 'solid';\n  const isOutline = variant === 'outline';\n  return classnames('btn-brand motion-safe:transition', {\n    'btn-brand-solid': isSolid && !isLight && !isDark,\n    'btn-brand-outline': isOutline && !isLight && !isDark,\n    'btn-brand-dark': isDark && !isSolid && !isOutline,\n    'btn-brand-dark-outline': isDark && isOutline,\n    'btn-brand-dark-solid': isDark && isSolid,\n    'btn-brand-light': isLight && !isSolid && !isOutline,\n    'btn-brand-light-outline': isLight && isOutline,\n    'btn-brand-light-solid': isLight && isSolid,\n  });\n}\n","import type { Icon } from '@dx-ui/osc-icon';\nimport { Link } from '@dx-ui/osc-link';\nimport cx from 'classnames';\nimport type { MouseEvent } from 'react';\nimport { forwardRef } from 'react';\nimport { BrandIcon } from './brand-icon';\nimport type { Variant } from './util/button';\nimport { getClassnames } from './util/button';\n\nexport interface BrandLinkProps extends Omit<Link, 'label'> {\n  label: React.ReactNode;\n  /** Add Icon props to buttons with Icons */\n  iconProps?: React.ComponentProps<typeof Icon>;\n  /** Brand color themes, \"light\" | \"dark\" */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** Button variant */\n  variant?: Variant;\n  /** OnClick callback */\n  onClick?: (e: MouseEvent<HTMLAnchorElement>) => void;\n  metricsOnClick?: () => void;\n  /** Icon alignment, \"before\" | \"after\" */\n  iconAlign?: 'before' | 'after';\n}\n\nexport const BrandLink = forwardRef<HTMLAnchorElement, BrandLinkProps>(\n  (\n    {\n      label,\n      iconProps,\n      brandComponentTheme,\n      variant,\n      onClick,\n      metricsOnClick,\n      iconAlign = 'before',\n      ...linkProps\n    },\n    ref\n  ) => (\n    <Link\n      {...linkProps}\n      ref={ref}\n      anchorClassName={cx(\n        linkProps.anchorClassName,\n        getClassnames({ brandComponentTheme, variant })\n      )}\n      className={cx('gap-2', linkProps.className)}\n      isNewWindow={linkProps.isNewWindow || false}\n      url={linkProps.url}\n      showNewWindowIcon={(linkProps.showNewWindowIcon && linkProps.isNewWindow) || false}\n      underline={false}\n      data-testid=\"CTALinkE2ETest\"\n      onClick={(e) => {\n        onClick?.(e);\n        metricsOnClick?.();\n      }}\n    >\n      {iconAlign === 'before' && iconProps ? <BrandIcon {...iconProps} /> : null}\n      {label}\n      {iconAlign === 'after' && iconProps ? <BrandIcon {...iconProps} /> : null}\n    </Link>\n  )\n);\n\nBrandLink.displayName = 'BrandLink';\n\nexport default BrandLink;\n","import type { Icon } from '@dx-ui/osc-icon';\nimport cx from 'classnames';\nimport { forwardRef } from 'react';\nimport { BrandIcon } from './brand-icon';\nimport type { Variant } from './util/button';\nimport { getClassnames } from './util/button';\n\nexport interface BrandButtonProps extends Omit<React.ComponentPropsWithoutRef<'button'>, 'type'> {\n  /** Button label */\n  label?: React.ReactNode;\n  /** Add Icon props to buttons with Icons */\n  iconProps?: React.ComponentProps<typeof Icon>;\n  /** Brand color themes, \"light\" | \"dark\" */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** Button variant */\n  variant?: Variant;\n  /** Icon alignment, \"before\" | \"after\" */\n  iconAlign?: 'before' | 'after';\n}\n\n/** This is a one stop shop for all brand button needs, to add style exceptions so all buttons stay up to day. Check out some of the exceptions on Curio and Waldorf. */\nexport const BrandButton = forwardRef<HTMLButtonElement, BrandButtonProps>(\n  (\n    { label, variant, iconProps, brandComponentTheme, iconAlign = 'before', ...buttonProps },\n    ref\n  ) => (\n    <button\n      type=\"button\"\n      {...buttonProps}\n      ref={ref}\n      className={cx(buttonProps.className, getClassnames({ brandComponentTheme, variant }))}\n      data-testid=\"CTAButtonE2ETest\"\n    >\n      <span className=\"flex gap-2\" data-testid=\"buttonContentParent\">\n        {iconAlign === 'before' && iconProps ? <BrandIcon {...iconProps} /> : null}\n        {label}\n        {iconAlign === 'after' && iconProps ? <BrandIcon {...iconProps} /> : null}\n      </span>\n    </button>\n  )\n);\n\nBrandButton.displayName = 'BrandButton';\n\nexport default BrandButton;\n","export * from './brand-link';\nexport * from './brand-button';\n","export * from './lib';\nexport type { Variant } from './lib/util/button';\n","import type * as React from 'react';\nimport { useId } from 'react';\nimport cx from 'classnames';\n\nimport { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\n\nexport type BrandTextBodyType = {\n  className?: string;\n  baseAppUrl?: string;\n  lang?: string;\n  testId?: string | null;\n  isStaticContentPage?: boolean;\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\n/**\n * Can utilize `<CustomMarkdown>` or `children` to add the body text content.\n * There is not a character limit on the text block body but individual components may have recommended character lengths, see components for more details.\n */\nexport const BrandTextBody = ({\n  children,\n  className = '',\n  testId = 'brandTextBody',\n  isStaticContentPage, // to enable segregation of styles, logic of textblock components for static pages\n  brandComponentTheme,\n}: BrandTextBodyType) => {\n  const id = useId();\n\n  return typeof children === 'string' ? (\n    /* Adding a unique id to children props passed in CustomMarkdown mainly headings */\n    <div\n      data-testid={testId}\n      className={cx(\n        className,\n        'brand-wa:font-serif brand-gi:font-serif brand-gi:font-semibold py-2 sm:text-lg lg:text-xl',\n        {\n          'brand-hp:text-brand': brandComponentTheme !== 'dark',\n          'brand-ht:text-text-inverse': brandComponentTheme === 'light',\n        }\n      )}\n    >\n      <CustomMarkdown\n        id={`textblock-body-section-${id}`}\n        isStaticContentPage={isStaticContentPage}\n        brandComponentTheme={brandComponentTheme}\n      >\n        {children}\n      </CustomMarkdown>\n    </div>\n  ) : (\n    children\n  );\n};\n","export * from './brand-text-body';\n","export * from './lib';\n","import { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport cx from 'classnames';\n\nexport type BrandTextHeaderType = {\n  children?: React.ReactNode;\n  ariaLabel?: string;\n  className?: string;\n  id?: string;\n};\n\n/**\n * Extra, Extra! Announcing the Text Block Header, consumed by other components to create a bold headline.\n */\nexport const BrandTextHeader = ({ children, ariaLabel, className = '', id }: BrandTextHeaderType) =>\n  children ? (\n    <HeadingLevel\n      headingLevelFallback={2}\n      className={cx(className, 'heading-2xl lg:heading-4xl lg:mb-2')}\n      data-testid=\"brandTextHeader\"\n      id={id}\n    >\n      {children}\n\n      {ariaLabel && <span className=\"sr-only\">{ariaLabel}</span>}\n    </HeadingLevel>\n  ) : null;\n\nexport default BrandTextHeader;\n","export * from './brand-text-header';\n","export * from './lib';\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 BrandMessagesDocument = {\n  operationName: 'brand',\n  operationString: `query brand($brandCode: String!, $lang: String!) {\n  clientMessages: brand(brandCode: $brandCode, language: $lang) {\n    messages {\n      id\n      type\n      name\n      headline\n      shortDescription\n      startDateTime\n      endDateTime\n      link {\n        _id\n        adaDescription\n        isNewWindow\n        label\n        url\n      }\n    }\n  }\n}`,\n  originalOpName: 'BrandMessages',\n};\nexport function useBrandMessagesQuery<TData = Types.BrandMessagesQuery, TError = DXError>(\n  variables: Types.BrandMessagesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.BrandMessagesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.BrandMessagesQuery, TError, TData>({\n    queryKey: [BrandMessagesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideBrandMessagesQuery(\n  queryClient: QueryClient,\n  variables: Types.BrandMessagesQueryVariables,\n  options?: FetchQueryOptions<Types.BrandMessagesQuery>\n) {\n  return queryClient.fetchQuery<Types.BrandMessagesQuery>({\n    queryKey: [BrandMessagesDocument, variables],\n    ...options,\n  });\n}\n\nexport const BrandDocument = {\n  operationName: 'brand_shopAvailOptions',\n  operationString: `query brand_shopAvailOptions($brandCode: String!, $language: String!) {\n  brand(brandCode: $brandCode, language: $language) {\n    code\n    name\n    isPartnerBrand\n    formalName\n    url\n    locationsUrl\n    shopAvailOptions {\n      maxNumRooms\n    }\n    socialMediaLinks {\n      channel\n      url\n    }\n    phone {\n      number\n      friendlyNumber\n    }\n  }\n}`,\n  originalOpName: 'brand',\n};\nexport function useBrandQuery<TData = Types.BrandQuery, TError = DXError>(\n  variables: Types.BrandQueryVariables,\n  options?: Omit<UseQueryOptions<Types.BrandQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.BrandQuery, TError, TData>({\n    queryKey: [BrandDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideBrandQuery(\n  queryClient: QueryClient,\n  variables: Types.BrandQueryVariables,\n  options?: FetchQueryOptions<Types.BrandQuery>\n) {\n  return queryClient.fetchQuery<Types.BrandQuery>({\n    queryKey: [BrandDocument, variables],\n    ...options,\n  });\n}\n\nexport const BrandsDocument = {\n  operationName: 'brands',\n  operationString: `query brands($language: String!) {\n  brands(language: $language) {\n    code\n    name\n    isPartnerBrand\n    formalName\n    url\n    locationsUrl\n    socialMediaLinks {\n      channel\n      url\n    }\n    phone {\n      number\n      friendlyNumber\n    }\n  }\n}`,\n  originalOpName: 'Brands',\n};\nexport function useBrandsQuery<TData = Types.BrandsQuery, TError = DXError>(\n  variables: Types.BrandsQueryVariables,\n  options?: Omit<UseQueryOptions<Types.BrandsQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.BrandsQuery, TError, TData>({\n    queryKey: [BrandsDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideBrandsQuery(\n  queryClient: QueryClient,\n  variables: Types.BrandsQueryVariables,\n  options?: FetchQueryOptions<Types.BrandsQuery>\n) {\n  return queryClient.fetchQuery<Types.BrandsQuery>({\n    queryKey: [BrandsDocument, variables],\n    ...options,\n  });\n}\n\nexport const GetTranslatedCmsUrlsDocument = {\n  operationName: 'getTranslatedCmsUrls',\n  operationString: `query getTranslatedCmsUrls {\n  featureConfigs(names: [\"rule-ui-translate-cms\"]) {\n    name\n    conditions\n    config\n  }\n}`,\n  originalOpName: 'getTranslatedCmsUrls',\n};\nexport function useGetTranslatedCmsUrlsQuery<\n  TData = Types.GetTranslatedCmsUrlsQuery,\n  TError = DXError\n>(\n  variables: Types.GetTranslatedCmsUrlsQueryVariables | null = null,\n  options?: Omit<UseQueryOptions<Types.GetTranslatedCmsUrlsQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.GetTranslatedCmsUrlsQuery, TError, TData>({\n    queryKey: [GetTranslatedCmsUrlsDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGetTranslatedCmsUrlsQuery(\n  queryClient: QueryClient,\n  variables: Types.GetTranslatedCmsUrlsQueryVariables | null = null,\n  options?: FetchQueryOptions<Types.GetTranslatedCmsUrlsQuery>\n) {\n  return queryClient.fetchQuery<Types.GetTranslatedCmsUrlsQuery>({\n    queryKey: [GetTranslatedCmsUrlsDocument, variables],\n    ...options,\n  });\n}\n","import type { SupportedLanguage } from '@dx-ui/framework-i18n';\n\nexport const LANGUAGES = {\n  EN: 'en',\n  FR: 'fr',\n  DE: 'de',\n  IT: 'it',\n  JA: 'ja',\n  ES: 'es',\n  RU: 'ru',\n  AR: 'ar',\n  HO: 'ko',\n  PT: 'pt',\n  TR: 'tr',\n  ZH_HANS: 'zh-hans',\n  ZH_HANT: 'zh-hant',\n  CS: 'cs',\n  SV: 'sv',\n  TH: 'th',\n  NL: 'nl',\n  RO: 'ro',\n  PL: 'pl',\n  BG: 'bg',\n  FI: 'fi',\n} as const;\n\nexport const getLanguages = () => Object.values(LANGUAGES) as SupportedLanguage[];\n","import { env } from '@dx-ui/framework-env';\n\nexport const getBaseUrl = (slug?: string) =>\n  slug ? new URL(slug, env('OHW_BASE_URL'))?.href : new URL(env('OHW_BASE_URL')).origin;\n\nexport const getAssetPath = () => `${getBaseUrl()}/modules/assets`;\n\nconst getSvgPath = () => `${getAssetPath()}/svgs`;\n\nexport const getSvgAssetUrls = () => ({\n  home: `${getSvgPath()}/guest/home.svg`,\n  phone: `${getSvgPath()}/common/phone.svg`,\n  search: `${getSvgPath()}/common/search.svg`,\n  account: `${getSvgPath()}/guest/account.svg`,\n});\n\nexport const getBrandSvg = (brandCode: string) => `${getSvgPath()}/logos/${brandCode}.svg`;\n","export const isPortfolioRedirect = (segments: string[]) => {\n  if (segments.length > 0) {\n    const firstSegment = segments[0];\n\n    if (\n      firstSegment === 'all-inclusive' ||\n      firstSegment === 'beach' ||\n      firstSegment === 'brands' ||\n      firstSegment === 'connecting-rooms' ||\n      firstSegment === 'destination-guides' ||\n      firstSegment === 'resorts' ||\n      firstSegment === 'pet-friendly' ||\n      firstSegment === 'new-hotels' ||\n      firstSegment === 'travel' ||\n      firstSegment === 'events' ||\n      firstSegment === 'travel-savings' ||\n      firstSegment === ''\n    ) {\n      return true;\n    }\n\n    return false;\n  }\n\n  return true;\n};\n","import { isPortfolioRedirect } from './is-portfolio-redirect';\n\ntype GetBrandRouteParamsResult = {\n  brandSlug: string;\n  brandPath: string;\n  auxPageSlug: string;\n  isStaticPage: boolean;\n  isStaticCMSPage: boolean;\n  lang: string;\n  isValid: boolean;\n};\n\nconst excludedSegments = ['', 'brands', 'home', 'index'];\n\nexport function getBrandRouteParams(path: string, language: string): GetBrandRouteParamsResult {\n  const segments =\n    path\n      .split('?')[0]\n      ?.split('/')\n      ?.filter((segment) => segment !== language && !excludedSegments.includes(segment)) ?? [];\n\n  const [brandSlug = '', ...otherSegments] = segments;\n\n  // Include the channel slug in the brand path if we've been redirect\n  // and handle portfolio redirects - they need to retain the auxiliary\n  // page in the brand path\n  let brandPath = isPortfolioRedirect(segments) ? segments.join('/') : otherSegments.join('/');\n\n  // Set brand path to '/' when there are no other segments\n  if (brandPath === '') {\n    brandPath = '/';\n  }\n\n  return {\n    brandSlug,\n    brandPath,\n    auxPageSlug: otherSegments.join('/'),\n    lang: language,\n    // The app doesn't render static pages\n    isStaticPage: false,\n    // The app doesn't render static content pages from the CMS\n    isStaticCMSPage: false,\n    // The URL will always be valid at this point\n    isValid: true,\n  };\n}\n","import { LANGUAGES } from './constants';\n\nconst brandsWithBrandPage = [\n  'PY',\n  'CH',\n  'QQ',\n  'DT',\n  'ES',\n  'HP',\n  'GI',\n  'HI',\n  'HT',\n  'HW',\n  'OL',\n  'SA',\n  'UA',\n  'UP',\n  'RU',\n  'PO',\n  'WA',\n  'PE',\n];\n\nexport const isBrandHomePageUrlFormat = (pathname: string, brandCode: string) => {\n  const pathParts = pathname.split('/').filter((n) => !!n);\n\n  if (pathParts.length > 3) {\n    return false;\n  }\n\n  const languages: string[] = Object.values(LANGUAGES);\n\n  const lang = pathParts[0];\n\n  if (!lang) {\n    return false;\n  }\n\n  if (!languages.includes(lang)) {\n    return false;\n  }\n\n  if (pathParts[1] !== 'brands') {\n    return false;\n  }\n\n  if (!brandsWithBrandPage.includes(brandCode)) {\n    return false;\n  }\n\n  return true;\n};\n","import { useRouter } from 'next/router';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nexport const useQueryStrings = () => {\n  const { query: nextJsQuery } = useRouter();\n\n  const additional = isBrowser\n    ? Object.fromEntries(new URLSearchParams(window.location.search).entries())\n    : {};\n\n  return {\n    ...nextJsQuery,\n    ...additional,\n  };\n};\n\nexport const useSingleInstanceQueryStrings = (): { [x: string]: string | undefined } => {\n  const queryStrings = useQueryStrings();\n\n  return Object.entries(queryStrings).reduce(\n    (acc, [key, val]) =>\n      typeof val === 'string' || typeof val === 'undefined'\n        ? {\n            ...acc,\n            [key]: val,\n          }\n        : acc,\n    {}\n  );\n};\n","import * as GeneratedQueries from '../generated/queries';\nexport * from '../generated/types';\nexport const {\n  useBrandQuery,\n  serverSideBrandsQuery,\n  serverSideBrandQuery,\n  serverSideGetTranslatedCmsUrlsQuery,\n} = GeneratedQueries;\n\nexport * from './constants';\nexport * from './cookies';\nexport * from './env-constants';\nexport * from './get-brand-route-params';\nexport * from './is-brand-home-page-url-format';\nexport * from './is-portfolio-redirect';\nexport * from './query-strings';\n","export * from './lib';\n","import { useConductricsSelection } from '@dx-ui/framework-conductrics';\n\nexport const useSpeechBubbleOrGlowMVT = () => {\n  const { isLoaded, selection } = useConductricsSelection('a-Kk02CJtxjs2G');\n  return {\n    variant: isLoaded ? selection?.choice : undefined,\n  };\n};\n","import { Header as DxUiHeader, type TDrawerItem } from '@dx-ui/osc-header';\nimport { useEffect, useState } from 'react';\nimport * as React from 'react';\nimport { getGuestFirstName, useAuth } from '@dx-ui/framework-auth-provider';\nimport type { LoginResponse } from '@dx-ui/osc-login';\nimport { useRouter } from 'next/router';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { getBaseNavLinksFromEnv } from '@dx-ui/osc-header';\nimport { useSpeechBubbleOrGlowMVT } from './utils';\n\ntype GuestInfo = ReturnType<typeof useAuth>['guestInfo'];\n\nfunction getUserFromGuestInfo(guestInfo: GuestInfo) {\n  if (!guestInfo) {\n    return undefined;\n  }\n\n  const hHonorsSummary = guestInfo?.hhonors?.summary;\n  const hHonorsNumber = guestInfo?.hhonors?.hhonorsNumber;\n  const hHonorsProgramAccountSummary = guestInfo?.hhonors?.programAccountSummary;\n  const hHonorsIsHGVMax = Boolean(guestInfo?.hhonors?.isOwnerHGVNew);\n  const hHonorsIsTeamMember = Boolean(guestInfo?.hhonors?.isTeamMember);\n  const hHonorsIsSMBMember = Boolean(guestInfo?.hhonors?.isSMBMember);\n\n  return {\n    name: getGuestFirstName({ guestInfo }),\n    honorsTier: hHonorsSummary?.tierName || '',\n    honorsPoints: hHonorsSummary?.totalPoints || 0,\n    hhonorsNumber: hHonorsNumber || '',\n    honorsPointsFmt: hHonorsSummary?.totalPointsFmt || '',\n    isHGVMax: hHonorsIsHGVMax || false,\n    isTeamMember: hHonorsIsTeamMember || false,\n    isSMBMember: hHonorsIsSMBMember || false,\n    honorsPrograms: hHonorsProgramAccountSummary || [],\n  };\n}\n\nfunction useDxUiHeaderData(\n  guestInfo: GuestInfo,\n  brandCode: string,\n  languageCode: string,\n  formalBrandName = 'Hilton',\n  brandUrl = '/',\n  {\n    forgotInfoUrl,\n    globalPrivacyUrl,\n  }: {\n    forgotInfoUrl: string;\n    globalPrivacyUrl: string;\n  }\n) {\n  const brandName = brandCode === 'WW' ? 'Hilton For the Stay' : formalBrandName; // `Hilton For The Stay` text is only for portfolio pages\n\n  const brand = {\n    code: brandCode,\n    name: brandName,\n    url: brandUrl,\n  };\n\n  const user = getUserFromGuestInfo(guestInfo);\n\n  const loginOptions = {\n    options: {\n      showCreatePassword: true,\n      forgetInfoLink: { url: forgotInfoUrl },\n      secureInfoLink: { url: globalPrivacyUrl },\n      joinLink: {\n        url: getBaseNavLinksFromEnv(languageCode, user ? true : false).signUpLink?.url,\n        underline: false,\n      },\n    },\n  };\n\n  return {\n    brand,\n    user,\n    loginOptions,\n  };\n}\n\nexport const goUserTypes = ['TMH', 'TPH', 'FF', 'OAS', 'ODM', 'GHFT', 'GHFF'];\nexport const SIGN_IN_SUCCESS = 'g-IqzR2S0Ai5';\n\nexport type BrandsHeaderProps = {\n  megaNavLinks: TDrawerItem[] | undefined;\n  languageCode: string;\n  brandCode: string;\n  brandFormalName: string | undefined;\n  brandUrl: string | undefined;\n  showLanguageSelector: boolean;\n  honorsSignInUrl: string;\n  honorsJoinUrl: string;\n  forgotInfoUrl: string;\n  globalPrivacyUrl: string;\n  honorsAccountUrl: string;\n  ohwBaseUrl: string | undefined;\n  heading?: string;\n  trackUserLoggedIn: (\n    data: {\n      hhonorsNumber: string;\n      tierName: string;\n      points: string;\n      goUserTypes: string[] | null;\n    }[]\n  ) => void;\n  mainNavLinks:\n    | {\n        _id: string;\n        adaDescription: string;\n        campaignId?: string;\n        isNewWindow: boolean;\n        label: string;\n        url: string;\n        experimentationConfiguration?: CmsExperimentationConfiguration;\n      }[]\n    | undefined;\n};\n\nexport function BrandsHeader({\n  trackUserLoggedIn,\n  languageCode,\n  brandCode,\n  mainNavLinks,\n  megaNavLinks,\n  brandFormalName,\n  brandUrl,\n  showLanguageSelector,\n  forgotInfoUrl,\n  globalPrivacyUrl,\n  heading,\n}: BrandsHeaderProps) {\n  const { login, logout, guestInfo, isLoading } = useAuth();\n  const router = useRouter();\n  const [trackSignIn, setTrackSignIn] = useState(false);\n\n  const { brand, user, loginOptions } = useDxUiHeaderData(\n    guestInfo,\n    brandCode,\n    languageCode,\n    brandFormalName,\n    brandUrl,\n    {\n      forgotInfoUrl,\n      globalPrivacyUrl,\n    }\n  );\n\n  const { variant } = useSpeechBubbleOrGlowMVT();\n\n  const theme = ['GU', 'ND'].includes(brandCode) ? 'dark' : undefined;\n\n  const onSignInAttempt = React.useCallback(\n    (data: LoginResponse): Promise<void> => {\n      const isError = !!data.error;\n\n      if (!isError) {\n        sendReward(SIGN_IN_SUCCESS);\n      }\n      if (data) {\n        setTrackSignIn(true);\n        return login(data);\n      }\n      return Promise.reject(new Error('Failed to get data on login response.'));\n    },\n    [login, setTrackSignIn]\n  );\n\n  const onSignOut = React.useCallback((): Promise<void> => logout(), [logout]);\n\n  useEffect(() => {\n    if (trackSignIn && !isLoading) {\n      // We only want this to trigger once when a user has successfully signed in\n      setTrackSignIn(false);\n      const availableGoUserTypes: string[] | null = guestInfo?.hhonors?.packages?.filter\n        ? guestInfo?.hhonors?.packages\n            ?.filter((pack) => pack?.packageName && goUserTypes.includes(pack.packageName))\n            ?.map((pack) => pack && pack.packageName)\n        : null;\n\n      trackUserLoggedIn([\n        {\n          hhonorsNumber: guestInfo?.hhonors?.hhonorsNumber ?? '',\n          tierName: guestInfo?.hhonors?.summary?.tierName ?? '',\n          points: guestInfo?.hhonors?.summary?.totalPointsFmt ?? '',\n          goUserTypes: availableGoUserTypes,\n        },\n      ]);\n    }\n  }, [guestInfo, isLoading, trackSignIn, trackUserLoggedIn]);\n\n  return (\n    <DxUiHeader\n      theme={theme}\n      mvts={variant ? { '5758': { variant } } : undefined}\n      brand={brand}\n      showNewHeader={true}\n      megaNavLinks={megaNavLinks}\n      mainNavLinks={mainNavLinks}\n      onSignInAttempt={onSignInAttempt}\n      onSignOut={onSignOut}\n      user={user}\n      loginOptions={loginOptions}\n      heading={heading}\n      {...(showLanguageSelector && {\n        languageSelectorOptions: {\n          appName: 'dx-cpm-live',\n          locale: router.locale || 'en',\n          ...(megaNavLinks && {\n            labelOptions: {\n              className: 'text-sm',\n            },\n            buttonOptions: {\n              className: 'text-sm',\n            },\n          }),\n        },\n      })}\n    />\n  );\n}\n","export * from './brands-header';\n","export * from './lib';\n","import type { Child } from '@dx-ui/framework-uri-builder';\n\nexport const DEFAULT_FORM_VALUES = {\n  attendee_count: 0,\n  brandCode: 'HH',\n  dates: {\n    arrivalDate: null,\n    datesFlex: false,\n    departureDate: null,\n  },\n  hhonors: null,\n  numNights: null,\n  numRooms: null,\n  numAttendees: null,\n  placeId: '',\n  query: '',\n  rooms: [\n    {\n      adults: 1,\n      children: [] as Child[],\n    },\n  ],\n  sessionToken: '',\n  specialRates: {\n    aaaRate: false,\n    aarpRate: false,\n    corporateCode: '',\n    employeeRate: false,\n    friendsAndFamilyRate: false,\n    governmentOrMilitaryRate: false,\n    groupCode: '',\n    offerId: null,\n    ownerHGVRate: false,\n    ownerVIPRate: false,\n    pnd: null,\n    promoCode: '',\n    redeemPts: false,\n    requestedRatesOnly: false,\n    searchedRatePlanDescription: '',\n    seniorRate: false,\n    smbRate: false,\n    travelAgentId: '',\n    useOfferId: false,\n    usePnd: false,\n    useRequestedRatesOnly: false,\n    travelAgentRate: false,\n  },\n};\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n *   new Date(2020, 5, 1),\n *   new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const sign = compareLocalAsc(laterDate_, earlierDate_);\n  const difference = Math.abs(\n    differenceInCalendarDays(laterDate_, earlierDate_),\n  );\n\n  laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n  // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n  // If so, result must be decreased by 1 in absolute value\n  const isLastDayNotFull = Number(\n    compareLocalAsc(laterDate_, earlierDate_) === -sign,\n  );\n\n  const result = sign * (difference - isLastDayNotFull);\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n  const diff =\n    laterDate.getFullYear() - earlierDate.getFullYear() ||\n    laterDate.getMonth() - earlierDate.getMonth() ||\n    laterDate.getDate() - earlierDate.getDate() ||\n    laterDate.getHours() - earlierDate.getHours() ||\n    laterDate.getMinutes() - earlierDate.getMinutes() ||\n    laterDate.getSeconds() - earlierDate.getSeconds() ||\n    laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n  if (diff < 0) return -1;\n  if (diff > 0) return 1;\n\n  // Return 0 if diff is 0; return NaN if diff is NaN\n  return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n","import type { GuestQuery } from '@dx-ui/framework-auth-provider';\nimport type SpecialRates from './special-rates';\n\nexport type Hhonors = NonNullable<GuestQuery['guest']>['hhonors'];\n\nexport const isTeamMember = (hhonors?: Hhonors) =>\n  Boolean(hhonors?.isTeamMember || hhonors?.isTeamMemberSpouse || hhonors?.isLongTenure20);\n\nexport const isFriendsAndFamily = (hhonors?: Hhonors) =>\n  Boolean(hhonors?.isFamilyAndFriends || hhonors?.isLongTenure10);\n\nexport const isOwner = (hhonors?: Hhonors) => Boolean(hhonors?.isOwner || hhonors?.isOwnerHGV);\n\nexport const isHGVMax = (hhonors?: Hhonors) => Boolean(hhonors?.isOwnerHGVNew);\n\nexport const isTMTPProgramMember = (hhonors?: Hhonors) =>\n  isTeamMember(hhonors) || isFriendsAndFamily(hhonors) || isOwner(hhonors);\n\nexport const isSmbMember = (hhonors?: Hhonors) => Boolean(hhonors?.isSMBMember);\n\nexport const isTMTPRateSelected = (specialRates?: SpecialRates) =>\n  Boolean(specialRates?.employeeRate) ||\n  Boolean(specialRates?.friendsAndFamilyRate) ||\n  Boolean(specialRates?.ownerVIPRate);\n\nexport const isHGVMaxRateSelected = (specialRates?: SpecialRates) =>\n  Boolean(specialRates?.ownerHGVRate);\n\nexport const isSMBRateSelected = (specialRates?: SpecialRates) => Boolean(specialRates?.smbRate);\n","import { useLocalStorage } from 'usehooks-ts';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport { useEffect } from 'react';\n\nexport type SMBContextType = 'personal' | 'business';\n\nexport const useSMBContextLocalStorage = (enabled: boolean) => {\n  const { guestInfo } = useAuth();\n  const [smbContext, setSMBContext] = useLocalStorage<SMBContextType | null>('smbContext', null);\n\n  useEffect(() => {\n    const isSMBMemberButNoContextSet = Boolean(\n      guestInfo?.hhonors?.isSMBMember && !smbContext && enabled\n    );\n\n    if (isSMBMemberButNoContextSet) {\n      setSMBContext('personal');\n    }\n  }, [enabled, guestInfo?.hhonors?.isSMBMember, setSMBContext, smbContext]);\n\n  return { isSMBContextSet: Boolean(smbContext), smbContext, setSMBContext };\n};\n","export * from './lib/use-smb-context-local-storage';\nexport * from './lib/use-smb-program-id-local-storage';\n","import { FormInput } from '@dx-ui/osc-form';\nimport { useTranslation } from 'next-i18next';\nimport type { Hhonors } from './utils';\nimport { isOwner, isTeamMember, isFriendsAndFamily, isHGVMax, isSmbMember } from './utils';\nimport { useFormContext } from 'react-hook-form';\nimport { useSMBContextLocalStorage } from '@dx-ui/utilities-use-smb-context-local-storage';\n\nexport type SpecialRates = {\n  aaaRate: boolean;\n  aarpRate?: boolean;\n  corporateCode: string;\n  employeeRate: boolean;\n  friendsAndFamilyRate: boolean;\n  governmentOrMilitaryRate: boolean;\n  groupCode: string;\n  offerId: null | { id?: number; name?: string };\n  ownerHGVRate: boolean;\n  ownerVIPRate: boolean;\n  pnd: null | { pnd?: string; name?: string };\n  promoCode: string;\n  redeemPts: boolean;\n  requestedRatesOnly: boolean;\n  searchedRatePlanDescription: string;\n  seniorRate: boolean;\n  smbRate: boolean;\n  travelAgentId: string;\n  travelAgentRate: boolean;\n  useOfferId: boolean;\n  usePnd: boolean;\n  useRequestedRatesOnly: boolean;\n};\n\nexport type SpecialRatesKey = keyof SpecialRates;\n\nexport const specialRatesKeys: Array<SpecialRatesKey> = [\n  'aaaRate',\n  'aarpRate',\n  'corporateCode',\n  'employeeRate',\n  'friendsAndFamilyRate',\n  'governmentOrMilitaryRate',\n  'groupCode',\n  'offerId',\n  'ownerHGVRate',\n  'ownerVIPRate',\n  'pnd',\n  'promoCode',\n  'redeemPts',\n  'requestedRatesOnly',\n  'searchedRatePlanDescription',\n  'seniorRate',\n  'smbRate',\n  'travelAgentId',\n  'travelAgentRate',\n  'useOfferId',\n  'usePnd',\n  'useRequestedRatesOnly',\n] as const;\n\nexport function isSpecialRatesKey(someString: string): someString is keyof SpecialRates {\n  return Boolean(specialRatesKeys.find((value) => someString === value));\n}\n\nexport type SpecialRatesFormContext = { specialRates: SpecialRates; hhonors: Hhonors };\n\nexport const SpecialRates = ({\n  shouldDisablePoints = false,\n  shouldEnableSMBContextAwareRates = false,\n  shouldDisableAARP = false,\n}: {\n  /**  option to disable use points checkbox */\n  shouldDisablePoints?: boolean;\n  /** Are we checking SMB Context to determine whether to show SMB Rates */\n  shouldEnableSMBContextAwareRates?: boolean;\n  shouldDisableAARP?: boolean;\n}) => {\n  const [t] = useTranslation('osc-special-rates');\n  const { watch } = useFormContext<SpecialRatesFormContext>();\n  const { smbContext } = useSMBContextLocalStorage(shouldEnableSMBContextAwareRates);\n\n  const promoCode = watch('specialRates.promoCode');\n  const groupCode = watch('specialRates.groupCode');\n  const corporateCode = watch('specialRates.corporateCode');\n  const isOfferIdSelected = watch('specialRates.useOfferId');\n  const isPndSelected = watch('specialRates.usePnd');\n  const smbRate = watch('specialRates.smbRate');\n  const hhonors = watch('hhonors');\n  const offerId = watch('specialRates.offerId');\n  const pnd = watch('specialRates.pnd');\n  const searchedRatePlanDescription = watch('specialRates.searchedRatePlanDescription');\n  const requestedRatesOnly = watch('specialRates.requestedRatesOnly');\n  const requestedRatesOnlySelected = watch('specialRates.useRequestedRatesOnly');\n  const isOnBusinessProfile = smbContext === 'business';\n  const isSMBRatesEnabled = shouldEnableSMBContextAwareRates ? isOnBusinessProfile : true;\n\n  const oneCode =\n    [\n      !!promoCode,\n      !!groupCode,\n      !!corporateCode,\n      !!isPndSelected,\n      !!isOfferIdSelected,\n      !!requestedRatesOnlySelected,\n    ].filter(Boolean).length > 0;\n\n  const showSMBCheckbox = isSmbMember(hhonors) && isSMBRatesEnabled;\n  const isCorpFieldDisabled =\n    !!isPndSelected ||\n    ((oneCode || !!smbRate) && !corporateCode) ||\n    (shouldEnableSMBContextAwareRates && isOnBusinessProfile);\n\n  return (\n    <div className=\"w-full space-y-4\" data-testid=\"special-rates\">\n      <div\n        data-osc-product=\"search-rates-first\"\n        className=\"grid h-auto gap-4 md:grid-cols-1 lg:grid-cols-2\"\n      >\n        <FormInput\n          disabled={shouldDisablePoints}\n          type=\"checkbox\"\n          label={t('usePoints')}\n          name=\"specialRates.redeemPts\"\n        />\n        <FormInput type=\"checkbox\" label={t('travelAgents')} name=\"specialRates.travelAgentRate\" />\n        <FormInput type=\"checkbox\" label={t('aaaRate')} name=\"specialRates.aaaRate\" />\n        {shouldDisableAARP ? null : (\n          <FormInput type=\"checkbox\" label={t('aarpRate')} name=\"specialRates.aarpRate\" />\n        )}\n        <FormInput type=\"checkbox\" label={t('seniorRate')} name=\"specialRates.seniorRate\" />\n        <FormInput\n          type=\"checkbox\"\n          label={t('gvmtRates')}\n          name=\"specialRates.governmentOrMilitaryRate\"\n        />\n        {(isOwner(hhonors) || isTeamMember(hhonors)) && (\n          <FormInput type=\"checkbox\" label={t('employeeRate')} name=\"specialRates.employeeRate\" />\n        )}\n        {(isOwner(hhonors) || isTeamMember(hhonors) || isFriendsAndFamily(hhonors)) && (\n          <FormInput\n            type=\"checkbox\"\n            label={t('friendsAndFamilyRate')}\n            name=\"specialRates.friendsAndFamilyRate\"\n          />\n        )}\n        {isOwner(hhonors) && (\n          <FormInput type=\"checkbox\" label={t('ownerVIPRate')} name=\"specialRates.ownerVIPRate\" />\n        )}\n        {isHGVMax(hhonors) && (\n          <FormInput type=\"checkbox\" label={t('hgvMaxRate')} name=\"specialRates.ownerHGVRate\" />\n        )}\n        {showSMBCheckbox ? (\n          <label className=\"label\">\n            <FormInput type=\"checkbox\" label={t('smbRate')} name=\"specialRates.smbRate\" />\n          </label>\n        ) : null}\n      </div>\n      <div className=\"space-y-2\">\n        {offerId?.name || pnd?.name || requestedRatesOnly ? (\n          <div className=\"grid gap-4 md:grid-cols-1 lg:grid-cols-2\">\n            {offerId?.name || requestedRatesOnly ? (\n              <label className=\"label\">\n                <span className=\"rtl:pr-1\">{t('promoCode')}</span>\n                <FormInput\n                  type=\"checkbox\"\n                  label={\n                    searchedRatePlanDescription\n                      ? searchedRatePlanDescription\n                      : requestedRatesOnly\n                      ? t('specialOffer')\n                      : offerId?.name\n                  }\n                  name={\n                    requestedRatesOnly\n                      ? 'specialRates.useRequestedRatesOnly'\n                      : 'specialRates.useOfferId'\n                  }\n                />\n              </label>\n            ) : null}\n            {pnd?.name ? (\n              <label className=\"label\">\n                <span className=\"rtl:pr-1\">{t('corpAccount')}</span>\n                <FormInput type=\"checkbox\" label={pnd?.name} name=\"specialRates.usePnd\" />\n              </label>\n            ) : null}\n          </div>\n        ) : null}\n        <div\n          data-osc-product=\"search-rates-second\"\n          className=\"grid gap-4 md:grid-cols-1 lg:grid-cols-2\"\n        >\n          {!offerId?.name && !requestedRatesOnly ? (\n            <FormInput\n              label={t('promoCode')}\n              labelClassName=\"w-full\"\n              name=\"specialRates.promoCode\"\n              disabled={!!isOfferIdSelected || (oneCode && !promoCode)}\n              maxLength={6}\n              registerOptions={{\n                pattern: {\n                  value: /^[A-Za-z0-9]{2,6}$/,\n                  message: t('promoCodeError'),\n                },\n              }}\n            />\n          ) : null}\n          <FormInput\n            label={t('groupCode')}\n            labelClassName=\"w-full\"\n            name=\"specialRates.groupCode\"\n            disabled={oneCode && !groupCode}\n            maxLength={6}\n            registerOptions={{\n              pattern: {\n                value: /^[A-Za-z0-9]{2,6}$/,\n                message: t('groupCodeError'),\n              },\n            }}\n          />\n          <div>\n            {!pnd?.name ? (\n              <FormInput\n                label={t('corpAccount')}\n                labelClassName=\"w-full\"\n                name=\"specialRates.corporateCode\"\n                disabled={isCorpFieldDisabled}\n                maxLength={10}\n                registerOptions={{\n                  pattern: {\n                    value: /^[A-Za-z0-9]{2,10}$/,\n                    message: t('corpAccountError'),\n                  },\n                }}\n              />\n            ) : null}\n          </div>\n        </div>\n      </div>\n      <div className=\"text-text-alt\" aria-live=\"polite\">\n        {oneCode && (\n          <div className=\"flex gap-1\">\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              viewBox=\"0 0 24 24\"\n              aria-hidden=\"true\"\n              focusable=\"false\"\n              className=\"text-text-disabled size-5 shrink-0\"\n            >\n              <circle fill=\"#FFF\" cx=\"12\" cy=\"12\" r=\"11.5\" />\n              <circle fill=\"currentColor\" cx=\"12\" cy=\"12\" r=\"10\" />\n              <path\n                fill=\"#FFF\"\n                d=\"m14 15.25h-1.25v-4.25c0-.41-.34-.75-.75-.75h-2c-.41 0-.75.34-.75.75s.34.75.75.75h1.25v3.5h-1.25c-.41 0-.75.34-.75.75s.34.75.75.75h4c.41 0 .75-.34.75-.75s-.34-.75-.75-.75z\"\n              />\n              <path fill=\"#FFF\" d=\"m12 9c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1z\" />\n            </svg>{' '}\n            {t('oneCodeError')}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default SpecialRates;\n","export * from './lib/special-rates';\nexport * from './lib/utils';\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 FeatureTogglesDocument = {\n  operationName: 'featureToggles_featureConfigs',\n  operationString: `query featureToggles_featureConfigs($names: [String!]!) {\n  featureToggles(names: $names) {\n    enabled\n    name\n  }\n  featureConfigs(names: $names) {\n    name\n    config\n    conditions\n  }\n}`,\n  originalOpName: 'featureToggles',\n};\nexport function useFeatureTogglesQuery<TData = Types.FeatureTogglesQuery, TError = DXError>(\n  variables: Types.FeatureTogglesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.FeatureTogglesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.FeatureTogglesQuery, TError, TData>({\n    queryKey: [FeatureTogglesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideFeatureTogglesQuery(\n  queryClient: QueryClient,\n  variables: Types.FeatureTogglesQueryVariables,\n  options?: FetchQueryOptions<Types.FeatureTogglesQuery>\n) {\n  return queryClient.fetchQuery<Types.FeatureTogglesQuery>({\n    queryKey: [FeatureTogglesDocument, variables],\n    ...options,\n  });\n}\n\nexport const GeocodeDocument = {\n  operationName: 'geocode',\n  operationString: `query geocode($address: String, $language: String!, $placeId: String, $sessionToken: String) {\n  geocode(\n    language: $language\n    address: $address\n    placeId: $placeId\n    sessionToken: $sessionToken\n  ) {\n    match {\n      _id\n      id\n      address {\n        _id\n        city\n        country\n        countryName\n        postalCode\n        state\n        stateName\n      }\n      geometry {\n        location {\n          latitude\n          longitude\n        }\n        bounds {\n          northeast {\n            latitude\n            longitude\n          }\n          southwest {\n            latitude\n            longitude\n          }\n        }\n      }\n      name\n      placeUri\n      type\n    }\n  }\n}`,\n  originalOpName: 'geocode',\n};\nexport function useGeocodeQuery<TData = Types.GeocodeQuery, TError = DXError>(\n  variables: Types.GeocodeQueryVariables,\n  options?: Omit<UseQueryOptions<Types.GeocodeQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.GeocodeQuery, TError, TData>({\n    queryKey: [GeocodeDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGeocodeQuery(\n  queryClient: QueryClient,\n  variables: Types.GeocodeQueryVariables,\n  options?: FetchQueryOptions<Types.GeocodeQuery>\n) {\n  return queryClient.fetchQuery<Types.GeocodeQuery>({\n    queryKey: [GeocodeDocument, variables],\n    ...options,\n  });\n}\n","import n,{createContext as r,useContext as i}from\"react\";let e=r(void 0);function a(){return i(e)}function l({value:t,children:o}){return n.createElement(e.Provider,{value:t},o)}export{l as DisabledProvider,a as useDisabled};\n","function t(e){typeof queueMicrotask==\"function\"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}export{t as microTask};\n","import{microTask as i}from'./micro-task.js';function o(){let n=[],r={addEventListener(e,t,s,a){return e.addEventListener(t,s,a),r.add(()=>e.removeEventListener(t,s,a))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return i(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,s){let a=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:s}),this.add(()=>{Object.assign(e.style,{[t]:a})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return n.includes(e)||n.push(e),()=>{let t=n.indexOf(e);if(t>=0)for(let s of n.splice(t,1))s()}},dispose(){for(let e of n.splice(0))e()}};return r}export{o as disposables};\n","import{useEffect as s,useState as o}from\"react\";import{disposables as t}from'../utils/disposables.js';function p(){let[e]=o(t);return s(()=>()=>e.dispose(),[e]),e}export{p as useDisposables};\n","function e(i={},s=null,t=[]){for(let[r,n]of Object.entries(i))o(t,f(s,r),n);return t}function f(i,s){return i?i+\"[\"+s+\"]\":s}function o(i,s,t){if(Array.isArray(t))for(let[r,n]of t.entries())o(i,f(s,r.toString()),n);else t instanceof Date?i.push([s,t.toISOString()]):typeof t==\"boolean\"?i.push([s,t?\"1\":\"0\"]):typeof t==\"string\"?i.push([s,t]):typeof t==\"number\"?i.push([s,`${t}`]):t==null?i.push([s,\"\"]):e(t,s,i)}function p(i){var t,r;let s=(t=i==null?void 0:i.form)!=null?t:i.closest(\"form\");if(s){for(let n of s.elements)if(n!==i&&(n.tagName===\"INPUT\"&&n.type===\"submit\"||n.tagName===\"BUTTON\"&&n.type===\"submit\"||n.nodeName===\"INPUT\"&&n.type===\"image\")){n.click();return}(r=s.requestSubmit)==null||r.call(s)}}export{p as attemptSubmit,e as objectToFormEntries};\n","function t(...r){return Array.from(new Set(r.flatMap(n=>typeof n==\"string\"?n.split(\" \"):[]))).filter(Boolean).join(\" \")}export{t as classNames};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","import E,{Fragment as b,cloneElement as j,createElement as v,forwardRef as S,isValidElement as w,useCallback as x,useRef as k}from\"react\";import{classNames as N}from'./class-names.js';import{match as M}from'./match.js';var O=(a=>(a[a.None=0]=\"None\",a[a.RenderStrategy=1]=\"RenderStrategy\",a[a.Static=2]=\"Static\",a))(O||{}),A=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(A||{});function L(){let n=U();return x(r=>C({mergeRefs:n,...r}),[n])}function C({ourProps:n,theirProps:r,slot:e,defaultTag:a,features:s,visible:t=!0,name:l,mergeRefs:i}){i=i!=null?i:$;let o=P(r,n);if(t)return F(o,e,a,l,i);let y=s!=null?s:0;if(y&2){let{static:f=!1,...u}=o;if(f)return F(u,e,a,l,i)}if(y&1){let{unmount:f=!0,...u}=o;return M(f?0:1,{[0](){return null},[1](){return F({...u,hidden:!0,style:{display:\"none\"}},e,a,l,i)}})}return F(o,e,a,l,i)}function F(n,r={},e,a,s){let{as:t=e,children:l,refName:i=\"ref\",...o}=h(n,[\"unmount\",\"static\"]),y=n.ref!==void 0?{[i]:n.ref}:{},f=typeof l==\"function\"?l(r):l;\"className\"in o&&o.className&&typeof o.className==\"function\"&&(o.className=o.className(r)),o[\"aria-labelledby\"]&&o[\"aria-labelledby\"]===o.id&&(o[\"aria-labelledby\"]=void 0);let u={};if(r){let d=!1,p=[];for(let[c,T]of Object.entries(r))typeof T==\"boolean\"&&(d=!0),T===!0&&p.push(c.replace(/([A-Z])/g,g=>`-${g.toLowerCase()}`));if(d){u[\"data-headlessui-state\"]=p.join(\" \");for(let c of p)u[`data-${c}`]=\"\"}}if(t===b&&(Object.keys(m(o)).length>0||Object.keys(m(u)).length>0))if(!w(f)||Array.isArray(f)&&f.length>1){if(Object.keys(m(o)).length>0)throw new Error(['Passing props on \"Fragment\"!',\"\",`The current component <${a} /> is rendering a \"Fragment\".`,\"However we need to passthrough the following props:\",Object.keys(m(o)).concat(Object.keys(m(u))).map(d=>`  - ${d}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(d=>`  - ${d}`).join(`\n`)].join(`\n`))}else{let d=f.props,p=d==null?void 0:d.className,c=typeof p==\"function\"?(...R)=>N(p(...R),o.className):N(p,o.className),T=c?{className:c}:{},g=P(f.props,m(h(o,[\"ref\"])));for(let R in u)R in g&&delete u[R];return j(f,Object.assign({},g,u,y,{ref:s(H(f),y.ref)},T))}return v(t,Object.assign({},h(o,[\"ref\"]),t!==b&&y,t!==b&&u),f)}function U(){let n=k([]),r=x(e=>{for(let a of n.current)a!=null&&(typeof a==\"function\"?a(e):a.current=e)},[]);return(...e)=>{if(!e.every(a=>a==null))return n.current=e,r}}function $(...n){return n.every(r=>r==null)?void 0:r=>{for(let e of n)e!=null&&(typeof e==\"function\"?e(r):e.current=r)}}function P(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];if(r.disabled||r[\"aria-disabled\"])for(let s in e)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(s)&&(e[s]=[t=>{var l;return(l=t==null?void 0:t.preventDefault)==null?void 0:l.call(t)}]);for(let s in e)Object.assign(r,{[s](t,...l){let i=e[s];for(let o of i){if((t instanceof Event||(t==null?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;o(t,...l)}}});return r}function _(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];for(let s in e)Object.assign(r,{[s](...t){let l=e[s];for(let i of l)i==null||i(...t)}});return r}function K(n){var r;return Object.assign(S(n),{displayName:(r=n.displayName)!=null?r:n.name})}function m(n){let r=Object.assign({},n);for(let e in r)r[e]===void 0&&delete r[e];return r}function h(n,r=[]){let e=Object.assign({},n);for(let a of r)a in e&&delete e[a];return e}function H(n){return E.version.split(\".\")[0]>=\"19\"?n.props.ref:n.ref}export{O as RenderFeatures,A as RenderStrategy,m as compact,K as forwardRefWithAs,_ as mergeProps,L as useRender};\n","import{forwardRefWithAs as i,useRender as p}from'../utils/render.js';let a=\"span\";var s=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(s||{});function l(t,r){var n;let{features:d=1,...e}=t,o={ref:r,\"aria-hidden\":(d&2)===2?!0:(n=e[\"aria-hidden\"])!=null?n:void 0,hidden:(d&4)===4?!0:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(d&4)===4&&(d&2)!==2&&{display:\"none\"}}};return p()({ourProps:o,theirProps:e,slot:{},defaultTag:a,name:\"Hidden\"})}let f=i(l);export{f as Hidden,s as HiddenFeatures};\n","import o,{createContext as H,useContext as E,useEffect as m,useState as u}from\"react\";import{createPortal as g}from\"react-dom\";import{useDisposables as h}from'../hooks/use-disposables.js';import{objectToFormEntries as x}from'../utils/form.js';import{compact as y}from'../utils/render.js';import{Hidden as l,HiddenFeatures as d}from'./hidden.js';let f=H(null);function W(t){let[e,r]=u(null);return o.createElement(f.Provider,{value:{target:e}},t.children,o.createElement(l,{features:d.Hidden,ref:r}))}function c({children:t}){let e=E(f);if(!e)return o.createElement(o.Fragment,null,t);let{target:r}=e;return r?g(o.createElement(o.Fragment,null,t),r):null}function j({data:t,form:e,disabled:r,onReset:n,overrides:F}){let[i,a]=u(null),p=h();return m(()=>{if(n&&i)return p.addEventListener(i,\"reset\",n)},[i,e,n]),o.createElement(c,null,o.createElement(C,{setForm:a,formId:e}),x(t).map(([s,v])=>o.createElement(l,{features:d.Hidden,...y({key:s,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,form:e,disabled:r,name:s,value:v,...F})})))}function C({setForm:t,formId:e}){return m(()=>{if(e){let r=document.getElementById(e);r&&t(r)}},[t,e]),e?null:o.createElement(l,{features:d.Hidden,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,ref:r=>{if(!r)return;let n=r.closest(\"form\");n&&t(n)}})}export{j as FormFields,W as FormFieldsProvider,c as HoistFormFields};\n","import n,{createContext as d,useContext as i}from\"react\";let e=d(void 0);function u(){return i(e)}function f({id:t,children:r}){return n.createElement(e.Provider,{value:t},r)}export{f as IdProvider,u as useProvidedId};\n","var i=Object.defineProperty;var d=(t,e,n)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var r=(t,e,n)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,n),n);class o{constructor(){r(this,\"current\",this.detect());r(this,\"handoffState\",\"pending\");r(this,\"currentId\",0)}set(e){this.current!==e&&(this.handoffState=\"pending\",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}handoff(){this.handoffState===\"pending\"&&(this.handoffState=\"complete\")}get isHandoffComplete(){return this.handoffState===\"complete\"}}let s=new o;export{s as env};\n","import{useEffect as f,useLayoutEffect as c}from\"react\";import{env as i}from'../utils/env.js';let n=(e,t)=>{i.isServer?f(e,t):c(e,t)};export{n as useIsoMorphicEffect};\n","import{useRef as t}from\"react\";import{useIsoMorphicEffect as o}from'./use-iso-morphic-effect.js';function s(e){let r=t(e);return o(()=>{r.current=e},[e]),r}export{s as useLatestValue};\n","import a from\"react\";import{useLatestValue as n}from'./use-latest-value.js';let o=function(t){let e=n(t);return a.useCallback((...r)=>e.current(...r),[e])};export{o as useEvent};\n","import{useEffect as l,useRef as i}from\"react\";import{useEvent as r}from'./use-event.js';let u=Symbol();function T(t,n=!0){return Object.assign(t,{[u]:n})}function y(...t){let n=i(t);l(()=>{n.current=t},[t]);let c=r(e=>{for(let o of n.current)o!=null&&(typeof o==\"function\"?o(e):o.current=e)});return t.every(e=>e==null||(e==null?void 0:e[u]))?void 0:c}export{T as optionalRef,y as useSyncRefs};\n","\"use client\";import m,{createContext as T,useContext as u,useMemo as c,useState as P}from\"react\";import{useEvent as g}from'../../hooks/use-event.js';import{useId as x}from'../../hooks/use-id.js';import{useIsoMorphicEffect as y}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as E}from'../../hooks/use-sync-refs.js';import{useDisabled as v}from'../../internal/disabled.js';import{forwardRefWithAs as R,useRender as I}from'../../utils/render.js';let a=T(null);a.displayName=\"DescriptionContext\";function f(){let r=u(a);if(r===null){let e=new Error(\"You used a <Description /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(e,f),e}return r}function U(){var r,e;return(e=(r=u(a))==null?void 0:r.value)!=null?e:void 0}function w(){let[r,e]=P([]);return[r.length>0?r.join(\" \"):void 0,c(()=>function(t){let i=g(n=>(e(s=>[...s,n]),()=>e(s=>{let o=s.slice(),p=o.indexOf(n);return p!==-1&&o.splice(p,1),o}))),l=c(()=>({register:i,slot:t.slot,name:t.name,props:t.props,value:t.value}),[i,t.slot,t.name,t.props,t.value]);return m.createElement(a.Provider,{value:l},t.children)},[e])]}let S=\"p\";function C(r,e){let d=x(),t=v(),{id:i=`headlessui-description-${d}`,...l}=r,n=f(),s=E(e);y(()=>n.register(i),[i,n.register]);let o=t||!1,p=c(()=>({...n.slot,disabled:o}),[n.slot,o]),D={ref:s,...n.props,id:i};return I()({ourProps:D,theirProps:l,slot:p,defaultTag:S,name:n.name||\"Description\"})}let _=R(C),H=Object.assign(_,{});export{H as Description,U as useDescribedBy,w as useDescriptions};\n","\"use client\";import R,{createContext as k,useContext as h,useMemo as T,useState as D}from\"react\";import{useEvent as v}from'../../hooks/use-event.js';import{useId as _}from'../../hooks/use-id.js';import{useIsoMorphicEffect as A}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as B}from'../../hooks/use-sync-refs.js';import{useDisabled as F}from'../../internal/disabled.js';import{useProvidedId as S}from'../../internal/id.js';import{forwardRefWithAs as M,useRender as H}from'../../utils/render.js';let c=k(null);c.displayName=\"LabelContext\";function P(){let r=h(c);if(r===null){let l=new Error(\"You used a <Label /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(l,P),l}return r}function I(r){var a,e,o;let l=(e=(a=h(c))==null?void 0:a.value)!=null?e:void 0;return((o=r==null?void 0:r.length)!=null?o:0)>0?[l,...r].filter(Boolean).join(\" \"):l}function K({inherit:r=!1}={}){let l=I(),[a,e]=D([]),o=r?[l,...a].filter(Boolean):a;return[o.length>0?o.join(\" \"):void 0,T(()=>function(t){let s=v(i=>(e(p=>[...p,i]),()=>e(p=>{let u=p.slice(),d=u.indexOf(i);return d!==-1&&u.splice(d,1),u}))),m=T(()=>({register:s,slot:t.slot,name:t.name,props:t.props,value:t.value}),[s,t.slot,t.name,t.props,t.value]);return R.createElement(c.Provider,{value:m},t.children)},[e])]}let N=\"label\";function G(r,l){var y;let a=_(),e=P(),o=S(),g=F(),{id:t=`headlessui-label-${a}`,htmlFor:s=o!=null?o:(y=e.props)==null?void 0:y.htmlFor,passive:m=!1,...i}=r,p=B(l);A(()=>e.register(t),[t,e.register]);let u=v(L=>{let b=L.currentTarget;if(b instanceof HTMLLabelElement&&L.preventDefault(),e.props&&\"onClick\"in e.props&&typeof e.props.onClick==\"function\"&&e.props.onClick(L),b instanceof HTMLLabelElement){let n=document.getElementById(b.htmlFor);if(n){let E=n.getAttribute(\"disabled\");if(E===\"true\"||E===\"\")return;let x=n.getAttribute(\"aria-disabled\");if(x===\"true\"||x===\"\")return;(n instanceof HTMLInputElement&&(n.type===\"radio\"||n.type===\"checkbox\")||n.role===\"radio\"||n.role===\"checkbox\"||n.role===\"switch\")&&n.click(),n.focus({preventScroll:!0})}}}),d=g||!1,C=T(()=>({...e.slot,disabled:d}),[e.slot,d]),f={ref:p,...e.props,id:t,htmlFor:s,onClick:u};return m&&(\"onClick\"in f&&(delete f.htmlFor,delete f.onClick),\"onClick\"in i&&delete i.onClick),H()({ourProps:f,theirProps:i,slot:C,defaultTag:s?N:\"div\",name:e.name||\"Label\"})}let U=M(G),Q=Object.assign(U,{});export{Q as Label,P as useLabelContext,I as useLabelledBy,K as useLabels};\n","\"use client\";import r,{useMemo as f}from\"react\";import{useId as P}from'../../hooks/use-id.js';import{DisabledProvider as y,useDisabled as u}from'../../internal/disabled.js';import{FormFieldsProvider as D}from'../../internal/form-fields.js';import{IdProvider as v}from'../../internal/id.js';import{forwardRefWithAs as b,useRender as E}from'../../utils/render.js';import{useDescriptions as A}from'../description/description.js';import{useLabels as L}from'../label/label.js';let _=\"div\";function c(d,l){let t=`headlessui-control-${P()}`,[s,p]=L(),[n,a]=A(),m=u(),{disabled:e=m||!1,...i}=d,o=f(()=>({disabled:e}),[e]),F={ref:l,disabled:e||void 0,\"aria-disabled\":e||void 0},T=E();return r.createElement(y,{value:e},r.createElement(p,{value:s},r.createElement(a,{value:n},r.createElement(v,{id:t},T({ourProps:F,theirProps:{...i,children:r.createElement(D,null,typeof i.children==\"function\"?i.children(o):i.children)},slot:o,defaultTag:_,name:\"Field\"})))))}let H=b(c);export{H as Field};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n    var _window_navigator_userAgentData;\n    if (typeof window === 'undefined' || window.navigator == null) return false;\n    return ((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands.some((brand)=>re.test(brand.brand))) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n    var _window_navigator_userAgentData;\n    return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$var$cached(fn) {\n    let res = null;\n    return ()=>{\n        if (res == null) res = fn();\n        return res;\n    };\n}\nconst $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n});\nconst $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n});\nconst $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n    $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n});\nconst $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n});\nconst $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n});\nconst $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n});\nconst $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n});\nconst $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/Android/i);\n});\nconst $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/Firefox/i);\n});\n\n\nexport {$c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $c87311424ea30a05$export$b7d78993b74f766d as isFirefox};\n//# sourceMappingURL=platform.module.js.map\n","import {isAndroid as $c87311424ea30a05$export$a11b0059900ceec8} from \"./platform.mjs\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n    // JAWS/NVDA with Firefox.\n    if (event.mozInputSource === 0 && event.isTrusted) return true;\n    // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n    // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n    // to detect TalkBack virtual clicks.\n    if ((0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n    return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n    // If the pointer size is zero, then we assume it's from a screen reader.\n    // Android TalkBack double tap will sometimes return a event with width and height of 1\n    // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n    // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n    // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n    // Talkback double tap from Windows Firefox touch screen press\n    return !(0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\nexport {$6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=isVirtualEvent.module.js.map\n","const $431fbd86ca7dc216$export$b204af158042fbac = (el)=>{\n    var _el_ownerDocument;\n    return (_el_ownerDocument = el === null || el === void 0 ? void 0 : el.ownerDocument) !== null && _el_ownerDocument !== void 0 ? _el_ownerDocument : document;\n};\nconst $431fbd86ca7dc216$export$f21a1ffae260145a = (el)=>{\n    if (el && 'window' in el && el.window === el) return el;\n    const doc = $431fbd86ca7dc216$export$b204af158042fbac(el);\n    return doc.defaultView || window;\n};\n\n\nexport {$431fbd86ca7dc216$export$b204af158042fbac as getOwnerDocument, $431fbd86ca7dc216$export$f21a1ffae260145a as getOwnerWindow};\n//# sourceMappingURL=domHelpers.module.js.map\n","import {isMac as $28AnR$isMac, isVirtualClick as $28AnR$isVirtualClick, getOwnerWindow as $28AnR$getOwnerWindow, getOwnerDocument as $28AnR$getOwnerDocument} from \"@react-aria/utils\";\nimport {useState as $28AnR$useState, useEffect as $28AnR$useEffect} from \"react\";\nimport {useIsSSR as $28AnR$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nlet $507fabe10e71c6fb$var$currentModality = null;\nlet $507fabe10e71c6fb$var$changeHandlers = new Set();\nlet $507fabe10e71c6fb$export$d90243b58daecda7 = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\nlet $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst $507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS = {\n    Tab: true,\n    Escape: true\n};\nfunction $507fabe10e71c6fb$var$triggerChangeHandlers(modality, e) {\n    for (let handler of $507fabe10e71c6fb$var$changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function $507fabe10e71c6fb$var$isValidKey(e) {\n    // Control and Shift keys trigger when navigating back to the tab with keyboard.\n    return !(e.metaKey || !(0, $28AnR$isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction $507fabe10e71c6fb$var$handleKeyboardEvent(e) {\n    $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n    if ($507fabe10e71c6fb$var$isValidKey(e)) {\n        $507fabe10e71c6fb$var$currentModality = 'keyboard';\n        $507fabe10e71c6fb$var$triggerChangeHandlers('keyboard', e);\n    }\n}\nfunction $507fabe10e71c6fb$var$handlePointerEvent(e) {\n    $507fabe10e71c6fb$var$currentModality = 'pointer';\n    if (e.type === 'mousedown' || e.type === 'pointerdown') {\n        $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n        $507fabe10e71c6fb$var$triggerChangeHandlers('pointer', e);\n    }\n}\nfunction $507fabe10e71c6fb$var$handleClickEvent(e) {\n    if ((0, $28AnR$isVirtualClick)(e)) {\n        $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n        $507fabe10e71c6fb$var$currentModality = 'virtual';\n    }\n}\nfunction $507fabe10e71c6fb$var$handleFocusEvent(e) {\n    // Firefox fires two extra focus events when the user first clicks into an iframe:\n    // first on the window, then on the document. We ignore these events so they don't\n    // cause keyboard focus rings to appear.\n    if (e.target === window || e.target === document) return;\n    // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n    // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n    if (!$507fabe10e71c6fb$var$hasEventBeforeFocus && !$507fabe10e71c6fb$var$hasBlurredWindowRecently) {\n        $507fabe10e71c6fb$var$currentModality = 'virtual';\n        $507fabe10e71c6fb$var$triggerChangeHandlers('virtual', e);\n    }\n    $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n    $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n}\nfunction $507fabe10e71c6fb$var$handleWindowBlur() {\n    // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n    // for example, since a subsequent focus event won't be fired.\n    $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n    $507fabe10e71c6fb$var$hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function $507fabe10e71c6fb$var$setupGlobalFocusEvents(element) {\n    if (typeof window === 'undefined' || $507fabe10e71c6fb$export$d90243b58daecda7.get((0, $28AnR$getOwnerWindow)(element))) return;\n    const windowObject = (0, $28AnR$getOwnerWindow)(element);\n    const documentObject = (0, $28AnR$getOwnerDocument)(element);\n    // Programmatic focus() calls shouldn't affect the current input modality.\n    // However, we need to detect other cases when a focus event occurs without\n    // a preceding user event (e.g. screen reader focus). Overriding the focus\n    // method on HTMLElement.prototype is a bit hacky, but works.\n    let focus = windowObject.HTMLElement.prototype.focus;\n    windowObject.HTMLElement.prototype.focus = function() {\n        $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n        focus.apply(this, arguments);\n    };\n    documentObject.addEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.addEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.addEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n    // Register focus events on the window so they are sure to happen\n    // before React's event listeners (registered on the document).\n    windowObject.addEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n    windowObject.addEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.addEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    } else {\n        documentObject.addEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    }\n    // Add unmount handler\n    windowObject.addEventListener('beforeunload', ()=>{\n        $507fabe10e71c6fb$var$tearDownWindowFocusTracking(element);\n    }, {\n        once: true\n    });\n    $507fabe10e71c6fb$export$d90243b58daecda7.set(windowObject, {\n        focus: focus\n    });\n}\nconst $507fabe10e71c6fb$var$tearDownWindowFocusTracking = (element, loadListener)=>{\n    const windowObject = (0, $28AnR$getOwnerWindow)(element);\n    const documentObject = (0, $28AnR$getOwnerDocument)(element);\n    if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n    if (!$507fabe10e71c6fb$export$d90243b58daecda7.has(windowObject)) return;\n    windowObject.HTMLElement.prototype.focus = $507fabe10e71c6fb$export$d90243b58daecda7.get(windowObject).focus;\n    documentObject.removeEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.removeEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.removeEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n    windowObject.removeEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n    windowObject.removeEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.removeEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    } else {\n        documentObject.removeEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    }\n    $507fabe10e71c6fb$export$d90243b58daecda7.delete(windowObject);\n};\nfunction $507fabe10e71c6fb$export$2f1888112f558a7d(element) {\n    const documentObject = (0, $28AnR$getOwnerDocument)(element);\n    let loadListener;\n    if (documentObject.readyState !== 'loading') $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n    else {\n        loadListener = ()=>{\n            $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n        };\n        documentObject.addEventListener('DOMContentLoaded', loadListener);\n    }\n    return ()=>$507fabe10e71c6fb$var$tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') $507fabe10e71c6fb$export$2f1888112f558a7d();\nfunction $507fabe10e71c6fb$export$b9b3dfddab17db27() {\n    return $507fabe10e71c6fb$var$currentModality !== 'pointer';\n}\nfunction $507fabe10e71c6fb$export$630ff653c5ada6a9() {\n    return $507fabe10e71c6fb$var$currentModality;\n}\nfunction $507fabe10e71c6fb$export$8397ddfc504fdb9a(modality) {\n    $507fabe10e71c6fb$var$currentModality = modality;\n    $507fabe10e71c6fb$var$triggerChangeHandlers(modality, null);\n}\nfunction $507fabe10e71c6fb$export$98e20ec92f614cfe() {\n    $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n    let [modality, setModality] = (0, $28AnR$useState)($507fabe10e71c6fb$var$currentModality);\n    (0, $28AnR$useEffect)(()=>{\n        let handler = ()=>{\n            setModality($507fabe10e71c6fb$var$currentModality);\n        };\n        $507fabe10e71c6fb$var$changeHandlers.add(handler);\n        return ()=>{\n            $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n        };\n    }, []);\n    return (0, $28AnR$useIsSSR)() ? null : modality;\n}\nconst $507fabe10e71c6fb$var$nonTextInputTypes = new Set([\n    'checkbox',\n    'radio',\n    'range',\n    'color',\n    'file',\n    'image',\n    'button',\n    'submit',\n    'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function $507fabe10e71c6fb$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n    var _e_target;\n    const IHTMLInputElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLInputElement : HTMLInputElement;\n    const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLTextAreaElement : HTMLTextAreaElement;\n    const IHTMLElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLElement : HTMLElement;\n    const IKeyboardEvent = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).KeyboardEvent : KeyboardEvent;\n    isTextInput = isTextInput || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLInputElement && !$507fabe10e71c6fb$var$nonTextInputTypes.has(e === null || e === void 0 ? void 0 : (_e_target = e.target) === null || _e_target === void 0 ? void 0 : _e_target.type) || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLTextAreaElement || (e === null || e === void 0 ? void 0 : e.target) instanceof IHTMLElement && (e === null || e === void 0 ? void 0 : e.target.isContentEditable);\n    return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction $507fabe10e71c6fb$export$ffd9e5021c1fb2d6(props = {}) {\n    let { isTextInput: isTextInput, autoFocus: autoFocus } = props;\n    let [isFocusVisibleState, setFocusVisible] = (0, $28AnR$useState)(autoFocus || $507fabe10e71c6fb$export$b9b3dfddab17db27());\n    $507fabe10e71c6fb$export$ec71b4b83ac08ec3((isFocusVisible)=>{\n        setFocusVisible(isFocusVisible);\n    }, [\n        isTextInput\n    ], {\n        isTextInput: isTextInput\n    });\n    return {\n        isFocusVisible: isFocusVisibleState\n    };\n}\nfunction $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {\n    $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n    (0, $28AnR$useEffect)(()=>{\n        let handler = (modality, e)=>{\n            if (!$507fabe10e71c6fb$var$isKeyboardFocusEvent(!!(opts === null || opts === void 0 ? void 0 : opts.isTextInput), modality, e)) return;\n            fn($507fabe10e71c6fb$export$b9b3dfddab17db27());\n        };\n        $507fabe10e71c6fb$var$changeHandlers.add(handler);\n        return ()=>{\n            $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n        };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, deps);\n}\n\n\nexport {$507fabe10e71c6fb$export$d90243b58daecda7 as hasSetupGlobalListeners, $507fabe10e71c6fb$export$2f1888112f558a7d as addWindowFocusTracking, $507fabe10e71c6fb$export$b9b3dfddab17db27 as isFocusVisible, $507fabe10e71c6fb$export$630ff653c5ada6a9 as getInteractionModality, $507fabe10e71c6fb$export$8397ddfc504fdb9a as setInteractionModality, $507fabe10e71c6fb$export$98e20ec92f614cfe as useInteractionModality, $507fabe10e71c6fb$export$ffd9e5021c1fb2d6 as useFocusVisible, $507fabe10e71c6fb$export$ec71b4b83ac08ec3 as useFocusVisibleListener};\n//# sourceMappingURL=useFocusVisible.module.js.map\n","import $HgANd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== 'undefined' ? (0, $HgANd$react).useLayoutEffect : ()=>{};\n\n\nexport {$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=useLayoutEffect.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useRef as $lmaYr$useRef, useCallback as $lmaYr$useCallback} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8ae05eaa5c114e9c$export$7f54fc3180508a52(fn) {\n    const ref = (0, $lmaYr$useRef)(null);\n    (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n        ref.current = fn;\n    }, [\n        fn\n    ]);\n    // @ts-ignore\n    return (0, $lmaYr$useCallback)((...args)=>{\n        const f = ref.current;\n        return f === null || f === void 0 ? void 0 : f(...args);\n    }, []);\n}\n\n\nexport {$8ae05eaa5c114e9c$export$7f54fc3180508a52 as useEffectEvent};\n//# sourceMappingURL=useEffectEvent.module.js.map\n","import {useRef as $6dfIe$useRef, useCallback as $6dfIe$useCallback} from \"react\";\nimport {useLayoutEffect as $6dfIe$useLayoutEffect, useEffectEvent as $6dfIe$useEffectEvent} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nclass $8a9cb279dc87e130$export$905e7fc544a71f36 {\n    isDefaultPrevented() {\n        return this.nativeEvent.defaultPrevented;\n    }\n    preventDefault() {\n        this.defaultPrevented = true;\n        this.nativeEvent.preventDefault();\n    }\n    stopPropagation() {\n        this.nativeEvent.stopPropagation();\n        this.isPropagationStopped = ()=>true;\n    }\n    isPropagationStopped() {\n        return false;\n    }\n    persist() {}\n    constructor(type, nativeEvent){\n        this.nativeEvent = nativeEvent;\n        this.target = nativeEvent.target;\n        this.currentTarget = nativeEvent.currentTarget;\n        this.relatedTarget = nativeEvent.relatedTarget;\n        this.bubbles = nativeEvent.bubbles;\n        this.cancelable = nativeEvent.cancelable;\n        this.defaultPrevented = nativeEvent.defaultPrevented;\n        this.eventPhase = nativeEvent.eventPhase;\n        this.isTrusted = nativeEvent.isTrusted;\n        this.timeStamp = nativeEvent.timeStamp;\n        this.type = type;\n    }\n}\nfunction $8a9cb279dc87e130$export$715c682d09d639cc(onBlur) {\n    let stateRef = (0, $6dfIe$useRef)({\n        isFocused: false,\n        observer: null\n    });\n    // Clean up MutationObserver on unmount. See below.\n    (0, $6dfIe$useLayoutEffect)(()=>{\n        const state = stateRef.current;\n        return ()=>{\n            if (state.observer) {\n                state.observer.disconnect();\n                state.observer = null;\n            }\n        };\n    }, []);\n    let dispatchBlur = (0, $6dfIe$useEffectEvent)((e)=>{\n        onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n    });\n    // This function is called during a React onFocus event.\n    return (0, $6dfIe$useCallback)((e)=>{\n        // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n        // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n        // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n        // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n        if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n            stateRef.current.isFocused = true;\n            let target = e.target;\n            let onBlurHandler = (e)=>{\n                stateRef.current.isFocused = false;\n                if (target.disabled) // For backward compatibility, dispatch a (fake) React synthetic event.\n                dispatchBlur(new $8a9cb279dc87e130$export$905e7fc544a71f36('blur', e));\n                // We no longer need the MutationObserver once the target is blurred.\n                if (stateRef.current.observer) {\n                    stateRef.current.observer.disconnect();\n                    stateRef.current.observer = null;\n                }\n            };\n            target.addEventListener('focusout', onBlurHandler, {\n                once: true\n            });\n            stateRef.current.observer = new MutationObserver(()=>{\n                if (stateRef.current.isFocused && target.disabled) {\n                    var _stateRef_current_observer;\n                    (_stateRef_current_observer = stateRef.current.observer) === null || _stateRef_current_observer === void 0 ? void 0 : _stateRef_current_observer.disconnect();\n                    let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n                    target.dispatchEvent(new FocusEvent('blur', {\n                        relatedTarget: relatedTargetEl\n                    }));\n                    target.dispatchEvent(new FocusEvent('focusout', {\n                        bubbles: true,\n                        relatedTarget: relatedTargetEl\n                    }));\n                }\n            });\n            stateRef.current.observer.observe(target, {\n                attributes: true,\n                attributeFilter: [\n                    'disabled'\n                ]\n            });\n        }\n    }, [\n        dispatchBlur\n    ]);\n}\n\n\nexport {$8a9cb279dc87e130$export$905e7fc544a71f36 as SyntheticFocusEvent, $8a9cb279dc87e130$export$715c682d09d639cc as useSyntheticBlurEvent};\n//# sourceMappingURL=utils.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useCallback as $hf0lj$useCallback} from \"react\";\nimport {getOwnerDocument as $hf0lj$getOwnerDocument} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {\n    let { isDisabled: isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange: onFocusChange } = props;\n    const onBlur = (0, $hf0lj$useCallback)((e)=>{\n        if (e.target === e.currentTarget) {\n            if (onBlurProp) onBlurProp(e);\n            if (onFocusChange) onFocusChange(false);\n            return true;\n        }\n    }, [\n        onBlurProp,\n        onFocusChange\n    ]);\n    const onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n    const onFocus = (0, $hf0lj$useCallback)((e)=>{\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        const ownerDocument = (0, $hf0lj$getOwnerDocument)(e.target);\n        if (e.target === e.currentTarget && ownerDocument.activeElement === e.target) {\n            if (onFocusProp) onFocusProp(e);\n            if (onFocusChange) onFocusChange(true);\n            onSyntheticFocus(e);\n        }\n    }, [\n        onFocusChange,\n        onFocusProp,\n        onSyntheticFocus\n    ]);\n    return {\n        focusProps: {\n            onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n            onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n        }\n    };\n}\n\n\nexport {$a1ea59d68270f0dd$export$f8168d8dd8fd66e6 as useFocus};\n//# sourceMappingURL=useFocus.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useRef as $3b9Q0$useRef, useCallback as $3b9Q0$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\nfunction $9ab94262bd0047c7$export$420e68273165f4ec(props) {\n    let { isDisabled: isDisabled, onBlurWithin: onBlurWithin, onFocusWithin: onFocusWithin, onFocusWithinChange: onFocusWithinChange } = props;\n    let state = (0, $3b9Q0$useRef)({\n        isFocusWithin: false\n    });\n    let onBlur = (0, $3b9Q0$useCallback)((e)=>{\n        // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n        // when moving focus inside the element. Only trigger if the currentTarget doesn't\n        // include the relatedTarget (where focus is moving).\n        if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n            state.current.isFocusWithin = false;\n            if (onBlurWithin) onBlurWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(false);\n        }\n    }, [\n        onBlurWithin,\n        onFocusWithinChange,\n        state\n    ]);\n    let onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n    let onFocus = (0, $3b9Q0$useCallback)((e)=>{\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        if (!state.current.isFocusWithin && document.activeElement === e.target) {\n            if (onFocusWithin) onFocusWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(true);\n            state.current.isFocusWithin = true;\n            onSyntheticFocus(e);\n        }\n    }, [\n        onFocusWithin,\n        onFocusWithinChange,\n        onSyntheticFocus\n    ]);\n    if (isDisabled) return {\n        focusWithinProps: {\n            // These should not have been null, that would conflict in mergeProps\n            onFocus: undefined,\n            onBlur: undefined\n        }\n    };\n    return {\n        focusWithinProps: {\n            onFocus: onFocus,\n            onBlur: onBlur\n        }\n    };\n}\n\n\nexport {$9ab94262bd0047c7$export$420e68273165f4ec as useFocusWithin};\n//# sourceMappingURL=useFocusWithin.module.js.map\n","import {isFocusVisible as $isWE5$isFocusVisible, useFocusVisibleListener as $isWE5$useFocusVisibleListener, useFocus as $isWE5$useFocus, useFocusWithin as $isWE5$useFocusWithin} from \"@react-aria/interactions\";\nimport {useRef as $isWE5$useRef, useState as $isWE5$useState, useCallback as $isWE5$useCallback} from \"react\";\n\n\n\nfunction $f7dceffc5ad7768b$export$4e328f61c538687f(props = {}) {\n    let { autoFocus: autoFocus = false, isTextInput: isTextInput, within: within } = props;\n    let state = (0, $isWE5$useRef)({\n        isFocused: false,\n        isFocusVisible: autoFocus || (0, $isWE5$isFocusVisible)()\n    });\n    let [isFocused, setFocused] = (0, $isWE5$useState)(false);\n    let [isFocusVisibleState, setFocusVisible] = (0, $isWE5$useState)(()=>state.current.isFocused && state.current.isFocusVisible);\n    let updateState = (0, $isWE5$useCallback)(()=>setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n    let onFocusChange = (0, $isWE5$useCallback)((isFocused)=>{\n        state.current.isFocused = isFocused;\n        setFocused(isFocused);\n        updateState();\n    }, [\n        updateState\n    ]);\n    (0, $isWE5$useFocusVisibleListener)((isFocusVisible)=>{\n        state.current.isFocusVisible = isFocusVisible;\n        updateState();\n    }, [], {\n        isTextInput: isTextInput\n    });\n    let { focusProps: focusProps } = (0, $isWE5$useFocus)({\n        isDisabled: within,\n        onFocusChange: onFocusChange\n    });\n    let { focusWithinProps: focusWithinProps } = (0, $isWE5$useFocusWithin)({\n        isDisabled: !within,\n        onFocusWithinChange: onFocusChange\n    });\n    return {\n        isFocused: isFocused,\n        isFocusVisible: isFocusVisibleState,\n        focusProps: within ? focusWithinProps : focusProps\n    };\n}\n\n\nexport {$f7dceffc5ad7768b$export$4e328f61c538687f as useFocusRing};\n//# sourceMappingURL=useFocusRing.module.js.map\n","import {useState as $AWxnT$useState, useRef as $AWxnT$useRef, useEffect as $AWxnT$useEffect, useMemo as $AWxnT$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\nlet $6179b936705e76d3$var$hoverCount = 0;\nfunction $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents() {\n    $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = true;\n    // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n    // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n    // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n    // the distant future because a user previously touched the element.\n    setTimeout(()=>{\n        $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\n    }, 50);\n}\nfunction $6179b936705e76d3$var$handleGlobalPointerEvent(e) {\n    if (e.pointerType === 'touch') $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction $6179b936705e76d3$var$setupGlobalTouchEvents() {\n    if (typeof document === 'undefined') return;\n    if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n    else document.addEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n    $6179b936705e76d3$var$hoverCount++;\n    return ()=>{\n        $6179b936705e76d3$var$hoverCount--;\n        if ($6179b936705e76d3$var$hoverCount > 0) return;\n        if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n        else document.removeEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n    };\n}\nfunction $6179b936705e76d3$export$ae780daf29e6d456(props) {\n    let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, isDisabled: isDisabled } = props;\n    let [isHovered, setHovered] = (0, $AWxnT$useState)(false);\n    let state = (0, $AWxnT$useRef)({\n        isHovered: false,\n        ignoreEmulatedMouseEvents: false,\n        pointerType: '',\n        target: null\n    }).current;\n    (0, $AWxnT$useEffect)($6179b936705e76d3$var$setupGlobalTouchEvents, []);\n    let { hoverProps: hoverProps, triggerHoverEnd: triggerHoverEnd } = (0, $AWxnT$useMemo)(()=>{\n        let triggerHoverStart = (event, pointerType)=>{\n            state.pointerType = pointerType;\n            if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n            state.isHovered = true;\n            let target = event.currentTarget;\n            state.target = target;\n            if (onHoverStart) onHoverStart({\n                type: 'hoverstart',\n                target: target,\n                pointerType: pointerType\n            });\n            if (onHoverChange) onHoverChange(true);\n            setHovered(true);\n        };\n        let triggerHoverEnd = (event, pointerType)=>{\n            state.pointerType = '';\n            state.target = null;\n            if (pointerType === 'touch' || !state.isHovered) return;\n            state.isHovered = false;\n            let target = event.currentTarget;\n            if (onHoverEnd) onHoverEnd({\n                type: 'hoverend',\n                target: target,\n                pointerType: pointerType\n            });\n            if (onHoverChange) onHoverChange(false);\n            setHovered(false);\n        };\n        let hoverProps = {};\n        if (typeof PointerEvent !== 'undefined') {\n            hoverProps.onPointerEnter = (e)=>{\n                if ($6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n                triggerHoverStart(e, e.pointerType);\n            };\n            hoverProps.onPointerLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n            };\n        } else {\n            hoverProps.onTouchStart = ()=>{\n                state.ignoreEmulatedMouseEvents = true;\n            };\n            hoverProps.onMouseEnter = (e)=>{\n                if (!state.ignoreEmulatedMouseEvents && !$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n                state.ignoreEmulatedMouseEvents = false;\n            };\n            hoverProps.onMouseLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n            };\n        }\n        return {\n            hoverProps: hoverProps,\n            triggerHoverEnd: triggerHoverEnd\n        };\n    }, [\n        onHoverStart,\n        onHoverChange,\n        onHoverEnd,\n        isDisabled,\n        state\n    ]);\n    (0, $AWxnT$useEffect)(()=>{\n        // Call the triggerHoverEnd as soon as isDisabled changes to true\n        // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n        if (isDisabled) triggerHoverEnd({\n            currentTarget: state.target\n        }, state.pointerType);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [\n        isDisabled\n    ]);\n    return {\n        hoverProps: hoverProps,\n        isHovered: isHovered\n    };\n}\n\n\nexport {$6179b936705e76d3$export$ae780daf29e6d456 as useHover};\n//# sourceMappingURL=useHover.module.js.map\n","function memo(getDeps, fn, opts) {\n  let deps = opts.initialDeps ?? [];\n  let result;\n  return () => {\n    var _a, _b, _c, _d;\n    let depTime;\n    if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n    const newDeps = getDeps();\n    const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n    if (!depsChanged) {\n      return result;\n    }\n    deps = newDeps;\n    let resultTime;\n    if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n    result = fn(...newDeps);\n    if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n      const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n      const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n      const resultFpsPercentage = resultEndTime / 16;\n      const pad = (str, num) => {\n        str = String(str);\n        while (str.length < num) {\n          str = \" \" + str;\n        }\n        return str;\n      };\n      console.info(\n        `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n        `\n            font-size: .6rem;\n            font-weight: bold;\n            color: hsl(${Math.max(\n          0,\n          Math.min(120 - 120 * resultFpsPercentage, 120)\n        )}deg 100% 31%);`,\n        opts == null ? void 0 : opts.key\n      );\n    }\n    (_d = opts == null ? void 0 : opts.onChange) == null ? void 0 : _d.call(opts, result);\n    return result;\n  };\n}\nfunction notUndefined(value, msg) {\n  if (value === void 0) {\n    throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n  } else {\n    return value;\n  }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1;\nconst debounce = (targetWindow, fn, ms) => {\n  let timeoutId;\n  return function(...args) {\n    targetWindow.clearTimeout(timeoutId);\n    timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n  };\n};\nexport {\n  approxEqual,\n  debounce,\n  memo,\n  notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n  const start = Math.max(range.startIndex - range.overscan, 0);\n  const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n  const arr = [];\n  for (let i = start; i <= end; i++) {\n    arr.push(i);\n  }\n  return arr;\n};\nconst observeElementRect = (instance, cb) => {\n  const element = instance.scrollElement;\n  if (!element) {\n    return;\n  }\n  const targetWindow = instance.targetWindow;\n  if (!targetWindow) {\n    return;\n  }\n  const handler = (rect) => {\n    const { width, height } = rect;\n    cb({ width: Math.round(width), height: Math.round(height) });\n  };\n  handler(element.getBoundingClientRect());\n  if (!targetWindow.ResizeObserver) {\n    return () => {\n    };\n  }\n  const observer = new targetWindow.ResizeObserver((entries) => {\n    const run = () => {\n      const entry = entries[0];\n      if (entry == null ? void 0 : entry.borderBoxSize) {\n        const box = entry.borderBoxSize[0];\n        if (box) {\n          handler({ width: box.inlineSize, height: box.blockSize });\n          return;\n        }\n      }\n      handler(element.getBoundingClientRect());\n    };\n    instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n  });\n  observer.observe(element, { box: \"border-box\" });\n  return () => {\n    observer.unobserve(element);\n  };\n};\nconst addEventListenerOptions = {\n  passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n  const element = instance.scrollElement;\n  if (!element) {\n    return;\n  }\n  const handler = () => {\n    cb({ width: element.innerWidth, height: element.innerHeight });\n  };\n  handler();\n  element.addEventListener(\"resize\", handler, addEventListenerOptions);\n  return () => {\n    element.removeEventListener(\"resize\", handler);\n  };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n  const element = instance.scrollElement;\n  if (!element) {\n    return;\n  }\n  const targetWindow = instance.targetWindow;\n  if (!targetWindow) {\n    return;\n  }\n  let offset = 0;\n  const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n    targetWindow,\n    () => {\n      cb(offset, false);\n    },\n    instance.options.isScrollingResetDelay\n  );\n  const createHandler = (isScrolling) => () => {\n    const { horizontal, isRtl } = instance.options;\n    offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n    fallback();\n    cb(offset, isScrolling);\n  };\n  const handler = createHandler(true);\n  const endHandler = createHandler(false);\n  endHandler();\n  element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n  const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n  if (registerScrollendEvent) {\n    element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n  }\n  return () => {\n    element.removeEventListener(\"scroll\", handler);\n    if (registerScrollendEvent) {\n      element.removeEventListener(\"scrollend\", endHandler);\n    }\n  };\n};\nconst observeWindowOffset = (instance, cb) => {\n  const element = instance.scrollElement;\n  if (!element) {\n    return;\n  }\n  const targetWindow = instance.targetWindow;\n  if (!targetWindow) {\n    return;\n  }\n  let offset = 0;\n  const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n    targetWindow,\n    () => {\n      cb(offset, false);\n    },\n    instance.options.isScrollingResetDelay\n  );\n  const createHandler = (isScrolling) => () => {\n    offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n    fallback();\n    cb(offset, isScrolling);\n  };\n  const handler = createHandler(true);\n  const endHandler = createHandler(false);\n  endHandler();\n  element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n  const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n  if (registerScrollendEvent) {\n    element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n  }\n  return () => {\n    element.removeEventListener(\"scroll\", handler);\n    if (registerScrollendEvent) {\n      element.removeEventListener(\"scrollend\", endHandler);\n    }\n  };\n};\nconst measureElement = (element, entry, instance) => {\n  if (entry == null ? void 0 : entry.borderBoxSize) {\n    const box = entry.borderBoxSize[0];\n    if (box) {\n      const size = Math.round(\n        box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n      );\n      return size;\n    }\n  }\n  return Math.round(\n    element.getBoundingClientRect()[instance.options.horizontal ? \"width\" : \"height\"]\n  );\n};\nconst windowScroll = (offset, {\n  adjustments = 0,\n  behavior\n}, instance) => {\n  var _a, _b;\n  const toOffset = offset + adjustments;\n  (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n    [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n    behavior\n  });\n};\nconst elementScroll = (offset, {\n  adjustments = 0,\n  behavior\n}, instance) => {\n  var _a, _b;\n  const toOffset = offset + adjustments;\n  (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n    [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n    behavior\n  });\n};\nclass Virtualizer {\n  constructor(opts) {\n    this.unsubs = [];\n    this.scrollElement = null;\n    this.targetWindow = null;\n    this.isScrolling = false;\n    this.scrollToIndexTimeoutId = null;\n    this.measurementsCache = [];\n    this.itemSizeCache = /* @__PURE__ */ new Map();\n    this.pendingMeasuredCacheIndexes = [];\n    this.scrollRect = null;\n    this.scrollOffset = null;\n    this.scrollDirection = null;\n    this.scrollAdjustments = 0;\n    this.elementsCache = /* @__PURE__ */ new Map();\n    this.observer = /* @__PURE__ */ (() => {\n      let _ro = null;\n      const get = () => {\n        if (_ro) {\n          return _ro;\n        }\n        if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n          return null;\n        }\n        return _ro = new this.targetWindow.ResizeObserver((entries) => {\n          entries.forEach((entry) => {\n            const run = () => {\n              this._measureElement(entry.target, entry);\n            };\n            this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n          });\n        });\n      };\n      return {\n        disconnect: () => {\n          var _a;\n          (_a = get()) == null ? void 0 : _a.disconnect();\n          _ro = null;\n        },\n        observe: (target) => {\n          var _a;\n          return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n        },\n        unobserve: (target) => {\n          var _a;\n          return (_a = get()) == null ? void 0 : _a.unobserve(target);\n        }\n      };\n    })();\n    this.range = null;\n    this.setOptions = (opts2) => {\n      Object.entries(opts2).forEach(([key, value]) => {\n        if (typeof value === \"undefined\") delete opts2[key];\n      });\n      this.options = {\n        debug: false,\n        initialOffset: 0,\n        overscan: 1,\n        paddingStart: 0,\n        paddingEnd: 0,\n        scrollPaddingStart: 0,\n        scrollPaddingEnd: 0,\n        horizontal: false,\n        getItemKey: defaultKeyExtractor,\n        rangeExtractor: defaultRangeExtractor,\n        onChange: () => {\n        },\n        measureElement,\n        initialRect: { width: 0, height: 0 },\n        scrollMargin: 0,\n        gap: 0,\n        indexAttribute: \"data-index\",\n        initialMeasurementsCache: [],\n        lanes: 1,\n        isScrollingResetDelay: 150,\n        enabled: true,\n        isRtl: false,\n        useScrollendEvent: true,\n        useAnimationFrameWithResizeObserver: false,\n        ...opts2\n      };\n    };\n    this.notify = (sync) => {\n      var _a, _b;\n      (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n    };\n    this.maybeNotify = memo(\n      () => {\n        this.calculateRange();\n        return [\n          this.isScrolling,\n          this.range ? this.range.startIndex : null,\n          this.range ? this.range.endIndex : null\n        ];\n      },\n      (isScrolling) => {\n        this.notify(isScrolling);\n      },\n      {\n        key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n        debug: () => this.options.debug,\n        initialDeps: [\n          this.isScrolling,\n          this.range ? this.range.startIndex : null,\n          this.range ? this.range.endIndex : null\n        ]\n      }\n    );\n    this.cleanup = () => {\n      this.unsubs.filter(Boolean).forEach((d) => d());\n      this.unsubs = [];\n      this.observer.disconnect();\n      this.scrollElement = null;\n      this.targetWindow = null;\n    };\n    this._didMount = () => {\n      return () => {\n        this.cleanup();\n      };\n    };\n    this._willUpdate = () => {\n      var _a;\n      const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n      if (this.scrollElement !== scrollElement) {\n        this.cleanup();\n        if (!scrollElement) {\n          this.maybeNotify();\n          return;\n        }\n        this.scrollElement = scrollElement;\n        if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n          this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n        } else {\n          this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n        }\n        this.elementsCache.forEach((cached) => {\n          this.observer.observe(cached);\n        });\n        this._scrollToOffset(this.getScrollOffset(), {\n          adjustments: void 0,\n          behavior: void 0\n        });\n        this.unsubs.push(\n          this.options.observeElementRect(this, (rect) => {\n            this.scrollRect = rect;\n            this.maybeNotify();\n          })\n        );\n        this.unsubs.push(\n          this.options.observeElementOffset(this, (offset, isScrolling) => {\n            this.scrollAdjustments = 0;\n            this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n            this.scrollOffset = offset;\n            this.isScrolling = isScrolling;\n            this.maybeNotify();\n          })\n        );\n      }\n    };\n    this.getSize = () => {\n      if (!this.options.enabled) {\n        this.scrollRect = null;\n        return 0;\n      }\n      this.scrollRect = this.scrollRect ?? this.options.initialRect;\n      return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n    };\n    this.getScrollOffset = () => {\n      if (!this.options.enabled) {\n        this.scrollOffset = null;\n        return 0;\n      }\n      this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n      return this.scrollOffset;\n    };\n    this.getFurthestMeasurement = (measurements, index) => {\n      const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n      const furthestMeasurements = /* @__PURE__ */ new Map();\n      for (let m = index - 1; m >= 0; m--) {\n        const measurement = measurements[m];\n        if (furthestMeasurementsFound.has(measurement.lane)) {\n          continue;\n        }\n        const previousFurthestMeasurement = furthestMeasurements.get(\n          measurement.lane\n        );\n        if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n          furthestMeasurements.set(measurement.lane, measurement);\n        } else if (measurement.end < previousFurthestMeasurement.end) {\n          furthestMeasurementsFound.set(measurement.lane, true);\n        }\n        if (furthestMeasurementsFound.size === this.options.lanes) {\n          break;\n        }\n      }\n      return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n        if (a.end === b.end) {\n          return a.index - b.index;\n        }\n        return a.end - b.end;\n      })[0] : void 0;\n    };\n    this.getMeasurementOptions = memo(\n      () => [\n        this.options.count,\n        this.options.paddingStart,\n        this.options.scrollMargin,\n        this.options.getItemKey,\n        this.options.enabled\n      ],\n      (count, paddingStart, scrollMargin, getItemKey, enabled) => {\n        this.pendingMeasuredCacheIndexes = [];\n        return {\n          count,\n          paddingStart,\n          scrollMargin,\n          getItemKey,\n          enabled\n        };\n      },\n      {\n        key: false\n      }\n    );\n    this.getMeasurements = memo(\n      () => [this.getMeasurementOptions(), this.itemSizeCache],\n      ({ count, paddingStart, scrollMargin, getItemKey, enabled }, itemSizeCache) => {\n        if (!enabled) {\n          this.measurementsCache = [];\n          this.itemSizeCache.clear();\n          return [];\n        }\n        if (this.measurementsCache.length === 0) {\n          this.measurementsCache = this.options.initialMeasurementsCache;\n          this.measurementsCache.forEach((item) => {\n            this.itemSizeCache.set(item.key, item.size);\n          });\n        }\n        const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n        this.pendingMeasuredCacheIndexes = [];\n        const measurements = this.measurementsCache.slice(0, min);\n        for (let i = min; i < count; i++) {\n          const key = getItemKey(i);\n          const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n          const start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n          const measuredSize = itemSizeCache.get(key);\n          const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n          const end = start + size;\n          const lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n          measurements[i] = {\n            index: i,\n            start,\n            size,\n            end,\n            key,\n            lane\n          };\n        }\n        this.measurementsCache = measurements;\n        return measurements;\n      },\n      {\n        key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n        debug: () => this.options.debug\n      }\n    );\n    this.calculateRange = memo(\n      () => [this.getMeasurements(), this.getSize(), this.getScrollOffset()],\n      (measurements, outerSize, scrollOffset) => {\n        return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n          measurements,\n          outerSize,\n          scrollOffset\n        }) : null;\n      },\n      {\n        key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n        debug: () => this.options.debug\n      }\n    );\n    this.getVirtualIndexes = memo(\n      () => {\n        let startIndex = null;\n        let endIndex = null;\n        const range = this.calculateRange();\n        if (range) {\n          startIndex = range.startIndex;\n          endIndex = range.endIndex;\n        }\n        return [\n          this.options.rangeExtractor,\n          this.options.overscan,\n          this.options.count,\n          startIndex,\n          endIndex\n        ];\n      },\n      (rangeExtractor, overscan, count, startIndex, endIndex) => {\n        return startIndex === null || endIndex === null ? [] : rangeExtractor({\n          startIndex,\n          endIndex,\n          overscan,\n          count\n        });\n      },\n      {\n        key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n        debug: () => this.options.debug\n      }\n    );\n    this.indexFromElement = (node) => {\n      const attributeName = this.options.indexAttribute;\n      const indexStr = node.getAttribute(attributeName);\n      if (!indexStr) {\n        console.warn(\n          `Missing attribute name '${attributeName}={index}' on measured element.`\n        );\n        return -1;\n      }\n      return parseInt(indexStr, 10);\n    };\n    this._measureElement = (node, entry) => {\n      const index = this.indexFromElement(node);\n      const item = this.measurementsCache[index];\n      if (!item) {\n        return;\n      }\n      const key = item.key;\n      const prevNode = this.elementsCache.get(key);\n      if (prevNode !== node) {\n        if (prevNode) {\n          this.observer.unobserve(prevNode);\n        }\n        this.observer.observe(node);\n        this.elementsCache.set(key, node);\n      }\n      if (node.isConnected) {\n        this.resizeItem(index, this.options.measureElement(node, entry, this));\n      }\n    };\n    this.resizeItem = (index, size) => {\n      const item = this.measurementsCache[index];\n      if (!item) {\n        return;\n      }\n      const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n      const delta = size - itemSize;\n      if (delta !== 0) {\n        if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {\n          if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n            console.info(\"correction\", delta);\n          }\n          this._scrollToOffset(this.getScrollOffset(), {\n            adjustments: this.scrollAdjustments += delta,\n            behavior: void 0\n          });\n        }\n        this.pendingMeasuredCacheIndexes.push(item.index);\n        this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n        this.notify(false);\n      }\n    };\n    this.measureElement = (node) => {\n      if (!node) {\n        this.elementsCache.forEach((cached, key) => {\n          if (!cached.isConnected) {\n            this.observer.unobserve(cached);\n            this.elementsCache.delete(key);\n          }\n        });\n        return;\n      }\n      this._measureElement(node, void 0);\n    };\n    this.getVirtualItems = memo(\n      () => [this.getVirtualIndexes(), this.getMeasurements()],\n      (indexes, measurements) => {\n        const virtualItems = [];\n        for (let k = 0, len = indexes.length; k < len; k++) {\n          const i = indexes[k];\n          const measurement = measurements[i];\n          virtualItems.push(measurement);\n        }\n        return virtualItems;\n      },\n      {\n        key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n        debug: () => this.options.debug\n      }\n    );\n    this.getVirtualItemForOffset = (offset) => {\n      const measurements = this.getMeasurements();\n      if (measurements.length === 0) {\n        return void 0;\n      }\n      return notUndefined(\n        measurements[findNearestBinarySearch(\n          0,\n          measurements.length - 1,\n          (index) => notUndefined(measurements[index]).start,\n          offset\n        )]\n      );\n    };\n    this.getOffsetForAlignment = (toOffset, align) => {\n      const size = this.getSize();\n      const scrollOffset = this.getScrollOffset();\n      if (align === \"auto\") {\n        if (toOffset >= scrollOffset + size) {\n          align = \"end\";\n        }\n      }\n      if (align === \"end\") {\n        toOffset -= size;\n      }\n      const scrollSizeProp = this.options.horizontal ? \"scrollWidth\" : \"scrollHeight\";\n      const scrollSize = this.scrollElement ? \"document\" in this.scrollElement ? this.scrollElement.document.documentElement[scrollSizeProp] : this.scrollElement[scrollSizeProp] : 0;\n      const maxOffset = scrollSize - size;\n      return Math.max(Math.min(maxOffset, toOffset), 0);\n    };\n    this.getOffsetForIndex = (index, align = \"auto\") => {\n      index = Math.max(0, Math.min(index, this.options.count - 1));\n      const item = this.measurementsCache[index];\n      if (!item) {\n        return void 0;\n      }\n      const size = this.getSize();\n      const scrollOffset = this.getScrollOffset();\n      if (align === \"auto\") {\n        if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n          align = \"end\";\n        } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n          align = \"start\";\n        } else {\n          return [scrollOffset, align];\n        }\n      }\n      const centerOffset = item.start - this.options.scrollPaddingStart + (item.size - size) / 2;\n      switch (align) {\n        case \"center\":\n          return [this.getOffsetForAlignment(centerOffset, align), align];\n        case \"end\":\n          return [\n            this.getOffsetForAlignment(\n              item.end + this.options.scrollPaddingEnd,\n              align\n            ),\n            align\n          ];\n        default:\n          return [\n            this.getOffsetForAlignment(\n              item.start - this.options.scrollPaddingStart,\n              align\n            ),\n            align\n          ];\n      }\n    };\n    this.isDynamicMode = () => this.elementsCache.size > 0;\n    this.cancelScrollToIndex = () => {\n      if (this.scrollToIndexTimeoutId !== null && this.targetWindow) {\n        this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId);\n        this.scrollToIndexTimeoutId = null;\n      }\n    };\n    this.scrollToOffset = (toOffset, { align = \"start\", behavior } = {}) => {\n      this.cancelScrollToIndex();\n      if (behavior === \"smooth\" && this.isDynamicMode()) {\n        console.warn(\n          \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n        );\n      }\n      this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n        adjustments: void 0,\n        behavior\n      });\n    };\n    this.scrollToIndex = (index, { align: initialAlign = \"auto\", behavior } = {}) => {\n      index = Math.max(0, Math.min(index, this.options.count - 1));\n      this.cancelScrollToIndex();\n      if (behavior === \"smooth\" && this.isDynamicMode()) {\n        console.warn(\n          \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n        );\n      }\n      const offsetAndAlign = this.getOffsetForIndex(index, initialAlign);\n      if (!offsetAndAlign) return;\n      const [offset, align] = offsetAndAlign;\n      this._scrollToOffset(offset, { adjustments: void 0, behavior });\n      if (behavior !== \"smooth\" && this.isDynamicMode() && this.targetWindow) {\n        this.scrollToIndexTimeoutId = this.targetWindow.setTimeout(() => {\n          this.scrollToIndexTimeoutId = null;\n          const elementInDOM = this.elementsCache.has(\n            this.options.getItemKey(index)\n          );\n          if (elementInDOM) {\n            const [latestOffset] = notUndefined(\n              this.getOffsetForIndex(index, align)\n            );\n            if (!approxEqual(latestOffset, this.getScrollOffset())) {\n              this.scrollToIndex(index, { align, behavior });\n            }\n          } else {\n            this.scrollToIndex(index, { align, behavior });\n          }\n        });\n      }\n    };\n    this.scrollBy = (delta, { behavior } = {}) => {\n      this.cancelScrollToIndex();\n      if (behavior === \"smooth\" && this.isDynamicMode()) {\n        console.warn(\n          \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n        );\n      }\n      this._scrollToOffset(this.getScrollOffset() + delta, {\n        adjustments: void 0,\n        behavior\n      });\n    };\n    this.getTotalSize = () => {\n      var _a;\n      const measurements = this.getMeasurements();\n      let end;\n      if (measurements.length === 0) {\n        end = this.options.paddingStart;\n      } else {\n        end = this.options.lanes === 1 ? ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0 : Math.max(\n          ...measurements.slice(-this.options.lanes).map((m) => m.end)\n        );\n      }\n      return Math.max(\n        end - this.options.scrollMargin + this.options.paddingEnd,\n        0\n      );\n    };\n    this._scrollToOffset = (offset, {\n      adjustments,\n      behavior\n    }) => {\n      this.options.scrollToFn(offset, { behavior, adjustments }, this);\n    };\n    this.measure = () => {\n      this.itemSizeCache = /* @__PURE__ */ new Map();\n      this.notify(false);\n    };\n    this.setOptions(opts);\n  }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n  while (low <= high) {\n    const middle = (low + high) / 2 | 0;\n    const currentValue = getCurrentValue(middle);\n    if (currentValue < value) {\n      low = middle + 1;\n    } else if (currentValue > value) {\n      high = middle - 1;\n    } else {\n      return middle;\n    }\n  }\n  if (low > 0) {\n    return low - 1;\n  } else {\n    return 0;\n  }\n};\nfunction calculateRange({\n  measurements,\n  outerSize,\n  scrollOffset\n}) {\n  const count = measurements.length - 1;\n  const getOffset = (index) => measurements[index].start;\n  const startIndex = findNearestBinarySearch(0, count, getOffset, scrollOffset);\n  let endIndex = startIndex;\n  while (endIndex < count && measurements[endIndex].end < scrollOffset + outerSize) {\n    endIndex++;\n  }\n  return { startIndex, endIndex };\n}\nexport {\n  Virtualizer,\n  approxEqual,\n  debounce,\n  defaultKeyExtractor,\n  defaultRangeExtractor,\n  elementScroll,\n  measureElement,\n  memo,\n  notUndefined,\n  observeElementOffset,\n  observeElementRect,\n  observeWindowOffset,\n  observeWindowRect,\n  windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { observeElementRect, observeElementOffset, elementScroll, observeWindowRect, observeWindowOffset, windowScroll, Virtualizer } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase(options) {\n  const rerender = React.useReducer(() => ({}), {})[1];\n  const resolvedOptions = {\n    ...options,\n    onChange: (instance2, sync) => {\n      var _a;\n      if (sync) {\n        flushSync(rerender);\n      } else {\n        rerender();\n      }\n      (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n    }\n  };\n  const [instance] = React.useState(\n    () => new Virtualizer(resolvedOptions)\n  );\n  instance.setOptions(resolvedOptions);\n  useIsomorphicLayoutEffect(() => {\n    return instance._didMount();\n  }, []);\n  useIsomorphicLayoutEffect(() => {\n    return instance._willUpdate();\n  });\n  return instance;\n}\nfunction useVirtualizer(options) {\n  return useVirtualizerBase({\n    observeElementRect,\n    observeElementOffset,\n    scrollToFn: elementScroll,\n    ...options\n  });\n}\nfunction useWindowVirtualizer(options) {\n  return useVirtualizerBase({\n    getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n    observeElementRect: observeWindowRect,\n    observeElementOffset: observeWindowOffset,\n    scrollToFn: windowScroll,\n    initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n    ...options\n  });\n}\nexport {\n  useVirtualizer,\n  useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","import{env as n}from'./env.js';function u(r){return n.isServer?null:r instanceof Node?r.ownerDocument:r!=null&&r.hasOwnProperty(\"current\")&&r.current instanceof Node?r.current.ownerDocument:document}export{u as getOwnerDocument};\n","import{useRef as a,useState as m}from\"react\";import{getOwnerDocument as d}from'../utils/owner.js';import{useDisposables as g}from'./use-disposables.js';import{useEvent as u}from'./use-event.js';function E(e){let t=e.width/2,n=e.height/2;return{top:e.clientY-n,right:e.clientX+t,bottom:e.clientY+n,left:e.clientX-t}}function P(e,t){return!(!e||!t||e.right<t.left||e.left>t.right||e.bottom<t.top||e.top>t.bottom)}function w({disabled:e=!1}={}){let t=a(null),[n,l]=m(!1),r=g(),o=u(()=>{t.current=null,l(!1),r.dispose()}),f=u(s=>{if(r.dispose(),t.current===null){t.current=s.currentTarget,l(!0);{let i=d(s.currentTarget);r.addEventListener(i,\"pointerup\",o,!1),r.addEventListener(i,\"pointermove\",c=>{if(t.current){let p=E(c);l(P(p,t.current.getBoundingClientRect()))}},!1),r.addEventListener(i,\"pointercancel\",o,!1)}}});return{pressed:n,pressProps:e?{}:{onPointerDown:f,onPointerUp:o,onClick:o}}}export{w as useActivePress};\n","import{useCallback as n}from\"react\";function l(e,r){return e!==null&&r!==null&&typeof e==\"object\"&&typeof r==\"object\"&&\"id\"in e&&\"id\"in r?e.id===r.id:e===r}function u(e=l){return n((r,t)=>{if(typeof e==\"string\"){let o=e;return(r==null?void 0:r[o])===(t==null?void 0:t[o])}return e(r,t)},[e])}export{u as useByComparator};\n","import{useRef as o,useState as f}from\"react\";import{useEvent as a}from'./use-event.js';function T(l,r,c){let[i,s]=f(c),e=l!==void 0,t=o(e),u=o(!1),d=o(!1);return e&&!t.current&&!u.current?(u.current=!0,t.current=e,console.error(\"A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.\")):!e&&t.current&&!d.current&&(d.current=!0,t.current=e,console.error(\"A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.\")),[e?l:i,a(n=>(e||s(n),r==null?void 0:r(n)))]}export{T as useControllable};\n","import{useState as u}from\"react\";function l(e){let[t]=u(e);return t}export{l as useDefaultValue};\n","import{useMemo as o,useReducer as h}from\"react\";import{useIsoMorphicEffect as s}from'./use-iso-morphic-effect.js';function f(e){if(e===null)return{width:0,height:0};let{width:t,height:r}=e.getBoundingClientRect();return{width:t,height:r}}function d(e,t=!1){let[r,u]=h(()=>({}),{}),i=o(()=>f(e),[e,r]);return s(()=>{if(!e)return;let n=new ResizeObserver(u);return n.observe(e),()=>{n.disconnect()}},[e]),t?{width:`${i.width}px`,height:`${i.height}px`}:i}export{d as useElementSize};\n","import { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\n\nfunction _super_prop_base(object, property) {\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\n        object = _get_prototype_of(object);\n        if (object === null) break;\n    }\n\n    return object;\n}\nexport { _super_prop_base as _ };\n","import { _ as _super_prop_base } from \"./_super_prop_base.js\";\n\nfunction _get(target, property, receiver) {\n    if (typeof Reflect !== \"undefined\" && Reflect.get) _get = Reflect.get;\n    else {\n        _get = function get(target, property, receiver) {\n            var base = _super_prop_base(target, property);\n\n            if (!base) return;\n\n            var desc = Object.getOwnPropertyDescriptor(base, property);\n\n            if (desc.get) return desc.get.call(receiver || target);\n\n            return desc.value;\n        };\n    }\n\n    return _get(target, property, receiver || target);\n}\nexport { _get as _ };\n","class a extends Map{constructor(t){super();this.factory=t}get(t){let e=super.get(t);return e===void 0&&(e=this.factory(t),this.set(t,e)),e}}export{a as DefaultMap};\n","function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}export{a as createStore};\n","import{useSyncExternalStore as e}from\"react\";function o(t){return e(t.subscribe,t.getSnapshot,t.getSnapshot)}export{o as useStore};\n","import{useId as n}from\"react\";import{DefaultMap as f}from'../utils/default-map.js';import{createStore as u}from'../utils/store.js';import{useIsoMorphicEffect as c}from'./use-iso-morphic-effect.js';import{useStore as l}from'./use-store.js';let p=new f(()=>u(()=>[],{ADD(r){return this.includes(r)?this:[...this,r]},REMOVE(r){let e=this.indexOf(r);if(e===-1)return this;let t=this.slice();return t.splice(e,1),t}}));function x(r,e){let t=p.get(e),i=n(),h=l(t);if(c(()=>{if(r)return t.dispatch(\"ADD\",i),()=>t.dispatch(\"REMOVE\",i)},[t,r]),!r)return!1;let s=h.indexOf(i),o=h.length;return s===-1&&(s=o,o+=1),s===o-1}export{x as useIsTopLayer};\n","import{disposables as M}from'../utils/disposables.js';import{getOwnerDocument as b}from'../utils/owner.js';import{useIsTopLayer as L}from'./use-is-top-layer.js';import{useIsoMorphicEffect as T}from'./use-iso-morphic-effect.js';let f=new Map,u=new Map;function h(t){var e;let r=(e=u.get(t))!=null?e:0;return u.set(t,r+1),r!==0?()=>m(t):(f.set(t,{\"aria-hidden\":t.getAttribute(\"aria-hidden\"),inert:t.inert}),t.setAttribute(\"aria-hidden\",\"true\"),t.inert=!0,()=>m(t))}function m(t){var i;let r=(i=u.get(t))!=null?i:1;if(r===1?u.delete(t):u.set(t,r-1),r!==1)return;let e=f.get(t);e&&(e[\"aria-hidden\"]===null?t.removeAttribute(\"aria-hidden\"):t.setAttribute(\"aria-hidden\",e[\"aria-hidden\"]),t.inert=e.inert,f.delete(t))}function y(t,{allowed:r,disallowed:e}={}){let i=L(t,\"inert-others\");T(()=>{var d,c;if(!i)return;let a=M();for(let n of(d=e==null?void 0:e())!=null?d:[])n&&a.add(h(n));let s=(c=r==null?void 0:r())!=null?c:[];for(let n of s){if(!n)continue;let l=b(n);if(!l)continue;let o=n.parentElement;for(;o&&o!==l.body;){for(let p of o.children)s.some(E=>p.contains(E))||a.add(h(p));o=o.parentElement}}return a.dispose},[i,r,e])}export{y as useInertOthers};\n","import{useEffect as o}from\"react\";import{disposables as u}from'../utils/disposables.js';import{useLatestValue as c}from'./use-latest-value.js';function m(s,n,l){let i=c(t=>{let e=t.getBoundingClientRect();e.x===0&&e.y===0&&e.width===0&&e.height===0&&l()});o(()=>{if(!s)return;let t=n===null?null:n instanceof HTMLElement?n:n.current;if(!t)return;let e=u();if(typeof ResizeObserver!=\"undefined\"){let r=new ResizeObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}if(typeof IntersectionObserver!=\"undefined\"){let r=new IntersectionObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}return()=>e.dispose()},[n,i,s])}export{m as useOnDisappear};\n","import{disposables as N}from'./disposables.js';import{match as L}from'./match.js';import{getOwnerDocument as E}from'./owner.js';let f=[\"[contentEditable=true]\",\"[tabindex]\",\"a[href]\",\"area[href]\",\"button:not([disabled])\",\"iframe\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\"),p=[\"[data-autofocus]\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\");var F=(n=>(n[n.First=1]=\"First\",n[n.Previous=2]=\"Previous\",n[n.Next=4]=\"Next\",n[n.Last=8]=\"Last\",n[n.WrapAround=16]=\"WrapAround\",n[n.NoScroll=32]=\"NoScroll\",n[n.AutoFocus=64]=\"AutoFocus\",n))(F||{}),T=(o=>(o[o.Error=0]=\"Error\",o[o.Overflow=1]=\"Overflow\",o[o.Success=2]=\"Success\",o[o.Underflow=3]=\"Underflow\",o))(T||{}),y=(t=>(t[t.Previous=-1]=\"Previous\",t[t.Next=1]=\"Next\",t))(y||{});function b(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(f)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}function S(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(p)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var h=(t=>(t[t.Strict=0]=\"Strict\",t[t.Loose=1]=\"Loose\",t))(h||{});function A(e,r=0){var t;return e===((t=E(e))==null?void 0:t.body)?!1:L(r,{[0](){return e.matches(f)},[1](){let u=e;for(;u!==null;){if(u.matches(f))return!0;u=u.parentElement}return!1}})}function G(e){let r=E(e);N().nextFrame(()=>{r&&!A(r.activeElement,0)&&I(e)})}var H=(t=>(t[t.Keyboard=0]=\"Keyboard\",t[t.Mouse=1]=\"Mouse\",t))(H||{});typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"keydown\",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0),document.addEventListener(\"click\",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0));function I(e){e==null||e.focus({preventScroll:!0})}let w=[\"textarea\",\"input\"].join(\",\");function O(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,w))!=null?t:!1}function _(e,r=t=>t){return e.slice().sort((t,u)=>{let o=r(t),c=r(u);if(o===null||c===null)return 0;let l=o.compareDocumentPosition(c);return l&Node.DOCUMENT_POSITION_FOLLOWING?-1:l&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function j(e,r){return P(b(),r,{relativeTo:e})}function P(e,r,{sorted:t=!0,relativeTo:u=null,skipElements:o=[]}={}){let c=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e.ownerDocument,l=Array.isArray(e)?t?_(e):e:r&64?S(e):b(e);o.length>0&&l.length>1&&(l=l.filter(s=>!o.some(a=>a!=null&&\"current\"in a?(a==null?void 0:a.current)===s:a===s))),u=u!=null?u:c.activeElement;let n=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),x=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,l.indexOf(u))-1;if(r&4)return Math.max(0,l.indexOf(u))+1;if(r&8)return l.length-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),M=r&32?{preventScroll:!0}:{},m=0,d=l.length,i;do{if(m>=d||m+d<=0)return 0;let s=x+m;if(r&16)s=(s+d)%d;else{if(s<0)return 3;if(s>=d)return 1}i=l[s],i==null||i.focus(M),m+=n}while(i!==c.activeElement);return r&6&&O(i)&&i.select(),2}export{F as Focus,T as FocusResult,h as FocusableMode,I as focusElement,j as focusFrom,P as focusIn,f as focusableSelector,S as getAutoFocusableElements,b as getFocusableElements,A as isFocusableElement,G as restoreFocusIfNecessary,_ as sortByDomNode};\n","function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}export{i as isAndroid,t as isIOS,n as isMobile};\n","import{useEffect as c}from\"react\";import{useLatestValue as a}from'./use-latest-value.js';function i(t,e,o,n){let u=a(o);c(()=>{if(!t)return;function r(m){u.current(m)}return document.addEventListener(e,r,n),()=>document.removeEventListener(e,r,n)},[t,e,n])}export{i as useDocumentEvent};\n","import{useEffect as a}from\"react\";import{useLatestValue as f}from'./use-latest-value.js';function s(t,e,o,n){let i=f(o);a(()=>{if(!t)return;function r(d){i.current(d)}return window.addEventListener(e,r,n),()=>window.removeEventListener(e,r,n)},[t,e,n])}export{s as useWindowEvent};\n","import{useCallback as T,useRef as d}from\"react\";import{FocusableMode as y,isFocusableElement as M}from'../utils/focus-management.js';import{isMobile as g}from'../utils/platform.js';import{useDocumentEvent as c}from'./use-document-event.js';import{useIsTopLayer as L}from'./use-is-top-layer.js';import{useLatestValue as b}from'./use-latest-value.js';import{useWindowEvent as P}from'./use-window-event.js';const E=30;function R(p,f,C){let u=L(p,\"outside-click\"),m=b(C),s=T(function(e,n){if(e.defaultPrevented)return;let r=n(e);if(r===null||!r.getRootNode().contains(r)||!r.isConnected)return;let h=function l(o){return typeof o==\"function\"?l(o()):Array.isArray(o)||o instanceof Set?o:[o]}(f);for(let l of h)if(l!==null&&(l.contains(r)||e.composed&&e.composedPath().includes(l)))return;return!M(r,y.Loose)&&r.tabIndex!==-1&&e.preventDefault(),m.current(e,r)},[m,f]),i=d(null);c(u,\"pointerdown\",t=>{var e,n;i.current=((n=(e=t.composedPath)==null?void 0:e.call(t))==null?void 0:n[0])||t.target},!0),c(u,\"mousedown\",t=>{var e,n;i.current=((n=(e=t.composedPath)==null?void 0:e.call(t))==null?void 0:n[0])||t.target},!0),c(u,\"click\",t=>{g()||i.current&&(s(t,()=>i.current),i.current=null)},!0);let a=d({x:0,y:0});c(u,\"touchstart\",t=>{a.current.x=t.touches[0].clientX,a.current.y=t.touches[0].clientY},!0),c(u,\"touchend\",t=>{let e={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY};if(!(Math.abs(e.x-a.current.x)>=E||Math.abs(e.y-a.current.y)>=E))return s(t,()=>t.target instanceof HTMLElement?t.target:null)},!0),P(u,\"blur\",t=>s(t,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}export{R as useOutsideClick};\n","import{useMemo as t}from\"react\";import{getOwnerDocument as o}from'../utils/owner.js';function n(...e){return t(()=>o(...e),[...e])}export{n as useOwnerDocument};\n","import{useEffect as d}from\"react\";import{useLatestValue as s}from'./use-latest-value.js';function E(n,e,a,t){let i=s(a);d(()=>{n=n!=null?n:window;function r(o){i.current(o)}return n.addEventListener(e,r,t),()=>n.removeEventListener(e,r,t)},[n,e,t])}export{E as useEventListener};\n","import{useRef as r}from\"react\";import{useEvent as u}from'./use-event.js';import{useEventListener as o}from'./use-event-listener.js';function i(e){let n=r({value:\"\",selectionStart:null,selectionEnd:null});return o(e,\"blur\",l=>{let t=l.target;t instanceof HTMLInputElement&&(n.current={value:t.value,selectionStart:t.selectionStart,selectionEnd:t.selectionEnd})}),u(()=>{if(document.activeElement!==e&&e instanceof HTMLInputElement&&e.isConnected){if(e.focus({preventScroll:!0}),e.value!==n.current.value)e.setSelectionRange(e.value.length,e.value.length);else{let{selectionStart:l,selectionEnd:t}=n.current;l!==null&&t!==null&&e.setSelectionRange(l,t)}n.current={value:\"\",selectionStart:null,selectionEnd:null}}})}export{i as useRefocusableInput};\n","import{useMemo as a}from\"react\";function e(t,u){return a(()=>{var n;if(t.type)return t.type;let r=(n=t.as)!=null?n:\"button\";if(typeof r==\"string\"&&r.toLowerCase()===\"button\"||(u==null?void 0:u.tagName)===\"BUTTON\"&&!u.hasAttribute(\"type\"))return\"button\"},[t.type,t.as,u])}export{e as useResolveButtonType};\n","function d(){let r;return{before({doc:e}){var l;let o=e.documentElement,t=(l=e.defaultView)!=null?l:window;r=Math.max(0,t.innerWidth-o.clientWidth)},after({doc:e,d:o}){let t=e.documentElement,l=Math.max(0,t.clientWidth-t.offsetWidth),n=Math.max(0,r-l);o.style(t,\"paddingRight\",`${n}px`)}}}export{d as adjustScrollbarPadding};\n","import{disposables as m}from'../../utils/disposables.js';import{isIOS as u}from'../../utils/platform.js';function d(){return u()?{before({doc:r,d:n,meta:c}){function o(a){return c.containers.flatMap(l=>l()).some(l=>l.contains(a))}n.microTask(()=>{var s;if(window.getComputedStyle(r.documentElement).scrollBehavior!==\"auto\"){let t=m();t.style(r.documentElement,\"scrollBehavior\",\"auto\"),n.add(()=>n.microTask(()=>t.dispose()))}let a=(s=window.scrollY)!=null?s:window.pageYOffset,l=null;n.addEventListener(r,\"click\",t=>{if(t.target instanceof HTMLElement)try{let e=t.target.closest(\"a\");if(!e)return;let{hash:f}=new URL(e.href),i=r.querySelector(f);i&&!o(i)&&(l=i)}catch{}},!0),n.addEventListener(r,\"touchstart\",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&o(e.parentElement);)e=e.parentElement;n.style(e,\"overscrollBehavior\",\"contain\")}else n.style(t.target,\"touchAction\",\"none\")}),n.addEventListener(r,\"touchmove\",t=>{if(t.target instanceof HTMLElement){if(t.target.tagName===\"INPUT\")return;if(o(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==\"\"&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===\"\"&&t.preventDefault()}else t.preventDefault()}},{passive:!1}),n.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;a!==t&&window.scrollTo(0,a),l&&l.isConnected&&(l.scrollIntoView({block:\"nearest\"}),l=null)})})}}:{}}export{d as handleIOSLocking};\n","function r(){return{before({doc:e,d:o}){o.style(e.documentElement,\"overflow\",\"hidden\")}}}export{r as preventScroll};\n","import{disposables as s}from'../../utils/disposables.js';import{createStore as i}from'../../utils/store.js';import{adjustScrollbarPadding as l}from'./adjust-scrollbar-padding.js';import{handleIOSLocking as d}from'./handle-ios-locking.js';import{preventScroll as p}from'./prevent-scroll.js';function m(e){let n={};for(let t of e)Object.assign(n,t(n));return n}let a=i(()=>new Map,{PUSH(e,n){var o;let t=(o=this.get(e))!=null?o:{doc:e,count:0,d:s(),meta:new Set};return t.count++,t.meta.add(n),this.set(e,t),this},POP(e,n){let t=this.get(e);return t&&(t.count--,t.meta.delete(n)),this},SCROLL_PREVENT({doc:e,d:n,meta:t}){let o={doc:e,d:n,meta:m(t)},c=[d(),l(),p()];c.forEach(({before:r})=>r==null?void 0:r(o)),c.forEach(({after:r})=>r==null?void 0:r(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});a.subscribe(()=>{let e=a.getSnapshot(),n=new Map;for(let[t]of e)n.set(t,t.documentElement.style.overflow);for(let t of e.values()){let o=n.get(t.doc)===\"hidden\",c=t.count!==0;(c&&!o||!c&&o)&&a.dispatch(t.count>0?\"SCROLL_PREVENT\":\"SCROLL_ALLOW\",t),t.count===0&&a.dispatch(\"TEARDOWN\",t)}});export{a as overflows};\n","import{useStore as s}from'../../hooks/use-store.js';import{useIsoMorphicEffect as u}from'../use-iso-morphic-effect.js';import{overflows as t}from'./overflow-store.js';function a(r,e,n=()=>({containers:[]})){let f=s(t),o=e?f.get(e):void 0,i=o?o.count>0:!1;return u(()=>{if(!(!e||!r))return t.dispatch(\"PUSH\",e,n),()=>t.dispatch(\"POP\",e,n)},[r,e]),i}export{a as useDocumentOverflowLockedEffect};\n","import{useDocumentOverflowLockedEffect as l}from'./document-overflow/use-document-overflow.js';import{useIsTopLayer as m}from'./use-is-top-layer.js';function f(e,c,n=()=>[document.body]){let r=m(e,\"scroll-lock\");l(r,c,t=>{var o;return{containers:[...(o=t.containers)!=null?o:[],n]}})}export{f as useScrollLock};\n","import{useRef as o}from\"react\";function t(e){return[e.screenX,e.screenY]}function u(){let e=o([-1,-1]);return{wasMoved(r){let n=t(r);return e.current[0]===n[0]&&e.current[1]===n[1]?!1:(e.current=n,!0)},update(r){e.current=t(r)}}}export{u as useTrackedPointer};\n","import{useCallback as r,useState as b}from\"react\";function c(u=0){let[t,l]=b(u),g=r(e=>l(e),[t]),s=r(e=>l(a=>a|e),[t]),m=r(e=>(t&e)===e,[t]),n=r(e=>l(a=>a&~e),[l]),F=r(e=>l(a=>a^e),[l]);return{flags:t,setFlag:g,addFlag:s,hasFlag:m,removeFlag:n,toggleFlag:F}}export{c as useFlags};\n","var T,b;import{useRef as c,useState as S}from\"react\";import{disposables as m}from'../utils/disposables.js';import{useDisposables as g}from'./use-disposables.js';import{useFlags as y}from'./use-flags.js';import{useIsoMorphicEffect as A}from'./use-iso-morphic-effect.js';typeof process!=\"undefined\"&&typeof globalThis!=\"undefined\"&&typeof Element!=\"undefined\"&&((T=process==null?void 0:process.env)==null?void 0:T[\"NODE_ENV\"])===\"test\"&&typeof((b=Element==null?void 0:Element.prototype)==null?void 0:b.getAnimations)==\"undefined\"&&(Element.prototype.getAnimations=function(){return console.warn([\"Headless UI has polyfilled `Element.prototype.getAnimations` for your tests.\",\"Please install a proper polyfill e.g. `jsdom-testing-mocks`, to silence these warnings.\",\"\",\"Example usage:\",\"```js\",\"import { mockAnimationsApi } from 'jsdom-testing-mocks'\",\"mockAnimationsApi()\",\"```\"].join(`\n`)),[]});var L=(r=>(r[r.None=0]=\"None\",r[r.Closed=1]=\"Closed\",r[r.Enter=2]=\"Enter\",r[r.Leave=4]=\"Leave\",r))(L||{});function R(t){let n={};for(let e in t)t[e]===!0&&(n[`data-${e}`]=\"\");return n}function x(t,n,e,i){let[r,o]=S(e),{hasFlag:s,addFlag:a,removeFlag:l}=y(t&&r?3:0),u=c(!1),f=c(!1),E=g();return A(()=>{var d;if(t){if(e&&o(!0),!n){e&&a(3);return}return(d=i==null?void 0:i.start)==null||d.call(i,e),C(n,{inFlight:u,prepare(){f.current?f.current=!1:f.current=u.current,u.current=!0,!f.current&&(e?(a(3),l(4)):(a(4),l(2)))},run(){f.current?e?(l(3),a(4)):(l(4),a(3)):e?l(1):a(1)},done(){var p;f.current&&typeof n.getAnimations==\"function\"&&n.getAnimations().length>0||(u.current=!1,l(7),e||o(!1),(p=i==null?void 0:i.end)==null||p.call(i,e))}})}},[t,e,n,E]),t?[r,{closed:s(1),enter:s(2),leave:s(4),transition:s(2)||s(4)}]:[e,{closed:void 0,enter:void 0,leave:void 0,transition:void 0}]}function C(t,{prepare:n,run:e,done:i,inFlight:r}){let o=m();return j(t,{prepare:n,inFlight:r}),o.nextFrame(()=>{e(),o.requestAnimationFrame(()=>{o.add(M(t,i))})}),o.dispose}function M(t,n){var o,s;let e=m();if(!t)return e.dispose;let i=!1;e.add(()=>{i=!0});let r=(s=(o=t.getAnimations)==null?void 0:o.call(t).filter(a=>a instanceof CSSTransition))!=null?s:[];return r.length===0?(n(),e.dispose):(Promise.allSettled(r.map(a=>a.finished)).then(()=>{i||n()}),e.dispose)}function j(t,{inFlight:n,prepare:e}){if(n!=null&&n.current){e();return}let i=t.style.transition;t.style.transition=\"none\",e(),t.offsetHeight,t.style.transition=i}export{R as transitionDataAttributes,x as useTransition};\n","import{useEffect as T,useRef as E}from\"react\";import{getOwnerDocument as d}from'../utils/owner.js';import{useIsoMorphicEffect as N}from'./use-iso-morphic-effect.js';function F(c,{container:e,accept:t,walk:r}){let o=E(t),l=E(r);T(()=>{o.current=t,l.current=r},[t,r]),N(()=>{if(!e||!c)return;let n=d(e);if(!n)return;let f=o.current,p=l.current,i=Object.assign(m=>f(m),{acceptNode:f}),u=n.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,i,!1);for(;u.nextNode();)p(u.currentNode)},[e,c,o,l])}export{F as useTreeWalker};\n","import{useEffect as f,useRef as s}from\"react\";import{useEvent as i}from'./use-event.js';function m(u,t){let e=s([]),r=i(u);f(()=>{let o=[...e.current];for(let[a,l]of t.entries())if(e.current[a]!==l){let n=r(t,o);return e.current=t,n}},[r,...t])}export{m as useWatch};\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n  let activeElement = doc.activeElement;\n  while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n    var _activeElement;\n    activeElement = activeElement.shadowRoot.activeElement;\n  }\n  return activeElement;\n}\nfunction contains(parent, child) {\n  if (!parent || !child) {\n    return false;\n  }\n  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n  // First, attempt with faster native method\n  if (parent.contains(child)) {\n    return true;\n  }\n\n  // then fallback to custom implementation with Shadow DOM support\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) {\n        return true;\n      }\n      // @ts-ignore\n      next = next.parentNode || next.host;\n    }\n  }\n\n  // Give up, the result is false\n  return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n  const uaData = navigator.userAgentData;\n  if (uaData != null && uaData.platform) {\n    return uaData.platform;\n  }\n  return navigator.platform;\n}\nfunction getUserAgent() {\n  const uaData = navigator.userAgentData;\n  if (uaData && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(_ref => {\n      let {\n        brand,\n        version\n      } = _ref;\n      return brand + \"/\" + version;\n    }).join(' ');\n  }\n  return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n  // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n  // Try to find a workaround for this. `react-aria` source still has the check.\n  if (event.mozInputSource === 0 && event.isTrusted) {\n    return true;\n  }\n  if (isAndroid() && event.pointerType) {\n    return event.type === 'click' && event.buttons === 1;\n  }\n  return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n  if (isJSDOM()) return false;\n  return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n  // iOS VoiceOver returns 0.333• for width/height.\n  event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n  // Chrome DevTools does not complain about navigator.vendor\n  return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n  const re = /android/i;\n  return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n  return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n  return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n  // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n  // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n  const values = ['mouse', 'pen'];\n  if (!strict) {\n    values.push('', undefined);\n  }\n  return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n  return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n  return element.matches('html,body');\n}\nfunction getDocument(node) {\n  return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n  if (node == null) {\n    return false;\n  }\n  if ('composedPath' in event) {\n    return event.composedPath().includes(node);\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n  const e = event;\n  return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n  if ('composedPath' in event) {\n    return event.composedPath()[0];\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support\n  // `composedPath()`, but browsers without shadow DOM don't.\n  return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n  return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n  if (!element) return false;\n  return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","import * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { stopEvent, getDocument, isMouseLikePointerType, contains, activeElement, isSafari, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, getTarget, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, isMac, getUserAgent } from '@floating-ui/react/utils';\nimport { floor, evaluate, max, min, round } from '@floating-ui/utils';\nimport { getComputedStyle, isElement, getNodeName, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return value => {\n      refs.forEach(ref => {\n        if (typeof ref === 'function') {\n          ref(value);\n        } else if (ref != null) {\n          ref.current = value;\n        }\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n  ...React\n};\n\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n  const ref = React.useRef(() => {\n    if (process.env.NODE_ENV !== \"production\") {\n      throw new Error('Cannot call an event handler while rendering.');\n    }\n  });\n  useSafeInsertionEffect(() => {\n    ref.current = callback;\n  });\n  return React.useCallback(function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return ref.current == null ? void 0 : ref.current(...args);\n  }, []);\n}\n\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n  return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n  return index < 0 || index >= listRef.current.length;\n}\nfunction getMinIndex(listRef, disabledIndices) {\n  return findNonDisabledIndex(listRef, {\n    disabledIndices\n  });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n  return findNonDisabledIndex(listRef, {\n    decrement: true,\n    startingIndex: listRef.current.length,\n    disabledIndices\n  });\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n  let {\n    startingIndex = -1,\n    decrement = false,\n    disabledIndices,\n    amount = 1\n  } = _temp === void 0 ? {} : _temp;\n  const list = listRef.current;\n  let index = startingIndex;\n  do {\n    index += decrement ? -amount : amount;\n  } while (index >= 0 && index <= list.length - 1 && isDisabled(list, index, disabledIndices));\n  return index;\n}\nfunction getGridNavigatedIndex(elementsRef, _ref) {\n  let {\n    event,\n    orientation,\n    loop,\n    rtl,\n    cols,\n    disabledIndices,\n    minIndex,\n    maxIndex,\n    prevIndex,\n    stopEvent: stop = false\n  } = _ref;\n  let nextIndex = prevIndex;\n  if (event.key === ARROW_UP) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = maxIndex;\n    } else {\n      nextIndex = findNonDisabledIndex(elementsRef, {\n        startingIndex: nextIndex,\n        amount: cols,\n        decrement: true,\n        disabledIndices\n      });\n      if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n        const col = prevIndex % cols;\n        const maxCol = maxIndex % cols;\n        const offset = maxIndex - (maxCol - col);\n        if (maxCol === col) {\n          nextIndex = maxIndex;\n        } else {\n          nextIndex = maxCol > col ? offset : offset - cols;\n        }\n      }\n    }\n    if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n  if (event.key === ARROW_DOWN) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = minIndex;\n    } else {\n      nextIndex = findNonDisabledIndex(elementsRef, {\n        startingIndex: prevIndex,\n        amount: cols,\n        disabledIndices\n      });\n      if (loop && prevIndex + cols > maxIndex) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex % cols - cols,\n          amount: cols,\n          disabledIndices\n        });\n      }\n    }\n    if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n\n  // Remains on the same row/column.\n  if (orientation === 'both') {\n    const prevRow = floor(prevIndex / cols);\n    if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== cols - 1) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex,\n          disabledIndices\n        });\n        if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledIndex(elementsRef, {\n            startingIndex: prevIndex - prevIndex % cols - 1,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      }\n      if (isDifferentRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== 0) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex,\n          decrement: true,\n          disabledIndices\n        });\n        if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledIndex(elementsRef, {\n            startingIndex: prevIndex + (cols - prevIndex % cols),\n            decrement: true,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex + (cols - prevIndex % cols),\n          decrement: true,\n          disabledIndices\n        });\n      }\n      if (isDifferentRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    const lastRow = floor(maxIndex / cols) === prevRow;\n    if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n      if (loop && lastRow) {\n        nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledIndex(elementsRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      } else {\n        nextIndex = prevIndex;\n      }\n    }\n  }\n  return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction buildCellMap(sizes, cols, dense) {\n  const cellMap = [];\n  let startIndex = 0;\n  sizes.forEach((_ref2, index) => {\n    let {\n      width,\n      height\n    } = _ref2;\n    if (width > cols) {\n      if (process.env.NODE_ENV !== \"production\") {\n        throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n      }\n    }\n    let itemPlaced = false;\n    if (dense) {\n      startIndex = 0;\n    }\n    while (!itemPlaced) {\n      const targetCells = [];\n      for (let i = 0; i < width; i++) {\n        for (let j = 0; j < height; j++) {\n          targetCells.push(startIndex + i + j * cols);\n        }\n      }\n      if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n        targetCells.forEach(cell => {\n          cellMap[cell] = index;\n        });\n        itemPlaced = true;\n      } else {\n        startIndex++;\n      }\n    }\n  });\n\n  // convert into a non-sparse array\n  return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n  if (index === -1) return -1;\n  const firstCellIndex = cellMap.indexOf(index);\n  const sizeItem = sizes[index];\n  switch (corner) {\n    case 'tl':\n      return firstCellIndex;\n    case 'tr':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + sizeItem.width - 1;\n    case 'bl':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + (sizeItem.height - 1) * cols;\n    case 'br':\n      return cellMap.lastIndexOf(index);\n  }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getCellIndices(indices, cellMap) {\n  return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isDisabled(list, index, disabledIndices) {\n  if (disabledIndices) {\n    return disabledIndices.includes(index);\n  }\n  const element = list[index];\n  return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction sortByDocumentPosition(a, b) {\n  const position = a.compareDocumentPosition(b);\n  if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n    return -1;\n  }\n  if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n    return 1;\n  }\n  return 0;\n}\nfunction areMapsEqual(map1, map2) {\n  if (map1.size !== map2.size) {\n    return false;\n  }\n  for (const [key, value] of map1.entries()) {\n    if (value !== map2.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n  register: () => {},\n  unregister: () => {},\n  map: /*#__PURE__*/new Map(),\n  elementsRef: {\n    current: []\n  }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n  const {\n    children,\n    elementsRef,\n    labelsRef\n  } = props;\n  const [map, setMap] = React.useState(() => new Map());\n  const register = React.useCallback(node => {\n    setMap(prevMap => new Map(prevMap).set(node, null));\n  }, []);\n  const unregister = React.useCallback(node => {\n    setMap(prevMap => {\n      const map = new Map(prevMap);\n      map.delete(node);\n      return map;\n    });\n  }, []);\n  index(() => {\n    const newMap = new Map(map);\n    const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n    nodes.forEach((node, index) => {\n      newMap.set(node, index);\n    });\n    if (!areMapsEqual(map, newMap)) {\n      setMap(newMap);\n    }\n  }, [map]);\n  return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n    value: React.useMemo(() => ({\n      register,\n      unregister,\n      map,\n      elementsRef,\n      labelsRef\n    }), [register, unregister, map, elementsRef, labelsRef])\n  }, children);\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    label\n  } = props;\n  const {\n    register,\n    unregister,\n    map,\n    elementsRef,\n    labelsRef\n  } = React.useContext(FloatingListContext);\n  const [index$1, setIndex] = React.useState(null);\n  const componentRef = React.useRef(null);\n  const ref = React.useCallback(node => {\n    componentRef.current = node;\n    if (index$1 !== null) {\n      elementsRef.current[index$1] = node;\n      if (labelsRef) {\n        var _node$textContent;\n        const isLabelDefined = label !== undefined;\n        labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n      }\n    }\n  }, [index$1, elementsRef, labelsRef, label]);\n  index(() => {\n    const node = componentRef.current;\n    if (node) {\n      register(node);\n      return () => {\n        unregister(node);\n      };\n    }\n  }, [register, unregister]);\n  index(() => {\n    const index = componentRef.current ? map.get(componentRef.current) : null;\n    if (index != null) {\n      setIndex(index);\n    }\n  }, [map]);\n  return React.useMemo(() => ({\n    ref,\n    index: index$1 == null ? -1 : index$1\n  }), [index$1, ref]);\n}\n\nfunction renderJsx(render, computedProps) {\n  if (typeof render === 'function') {\n    return render(computedProps);\n  }\n  if (render) {\n    return /*#__PURE__*/React.cloneElement(render, computedProps);\n  }\n  return /*#__PURE__*/React.createElement(\"div\", computedProps);\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n  activeIndex: 0,\n  onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n  const {\n    render,\n    orientation = 'both',\n    loop = true,\n    rtl = false,\n    cols = 1,\n    disabledIndices,\n    activeIndex: externalActiveIndex,\n    onNavigate: externalSetActiveIndex,\n    itemSizes,\n    dense = false,\n    ...domProps\n  } = props;\n  const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n  const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n  const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n  const elementsRef = React.useRef([]);\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const contextValue = React.useMemo(() => ({\n    activeIndex,\n    onNavigate\n  }), [activeIndex, onNavigate]);\n  const isGrid = cols > 1;\n  function handleKeyDown(event) {\n    if (!allKeys.includes(event.key)) return;\n    let nextIndex = activeIndex;\n    const minIndex = getMinIndex(elementsRef, disabledIndices);\n    const maxIndex = getMaxIndex(elementsRef, disabledIndices);\n    const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n    const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n    if (isGrid) {\n      const sizes = itemSizes || Array.from({\n        length: elementsRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = buildCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(elementsRef.current, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(elementsRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const maybeNextIndex = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        rtl,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getCellIndices([...(disabledIndices || elementsRef.current.map((_, index) => isDisabled(elementsRef.current, index) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction we're\n        // moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n      })];\n      if (maybeNextIndex != null) {\n        nextIndex = maybeNextIndex;\n      }\n    }\n    const toEndKeys = {\n      horizontal: [horizontalEndKey],\n      vertical: [ARROW_DOWN],\n      both: [horizontalEndKey, ARROW_DOWN]\n    }[orientation];\n    const toStartKeys = {\n      horizontal: [horizontalStartKey],\n      vertical: [ARROW_UP],\n      both: [horizontalStartKey, ARROW_UP]\n    }[orientation];\n    const preventedKeys = isGrid ? allKeys : {\n      horizontal: horizontalKeys,\n      vertical: verticalKeys,\n      both: allKeys\n    }[orientation];\n    if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n      if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n        nextIndex = minIndex;\n      } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n        nextIndex = maxIndex;\n      } else {\n        nextIndex = findNonDisabledIndex(elementsRef, {\n          startingIndex: nextIndex,\n          decrement: toStartKeys.includes(event.key),\n          disabledIndices\n        });\n      }\n    }\n    if (nextIndex !== activeIndex && !isIndexOutOfBounds(elementsRef, nextIndex)) {\n      var _elementsRef$current$;\n      event.stopPropagation();\n      if (preventedKeys.includes(event.key)) {\n        event.preventDefault();\n      }\n      onNavigate(nextIndex);\n      (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n    }\n  }\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: forwardedRef,\n    'aria-orientation': orientation === 'both' ? undefined : orientation,\n    onKeyDown(e) {\n      domProps.onKeyDown == null || domProps.onKeyDown(e);\n      renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n      handleKeyDown(e);\n    }\n  };\n  return /*#__PURE__*/React.createElement(CompositeContext.Provider, {\n    value: contextValue\n  }, /*#__PURE__*/React.createElement(FloatingList, {\n    elementsRef: elementsRef\n  }, renderJsx(render, computedProps)));\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n  const {\n    render,\n    ...domProps\n  } = props;\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const {\n    activeIndex,\n    onNavigate\n  } = React.useContext(CompositeContext);\n  const {\n    ref,\n    index\n  } = useListItem();\n  const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n  const isActive = activeIndex === index;\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: mergedRef,\n    tabIndex: isActive ? 0 : -1,\n    'data-active': isActive ? '' : undefined,\n    onFocus(e) {\n      domProps.onFocus == null || domProps.onFocus(e);\n      renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n      onNavigate(index);\n    }\n  };\n  return renderJsx(render, computedProps);\n});\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n  const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n  index(() => {\n    if (id == null) {\n      setId(genId());\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  React.useEffect(() => {\n    serverHandoffComplete = true;\n  }, []);\n  return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n  devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n  var _devMessageSet;\n  for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n    messages[_key] = arguments[_key];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n    var _devMessageSet2;\n    (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n    console.warn(message);\n  }\n}\nfunction error() {\n  var _devMessageSet3;\n  for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    messages[_key2] = arguments[_key2];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n    var _devMessageSet4;\n    (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n    console.error(message);\n  }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n  const {\n    context: {\n      placement,\n      elements: {\n        floating\n      },\n      middlewareData: {\n        arrow,\n        shift\n      }\n    },\n    width = 14,\n    height = 7,\n    tipRadius = 0,\n    strokeWidth = 0,\n    staticOffset,\n    stroke,\n    d,\n    style: {\n      transform,\n      ...restStyle\n    } = {},\n    ...rest\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!ref) {\n      warn('The `ref` prop is required for `FloatingArrow`.');\n    }\n  }\n  const clipPathId = useId();\n  const [isRTL, setIsRTL] = React.useState(false);\n\n  // https://github.com/floating-ui/floating-ui/issues/2932\n  index(() => {\n    if (!floating) return;\n    const isRTL = getComputedStyle(floating).direction === 'rtl';\n    if (isRTL) {\n      setIsRTL(true);\n    }\n  }, [floating]);\n  if (!floating) {\n    return null;\n  }\n  const [side, alignment] = placement.split('-');\n  const isVerticalSide = side === 'top' || side === 'bottom';\n  let computedStaticOffset = staticOffset;\n  if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n    computedStaticOffset = null;\n  }\n\n  // Strokes must be double the border width, this ensures the stroke's width\n  // works as you'd expect.\n  const computedStrokeWidth = strokeWidth * 2;\n  const halfStrokeWidth = computedStrokeWidth / 2;\n  const svgX = width / 2 * (tipRadius / -8 + 1);\n  const svgY = height / 2 * tipRadius / 4;\n  const isCustomShape = !!d;\n  const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n  let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n  if (computedStaticOffset && isRTL) {\n    xOffsetProp = alignment === 'end' ? 'left' : 'right';\n  }\n  const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n  const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n  const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n  const rotation = {\n    top: isCustomShape ? 'rotate(180deg)' : '',\n    left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n    bottom: isCustomShape ? '' : 'rotate(180deg)',\n    right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n  }[side];\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n    \"aria-hidden\": true,\n    ref: ref,\n    width: isCustomShape ? width : width + computedStrokeWidth,\n    height: width,\n    viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n    style: {\n      position: 'absolute',\n      pointerEvents: 'none',\n      [xOffsetProp]: arrowX,\n      [yOffsetProp]: arrowY,\n      [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n      transform: [rotation, transform].filter(t => !!t).join(' '),\n      ...restStyle\n    }\n  }), computedStrokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n    clipPath: \"url(#\" + clipPathId + \")\",\n    fill: \"none\",\n    stroke: stroke\n    // Account for the stroke on the fill path rendered below.\n    ,\n    strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n    d: dValue\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n    d: dValue\n  }), /*#__PURE__*/React.createElement(\"clipPath\", {\n    id: clipPathId\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    x: -halfStrokeWidth,\n    y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n    width: width + computedStrokeWidth,\n    height: width\n  })));\n});\n\nfunction createPubSub() {\n  const map = new Map();\n  return {\n    emit(event, data) {\n      var _map$get;\n      (_map$get = map.get(event)) == null || _map$get.forEach(handler => handler(data));\n    },\n    on(event, listener) {\n      map.set(event, [...(map.get(event) || []), listener]);\n    },\n    off(event, listener) {\n      var _map$get2;\n      map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n    }\n  };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n  var _React$useContext;\n  return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n  const id = useId();\n  const tree = useFloatingTree();\n  const reactParentId = useFloatingParentNodeId();\n  const parentId = customParentId || reactParentId;\n  index(() => {\n    const node = {\n      id,\n      parentId\n    };\n    tree == null || tree.addNode(node);\n    return () => {\n      tree == null || tree.removeNode(node);\n    };\n  }, [tree, id, parentId]);\n  return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n  const {\n    children,\n    id\n  } = props;\n  const parentId = useFloatingParentNodeId();\n  return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n    value: React.useMemo(() => ({\n      id,\n      parentId\n    }), [id, parentId])\n  }, children);\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n  const {\n    children\n  } = props;\n  const nodesRef = React.useRef([]);\n  const addNode = React.useCallback(node => {\n    nodesRef.current = [...nodesRef.current, node];\n  }, []);\n  const removeNode = React.useCallback(node => {\n    nodesRef.current = nodesRef.current.filter(n => n !== node);\n  }, []);\n  const events = React.useState(() => createPubSub())[0];\n  return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n    value: React.useMemo(() => ({\n      nodesRef,\n      addNode,\n      removeNode,\n      events\n    }), [addNode, removeNode, events])\n  }, children);\n}\n\nfunction createAttribute(name) {\n  return \"data-floating-ui-\" + name;\n}\n\nfunction useLatestRef(value) {\n  const ref = useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n  if (pointerType && !isMouseLikePointerType(pointerType)) {\n    return 0;\n  }\n  if (typeof value === 'number') {\n    return value;\n  }\n  return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    events,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    delay = 0,\n    handleClose = null,\n    mouseOnly = false,\n    restMs = 0,\n    move = true\n  } = props;\n  const tree = useFloatingTree();\n  const parentId = useFloatingParentNodeId();\n  const handleCloseRef = useLatestRef(handleClose);\n  const delayRef = useLatestRef(delay);\n  const openRef = useLatestRef(open);\n  const pointerTypeRef = React.useRef();\n  const timeoutRef = React.useRef(-1);\n  const handlerRef = React.useRef();\n  const restTimeoutRef = React.useRef(-1);\n  const blockMouseMoveRef = React.useRef(true);\n  const performedPointerEventsMutationRef = React.useRef(false);\n  const unbindMouseMoveRef = React.useRef(() => {});\n  const restTimeoutPendingRef = React.useRef(false);\n  const isHoverOpen = React.useCallback(() => {\n    var _dataRef$current$open;\n    const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n    return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n  }, [dataRef]);\n\n  // When closing before opening, clear the delay timeouts to cancel it\n  // from showing.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        open\n      } = _ref;\n      if (!open) {\n        clearTimeout(timeoutRef.current);\n        clearTimeout(restTimeoutRef.current);\n        blockMouseMoveRef.current = true;\n        restTimeoutPendingRef.current = false;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [enabled, events]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    if (!handleCloseRef.current) return;\n    if (!open) return;\n    function onLeave(event) {\n      if (isHoverOpen()) {\n        onOpenChange(false, event, 'hover');\n      }\n    }\n    const html = getDocument(elements.floating).documentElement;\n    html.addEventListener('mouseleave', onLeave);\n    return () => {\n      html.removeEventListener('mouseleave', onLeave);\n    };\n  }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n  const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n    if (runElseBranch === void 0) {\n      runElseBranch = true;\n    }\n    if (reason === void 0) {\n      reason = 'hover';\n    }\n    const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n    if (closeDelay && !handlerRef.current) {\n      clearTimeout(timeoutRef.current);\n      timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n    } else if (runElseBranch) {\n      clearTimeout(timeoutRef.current);\n      onOpenChange(false, event, reason);\n    }\n  }, [delayRef, onOpenChange]);\n  const cleanupMouseMoveHandler = useEffectEvent(() => {\n    unbindMouseMoveRef.current();\n    handlerRef.current = undefined;\n  });\n  const clearPointerEvents = useEffectEvent(() => {\n    if (performedPointerEventsMutationRef.current) {\n      const body = getDocument(elements.floating).body;\n      body.style.pointerEvents = '';\n      body.removeAttribute(safePolygonIdentifier);\n      performedPointerEventsMutationRef.current = false;\n    }\n  });\n  const isClickLikeOpenEvent = useEffectEvent(() => {\n    return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n  });\n\n  // Registering the mouse events on the reference directly to bypass React's\n  // delegation system. If the cursor was on a disabled element and then entered\n  // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onMouseEnter(event) {\n      clearTimeout(timeoutRef.current);\n      blockMouseMoveRef.current = false;\n      if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && !getDelay(delayRef.current, 'open')) {\n        return;\n      }\n      const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n      if (openDelay) {\n        timeoutRef.current = window.setTimeout(() => {\n          if (!openRef.current) {\n            onOpenChange(true, event, 'hover');\n          }\n        }, openDelay);\n      } else if (!open) {\n        onOpenChange(true, event, 'hover');\n      }\n    }\n    function onMouseLeave(event) {\n      if (isClickLikeOpenEvent()) return;\n      unbindMouseMoveRef.current();\n      const doc = getDocument(elements.floating);\n      clearTimeout(restTimeoutRef.current);\n      restTimeoutPendingRef.current = false;\n      if (handleCloseRef.current && dataRef.current.floatingContext) {\n        // Prevent clearing `onScrollMouseLeave` timeout.\n        if (!open) {\n          clearTimeout(timeoutRef.current);\n        }\n        handlerRef.current = handleCloseRef.current({\n          ...dataRef.current.floatingContext,\n          tree,\n          x: event.clientX,\n          y: event.clientY,\n          onClose() {\n            clearPointerEvents();\n            cleanupMouseMoveHandler();\n            if (!isClickLikeOpenEvent()) {\n              closeWithDelay(event, true, 'safe-polygon');\n            }\n          }\n        });\n        const handler = handlerRef.current;\n        doc.addEventListener('mousemove', handler);\n        unbindMouseMoveRef.current = () => {\n          doc.removeEventListener('mousemove', handler);\n        };\n        return;\n      }\n\n      // Allow interactivity without `safePolygon` on touch devices. With a\n      // pointer, a short close delay is an alternative, so it should work\n      // consistently.\n      const shouldClose = pointerTypeRef.current === 'touch' ? !contains(elements.floating, event.relatedTarget) : true;\n      if (shouldClose) {\n        closeWithDelay(event);\n      }\n    }\n\n    // Ensure the floating element closes after scrolling even if the pointer\n    // did not move.\n    // https://github.com/floating-ui/floating-ui/discussions/1692\n    function onScrollMouseLeave(event) {\n      if (isClickLikeOpenEvent()) return;\n      if (!dataRef.current.floatingContext) return;\n      handleCloseRef.current == null || handleCloseRef.current({\n        ...dataRef.current.floatingContext,\n        tree,\n        x: event.clientX,\n        y: event.clientY,\n        onClose() {\n          clearPointerEvents();\n          cleanupMouseMoveHandler();\n          if (!isClickLikeOpenEvent()) {\n            closeWithDelay(event);\n          }\n        }\n      })(event);\n    }\n    if (isElement(elements.domReference)) {\n      var _elements$floating;\n      const ref = elements.domReference;\n      open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n      (_elements$floating = elements.floating) == null || _elements$floating.addEventListener('mouseleave', onScrollMouseLeave);\n      move && ref.addEventListener('mousemove', onMouseEnter, {\n        once: true\n      });\n      ref.addEventListener('mouseenter', onMouseEnter);\n      ref.addEventListener('mouseleave', onMouseLeave);\n      return () => {\n        var _elements$floating2;\n        open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n        (_elements$floating2 = elements.floating) == null || _elements$floating2.removeEventListener('mouseleave', onScrollMouseLeave);\n        move && ref.removeEventListener('mousemove', onMouseEnter);\n        ref.removeEventListener('mouseenter', onMouseEnter);\n        ref.removeEventListener('mouseleave', onMouseLeave);\n      };\n    }\n  }, [elements, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent]);\n\n  // Block pointer-events of every element other than the reference and floating\n  // while the floating element is open and has a `handleClose` handler. Also\n  // handles nested floating elements.\n  // https://github.com/floating-ui/floating-ui/issues/1722\n  index(() => {\n    var _handleCloseRef$curre;\n    if (!enabled) return;\n    if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n      performedPointerEventsMutationRef.current = true;\n      const floatingEl = elements.floating;\n      if (isElement(elements.domReference) && floatingEl) {\n        var _tree$nodesRef$curren;\n        const body = getDocument(elements.floating).body;\n        body.setAttribute(safePolygonIdentifier, '');\n        const ref = elements.domReference;\n        const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n        if (parentFloating) {\n          parentFloating.style.pointerEvents = '';\n        }\n        body.style.pointerEvents = 'none';\n        ref.style.pointerEvents = 'auto';\n        floatingEl.style.pointerEvents = 'auto';\n        return () => {\n          body.style.pointerEvents = '';\n          ref.style.pointerEvents = '';\n          floatingEl.style.pointerEvents = '';\n        };\n      }\n    }\n  }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n  index(() => {\n    if (!open) {\n      pointerTypeRef.current = undefined;\n      restTimeoutPendingRef.current = false;\n      cleanupMouseMoveHandler();\n      clearPointerEvents();\n    }\n  }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n  React.useEffect(() => {\n    return () => {\n      cleanupMouseMoveHandler();\n      clearTimeout(timeoutRef.current);\n      clearTimeout(restTimeoutRef.current);\n      clearPointerEvents();\n    };\n  }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n  const reference = React.useMemo(() => {\n    function setPointerRef(event) {\n      pointerTypeRef.current = event.pointerType;\n    }\n    return {\n      onPointerDown: setPointerRef,\n      onPointerEnter: setPointerRef,\n      onMouseMove(event) {\n        const {\n          nativeEvent\n        } = event;\n        function handleMouseMove() {\n          if (!blockMouseMoveRef.current && !openRef.current) {\n            onOpenChange(true, nativeEvent, 'hover');\n          }\n        }\n        if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n          return;\n        }\n        if (open || restMs === 0) {\n          return;\n        }\n\n        // Ignore insignificant movements to account for tremors.\n        if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n          return;\n        }\n        clearTimeout(restTimeoutRef.current);\n        if (pointerTypeRef.current === 'touch') {\n          handleMouseMove();\n        } else {\n          restTimeoutPendingRef.current = true;\n          restTimeoutRef.current = window.setTimeout(handleMouseMove, restMs);\n        }\n      }\n    };\n  }, [mouseOnly, onOpenChange, open, openRef, restMs]);\n  const floating = React.useMemo(() => ({\n    onMouseEnter() {\n      clearTimeout(timeoutRef.current);\n    },\n    onMouseLeave(event) {\n      if (!isClickLikeOpenEvent()) {\n        closeWithDelay(event.nativeEvent, false);\n      }\n    }\n  }), [closeWithDelay, isClickLikeOpenEvent]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n  delay: 0,\n  initialDelay: 0,\n  timeoutMs: 0,\n  currentId: null,\n  setCurrentId: NOOP,\n  setState: NOOP,\n  isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n  const {\n    children,\n    delay,\n    timeoutMs = 0\n  } = props;\n  const [state, setState] = React.useReducer((prev, next) => ({\n    ...prev,\n    ...next\n  }), {\n    delay,\n    timeoutMs,\n    initialDelay: delay,\n    currentId: null,\n    isInstantPhase: false\n  });\n  const initialCurrentIdRef = React.useRef(null);\n  const setCurrentId = React.useCallback(currentId => {\n    setState({\n      currentId\n    });\n  }, []);\n  index(() => {\n    if (state.currentId) {\n      if (initialCurrentIdRef.current === null) {\n        initialCurrentIdRef.current = state.currentId;\n      } else if (!state.isInstantPhase) {\n        setState({\n          isInstantPhase: true\n        });\n      }\n    } else {\n      if (state.isInstantPhase) {\n        setState({\n          isInstantPhase: false\n        });\n      }\n      initialCurrentIdRef.current = null;\n    }\n  }, [state.currentId, state.isInstantPhase]);\n  return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n    value: React.useMemo(() => ({\n      ...state,\n      setState,\n      setCurrentId\n    }), [state, setCurrentId])\n  }, children);\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    floatingId\n  } = context;\n  const {\n    id: optionId,\n    enabled = true\n  } = options;\n  const id = optionId != null ? optionId : floatingId;\n  const groupContext = useDelayGroupContext();\n  const {\n    currentId,\n    setCurrentId,\n    initialDelay,\n    setState,\n    timeoutMs\n  } = groupContext;\n  index(() => {\n    if (!enabled) return;\n    if (!currentId) return;\n    setState({\n      delay: {\n        open: 1,\n        close: getDelay(initialDelay, 'close')\n      }\n    });\n    if (currentId !== id) {\n      onOpenChange(false);\n    }\n  }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n  index(() => {\n    function unset() {\n      onOpenChange(false);\n      setState({\n        delay: initialDelay,\n        currentId: null\n      });\n    }\n    if (!enabled) return;\n    if (!currentId) return;\n    if (!open && currentId === id) {\n      if (timeoutMs) {\n        const timeout = window.setTimeout(unset, timeoutMs);\n        return () => {\n          clearTimeout(timeout);\n        };\n      }\n      unset();\n    }\n  }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n  index(() => {\n    if (!enabled) return;\n    if (setCurrentId === NOOP || !open) return;\n    setCurrentId(id);\n  }, [enabled, open, setCurrentId, id]);\n  return groupContext;\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    preventScroll = false,\n    cancelPrevious = true,\n    sync = false\n  } = options;\n  cancelPrevious && cancelAnimationFrame(rafId);\n  const exec = () => el == null ? void 0 : el.focus({\n    preventScroll\n  });\n  if (sync) {\n    exec();\n  } else {\n    rafId = requestAnimationFrame(exec);\n  }\n}\n\nfunction getAncestors(nodes, id) {\n  var _nodes$find;\n  let allAncestors = [];\n  let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n  while (currentParentId) {\n    const currentNode = nodes.find(node => node.id === currentParentId);\n    currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n    if (currentNode) {\n      allAncestors = allAncestors.concat(currentNode);\n    }\n  }\n  return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n  let allChildren = nodes.filter(node => {\n    var _node$context;\n    return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n  });\n  let currentChildren = allChildren;\n  while (currentChildren.length) {\n    currentChildren = nodes.filter(node => {\n      var _currentChildren;\n      return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n        var _node$context2;\n        return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n      });\n    });\n    allChildren = allChildren.concat(currentChildren);\n  }\n  return allChildren;\n}\nfunction getDeepestNode(nodes, id) {\n  let deepestNodeId;\n  let maxDepth = -1;\n  function findDeepest(nodeId, depth) {\n    if (depth > maxDepth) {\n      deepestNodeId = nodeId;\n      maxDepth = depth;\n    }\n    const children = getChildren(nodes, nodeId);\n    children.forEach(child => {\n      findDeepest(child.id, depth + 1);\n    });\n  }\n  findDeepest(id, 0);\n  return nodes.find(node => node.id === deepestNodeId);\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nlet counterMap = /*#__PURE__*/new WeakMap();\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n  if (parent.contains(target)) {\n    return target;\n  }\n  const correctedTarget = unwrapHost(target);\n  if (parent.contains(correctedTarget)) {\n    return correctedTarget;\n  }\n  return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n  const markerName = 'data-floating-ui-inert';\n  const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n  const avoidElements = correctElements(body, uncorrectedAvoidElements);\n  const elementsToKeep = new Set();\n  const elementsToStop = new Set(avoidElements);\n  const hiddenElements = [];\n  if (!markerMap[markerName]) {\n    markerMap[markerName] = new WeakMap();\n  }\n  const markerCounter = markerMap[markerName];\n  avoidElements.forEach(keep);\n  deep(body);\n  elementsToKeep.clear();\n  function keep(el) {\n    if (!el || elementsToKeep.has(el)) {\n      return;\n    }\n    elementsToKeep.add(el);\n    el.parentNode && keep(el.parentNode);\n  }\n  function deep(parent) {\n    if (!parent || elementsToStop.has(parent)) {\n      return;\n    }\n    [].forEach.call(parent.children, node => {\n      if (getNodeName(node) === 'script') return;\n      if (elementsToKeep.has(node)) {\n        deep(node);\n      } else {\n        const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n        const alreadyHidden = attr !== null && attr !== 'false';\n        const counterValue = (counterMap.get(node) || 0) + 1;\n        const markerValue = (markerCounter.get(node) || 0) + 1;\n        counterMap.set(node, counterValue);\n        markerCounter.set(node, markerValue);\n        hiddenElements.push(node);\n        if (counterValue === 1 && alreadyHidden) {\n          uncontrolledElementsSet.add(node);\n        }\n        if (markerValue === 1) {\n          node.setAttribute(markerName, '');\n        }\n        if (!alreadyHidden && controlAttribute) {\n          node.setAttribute(controlAttribute, 'true');\n        }\n      }\n    });\n  }\n  lockCount$1++;\n  return () => {\n    hiddenElements.forEach(element => {\n      const counterValue = (counterMap.get(element) || 0) - 1;\n      const markerValue = (markerCounter.get(element) || 0) - 1;\n      counterMap.set(element, counterValue);\n      markerCounter.set(element, markerValue);\n      if (!counterValue) {\n        if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n          element.removeAttribute(controlAttribute);\n        }\n        uncontrolledElementsSet.delete(element);\n      }\n      if (!markerValue) {\n        element.removeAttribute(markerName);\n      }\n    });\n    lockCount$1--;\n    if (!lockCount$1) {\n      counterMap = new WeakMap();\n      counterMap = new WeakMap();\n      uncontrolledElementsSet = new WeakSet();\n      markerMap = {};\n    }\n  };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n  if (ariaHidden === void 0) {\n    ariaHidden = false;\n  }\n  if (inert === void 0) {\n    inert = false;\n  }\n  const body = getDocument(avoidElements[0]).body;\n  return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live]'))), body, ariaHidden, inert);\n}\n\nconst getTabbableOptions = () => ({\n  getShadowRoot: true,\n  displayCheck:\n  // JSDOM does not support the `tabbable` library. To solve this we can\n  // check if `ResizeObserver` is a real function (not polyfilled), which\n  // determines if the current environment is JSDOM-like.\n  typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n  const allTabbable = tabbable(container, getTabbableOptions());\n  if (direction === 'prev') {\n    allTabbable.reverse();\n  }\n  const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n  const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n  return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n  return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n  return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n  const containerElement = container || event.currentTarget;\n  const relatedTarget = event.relatedTarget;\n  return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n  const tabbableElements = tabbable(container, getTabbableOptions());\n  tabbableElements.forEach(element => {\n    element.dataset.tabindex = element.getAttribute('tabindex') || '';\n    element.setAttribute('tabindex', '-1');\n  });\n}\nfunction enableFocusInside(container) {\n  const elements = container.querySelectorAll('[data-tabindex]');\n  elements.forEach(element => {\n    const tabindex = element.dataset.tabindex;\n    delete element.dataset.tabindex;\n    if (tabindex) {\n      element.setAttribute('tabindex', tabindex);\n    } else {\n      element.removeAttribute('tabindex');\n    }\n  });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  padding: 0,\n  position: 'fixed',\n  whiteSpace: 'nowrap',\n  width: '1px',\n  top: 0,\n  left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n  if (event.key === 'Tab') {\n    event.target;\n    clearTimeout(timeoutId);\n  }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n  const [role, setRole] = React.useState();\n  index(() => {\n    if (isSafari()) {\n      // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n      // on VoiceOver does trigger the onFocus event, so we can use the focus\n      // trap element. On Safari, only buttons trigger the onFocus event.\n      // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n      // button role.\n      setRole('button');\n    }\n    document.addEventListener('keydown', setActiveElementOnTab);\n    return () => {\n      document.removeEventListener('keydown', setActiveElementOnTab);\n    };\n  }, []);\n  const restProps = {\n    ref,\n    tabIndex: 0,\n    // Role is only for VoiceOver\n    role,\n    'aria-hidden': role ? undefined : true,\n    [createAttribute('focus-guard')]: '',\n    style: HIDDEN_STYLES\n  };\n  return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, restProps));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    id,\n    root\n  } = props;\n  const uniqueId = useId();\n  const portalContext = usePortalContext();\n  const [portalNode, setPortalNode] = React.useState(null);\n  const portalNodeRef = React.useRef(null);\n  index(() => {\n    return () => {\n      portalNode == null || portalNode.remove();\n      // Allow the subsequent layout effects to create a new node on updates.\n      // The portal node will still be cleaned up on unmount.\n      // https://github.com/floating-ui/floating-ui/issues/2454\n      queueMicrotask(() => {\n        portalNodeRef.current = null;\n      });\n    };\n  }, [portalNode]);\n  index(() => {\n    // Wait for the uniqueId to be generated before creating the portal node in\n    // React <18 (using `useFloatingId` instead of the native `useId`).\n    // https://github.com/floating-ui/floating-ui/issues/2778\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    const existingIdRoot = id ? document.getElementById(id) : null;\n    if (!existingIdRoot) return;\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    existingIdRoot.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, uniqueId]);\n  index(() => {\n    // Wait for the root to exist before creating the portal node. The root must\n    // be stored in state, not a ref, for this to work reactively.\n    if (root === null) return;\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n    if (container && !isElement(container)) container = container.current;\n    container = container || document.body;\n    let idWrapper = null;\n    if (id) {\n      idWrapper = document.createElement('div');\n      idWrapper.id = id;\n      container.appendChild(idWrapper);\n    }\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    container = idWrapper || container;\n    container.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, root, uniqueId, portalContext]);\n  return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n  const {\n    children,\n    id,\n    root,\n    preserveTabOrder = true\n  } = props;\n  const portalNode = useFloatingPortalNode({\n    id,\n    root\n  });\n  const [focusManagerState, setFocusManagerState] = React.useState(null);\n  const beforeOutsideRef = React.useRef(null);\n  const afterOutsideRef = React.useRef(null);\n  const beforeInsideRef = React.useRef(null);\n  const afterInsideRef = React.useRef(null);\n  const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n  const open = focusManagerState == null ? void 0 : focusManagerState.open;\n  const shouldRenderGuards =\n  // The FocusManager and therefore floating element are currently open/\n  // rendered.\n  !!focusManagerState &&\n  // Guards are only for non-modal focus management.\n  !focusManagerState.modal &&\n  // Don't render if unmount is transitioning.\n  focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n  // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n  React.useEffect(() => {\n    if (!portalNode || !preserveTabOrder || modal) {\n      return;\n    }\n\n    // Make sure elements inside the portal element are tabbable only when the\n    // portal has already been focused, either by tabbing into a focus trap\n    // element outside or using the mouse.\n    function onFocus(event) {\n      if (portalNode && isOutsideEvent(event)) {\n        const focusing = event.type === 'focusin';\n        const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n        manageFocus(portalNode);\n      }\n    }\n    // Listen to the event on the capture phase so they run before the focus\n    // trap elements onFocus prop is called.\n    portalNode.addEventListener('focusin', onFocus, true);\n    portalNode.addEventListener('focusout', onFocus, true);\n    return () => {\n      portalNode.removeEventListener('focusin', onFocus, true);\n      portalNode.removeEventListener('focusout', onFocus, true);\n    };\n  }, [portalNode, preserveTabOrder, modal]);\n  React.useEffect(() => {\n    if (!portalNode) return;\n    if (open) return;\n    enableFocusInside(portalNode);\n  }, [open, portalNode]);\n  return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n    value: React.useMemo(() => ({\n      preserveTabOrder,\n      beforeOutsideRef,\n      afterOutsideRef,\n      beforeInsideRef,\n      afterInsideRef,\n      portalNode,\n      setFocusManagerState\n    }), [preserveTabOrder, portalNode])\n  }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"outside\",\n    ref: beforeOutsideRef,\n    onFocus: event => {\n      if (isOutsideEvent(event, portalNode)) {\n        var _beforeInsideRef$curr;\n        (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n      } else {\n        const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n        prevTabbable == null || prevTabbable.focus();\n      }\n    }\n  }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-owns\": portalNode.id,\n    style: HIDDEN_STYLES\n  }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"outside\",\n    ref: afterOutsideRef,\n    onFocus: event => {\n      if (isOutsideEvent(event, portalNode)) {\n        var _afterInsideRef$curre;\n        (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n      } else {\n        const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n        nextTabbable == null || nextTabbable.focus();\n        (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n      }\n    }\n  }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nfunction getFloatingFocusElement(floatingElement) {\n  if (!floatingElement) {\n    return null;\n  }\n  // Try to find the element that has `{...getFloatingProps()}` spread on it.\n  // This indicates the floating element is acting as a positioning wrapper, and\n  // so focus should be managed on the child element with the event handlers and\n  // aria props.\n  return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction addPreviouslyFocusedElement(element) {\n  previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n  let tabbableEl = element;\n  if (!tabbableEl || getNodeName(tabbableEl) === 'body') return;\n  if (!isTabbable(tabbableEl, getTabbableOptions())) {\n    const tabbableChild = tabbable(tabbableEl, getTabbableOptions())[0];\n    if (tabbableChild) {\n      tabbableEl = tabbableChild;\n    }\n  }\n  previouslyFocusedElements.push(tabbableEl);\n  if (previouslyFocusedElements.length > LIST_LIMIT) {\n    previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n  }\n}\nfunction getPreviouslyFocusedElement() {\n  return previouslyFocusedElements.slice().reverse().find(el => el.isConnected);\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n  return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n    type: \"button\",\n    ref: ref,\n    tabIndex: -1,\n    style: HIDDEN_STYLES\n  }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n  const {\n    context,\n    children,\n    disabled = false,\n    order = ['content'],\n    guards: _guards = true,\n    initialFocus = 0,\n    returnFocus = true,\n    restoreFocus = false,\n    modal = true,\n    visuallyHiddenDismiss = false,\n    closeOnFocusOut = true\n  } = props;\n  const {\n    open,\n    refs,\n    nodeId,\n    onOpenChange,\n    events,\n    dataRef,\n    floatingId,\n    elements: {\n      domReference,\n      floating\n    }\n  } = context;\n  const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n  // If the reference is a combobox and is typeable (e.g. input/textarea),\n  // there are different focus semantics. The guards should not be rendered, but\n  // aria-hidden should be applied to all nodes still. Further, the visually\n  // hidden dismiss button should only appear at the end of the list, not the\n  // start.\n  const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n  // Force the guards to be rendered if the `inert` attribute is not supported.\n  const guards = supportsInert() ? _guards : true;\n  const orderRef = useLatestRef(order);\n  const initialFocusRef = useLatestRef(initialFocus);\n  const returnFocusRef = useLatestRef(returnFocus);\n  const tree = useFloatingTree();\n  const portalContext = usePortalContext();\n  const startDismissButtonRef = React.useRef(null);\n  const endDismissButtonRef = React.useRef(null);\n  const preventReturnFocusRef = React.useRef(false);\n  const isPointerDownRef = React.useRef(false);\n  const tabbableIndexRef = React.useRef(-1);\n  const isInsidePortal = portalContext != null;\n  const floatingFocusElement = getFloatingFocusElement(floating);\n  const getTabbableContent = useEffectEvent(function (container) {\n    if (container === void 0) {\n      container = floatingFocusElement;\n    }\n    return container ? tabbable(container, getTabbableOptions()) : [];\n  });\n  const getTabbableElements = useEffectEvent(container => {\n    const content = getTabbableContent(container);\n    return orderRef.current.map(type => {\n      if (domReference && type === 'reference') {\n        return domReference;\n      }\n      if (floatingFocusElement && type === 'floating') {\n        return floatingFocusElement;\n      }\n      return content;\n    }).filter(Boolean).flat();\n  });\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!modal) return;\n    function onKeyDown(event) {\n      if (event.key === 'Tab') {\n        // The focus guards have nothing to focus, so we need to stop the event.\n        if (contains(floatingFocusElement, activeElement(getDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n          stopEvent(event);\n        }\n        const els = getTabbableElements();\n        const target = getTarget(event);\n        if (orderRef.current[0] === 'reference' && target === domReference) {\n          stopEvent(event);\n          if (event.shiftKey) {\n            enqueueFocus(els[els.length - 1]);\n          } else {\n            enqueueFocus(els[1]);\n          }\n        }\n        if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n          stopEvent(event);\n          enqueueFocus(els[0]);\n        }\n      }\n    }\n    const doc = getDocument(floatingFocusElement);\n    doc.addEventListener('keydown', onKeyDown);\n    return () => {\n      doc.removeEventListener('keydown', onKeyDown);\n    };\n  }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!floating) return;\n    function handleFocusIn(event) {\n      const target = getTarget(event);\n      const tabbableContent = getTabbableContent();\n      const tabbableIndex = tabbableContent.indexOf(target);\n      if (tabbableIndex !== -1) {\n        tabbableIndexRef.current = tabbableIndex;\n      }\n    }\n    floating.addEventListener('focusin', handleFocusIn);\n    return () => {\n      floating.removeEventListener('focusin', handleFocusIn);\n    };\n  }, [disabled, floating, getTabbableContent]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!closeOnFocusOut) return;\n\n    // In Safari, buttons lose focus when pressing them.\n    function handlePointerDown() {\n      isPointerDownRef.current = true;\n      setTimeout(() => {\n        isPointerDownRef.current = false;\n      });\n    }\n    function handleFocusOutside(event) {\n      const relatedTarget = event.relatedTarget;\n      queueMicrotask(() => {\n        const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context, _node$context2;\n          return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n        }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context3, _node$context4;\n          return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n        })));\n\n        // Restore focus to the previous tabbable element index to prevent\n        // focus from being lost outside the floating tree.\n        if (restoreFocus && movedToUnrelatedNode && activeElement(getDocument(floatingFocusElement)) === getDocument(floatingFocusElement).body) {\n          // Let `FloatingPortal` effect knows that focus is still inside the\n          // floating tree.\n          if (isHTMLElement(floatingFocusElement)) {\n            floatingFocusElement.focus();\n          }\n          const prevTabbableIndex = tabbableIndexRef.current;\n          const tabbableContent = getTabbableContent();\n          const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n          if (isHTMLElement(nodeToFocus)) {\n            nodeToFocus.focus();\n          }\n        }\n\n        // Focus did not move inside the floating tree, and there are no tabbable\n        // portal guards to handle closing.\n        if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n        // Fix React 18 Strict Mode returnFocus due to double rendering.\n        relatedTarget !== getPreviouslyFocusedElement()) {\n          preventReturnFocusRef.current = true;\n          onOpenChange(false, event, 'focus-out');\n        }\n      });\n    }\n    if (floating && isHTMLElement(domReference)) {\n      domReference.addEventListener('focusout', handleFocusOutside);\n      domReference.addEventListener('pointerdown', handlePointerDown);\n      floating.addEventListener('focusout', handleFocusOutside);\n      return () => {\n        domReference.removeEventListener('focusout', handleFocusOutside);\n        domReference.removeEventListener('pointerdown', handlePointerDown);\n        floating.removeEventListener('focusout', handleFocusOutside);\n      };\n    }\n  }, [disabled, domReference, floating, floatingFocusElement, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox]);\n  React.useEffect(() => {\n    var _portalContext$portal;\n    if (disabled) return;\n\n    // Don't hide portals nested within the parent portal.\n    const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n    if (floating) {\n      const insideElements = [floating, ...portalNodes, startDismissButtonRef.current, endDismissButtonRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n      const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, guards, !guards) : markOthers(insideElements);\n      return () => {\n        cleanup();\n      };\n    }\n  }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards]);\n  index(() => {\n    if (disabled || !isHTMLElement(floatingFocusElement)) return;\n    const doc = getDocument(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n\n    // Wait for any layout effect state setters to execute to set `tabIndex`.\n    queueMicrotask(() => {\n      const focusableElements = getTabbableElements(floatingFocusElement);\n      const initialFocusValue = initialFocusRef.current;\n      const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n      const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);\n      if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n        enqueueFocus(elToFocus, {\n          preventScroll: elToFocus === floatingFocusElement\n        });\n      }\n    });\n  }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n  index(() => {\n    if (disabled || !floatingFocusElement) return;\n    let preventReturnFocusScroll = false;\n    const doc = getDocument(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n    const contextData = dataRef.current;\n    let openEvent = contextData.openEvent;\n    addPreviouslyFocusedElement(previouslyFocusedElement);\n\n    // Dismissing via outside press should always ignore `returnFocus` to\n    // prevent unwanted scrolling.\n    function onOpenChange(_ref) {\n      let {\n        open,\n        reason,\n        event,\n        nested\n      } = _ref;\n      if (open) {\n        openEvent = event;\n      }\n      if (reason === 'escape-key' && refs.domReference.current) {\n        addPreviouslyFocusedElement(refs.domReference.current);\n      }\n      if (reason === 'hover' && event.type === 'mouseleave') {\n        preventReturnFocusRef.current = true;\n      }\n      if (reason !== 'outside-press') return;\n      if (nested) {\n        preventReturnFocusRef.current = false;\n        preventReturnFocusScroll = true;\n      } else {\n        preventReturnFocusRef.current = !(isVirtualClick(event) || isVirtualPointerEvent(event));\n      }\n    }\n    events.on('openchange', onOpenChange);\n    const fallbackEl = doc.createElement('span');\n    fallbackEl.setAttribute('tabindex', '-1');\n    fallbackEl.setAttribute('aria-hidden', 'true');\n    Object.assign(fallbackEl.style, HIDDEN_STYLES);\n    if (isInsidePortal && domReference) {\n      domReference.insertAdjacentElement('afterend', fallbackEl);\n    }\n    function getReturnElement() {\n      if (typeof returnFocusRef.current === 'boolean') {\n        return getPreviouslyFocusedElement() || fallbackEl;\n      }\n      return returnFocusRef.current.current || fallbackEl;\n    }\n    return () => {\n      events.off('openchange', onOpenChange);\n      const activeEl = activeElement(doc);\n      const isFocusInsideFloatingTree = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n        var _node$context5;\n        return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n      });\n      const shouldFocusReference = isFocusInsideFloatingTree || openEvent && ['click', 'mousedown'].includes(openEvent.type);\n      if (shouldFocusReference && refs.domReference.current) {\n        addPreviouslyFocusedElement(refs.domReference.current);\n      }\n      const returnElement = getReturnElement();\n      queueMicrotask(() => {\n        if (\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(returnElement) && (\n        // If the focus moved somewhere else after mount, avoid returning focus\n        // since it likely entered a different element which should be\n        // respected: https://github.com/floating-ui/floating-ui/issues/2607\n        returnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n          returnElement.focus({\n            preventScroll: preventReturnFocusScroll\n          });\n        }\n        fallbackEl.remove();\n      });\n    };\n  }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, refs, events, tree, nodeId, isInsidePortal, domReference]);\n  React.useEffect(() => {\n    // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n    // wait for it to complete before resetting the flag.\n    queueMicrotask(() => {\n      preventReturnFocusRef.current = false;\n    });\n  }, [disabled]);\n\n  // Synchronize the `context` & `modal` value to the FloatingPortal context.\n  // It will decide whether or not it needs to render its own guards.\n  index(() => {\n    if (disabled) return;\n    if (!portalContext) return;\n    portalContext.setFocusManagerState({\n      modal,\n      closeOnFocusOut,\n      open,\n      onOpenChange,\n      refs\n    });\n    return () => {\n      portalContext.setFocusManagerState(null);\n    };\n  }, [disabled, portalContext, modal, open, onOpenChange, refs, closeOnFocusOut]);\n  index(() => {\n    if (disabled) return;\n    if (!floatingFocusElement) return;\n    if (typeof MutationObserver !== 'function') return;\n    if (ignoreInitialFocus) return;\n    const handleMutation = () => {\n      const tabIndex = floatingFocusElement.getAttribute('tabindex');\n      const tabbableContent = getTabbableContent();\n      const activeEl = activeElement(getDocument(floating));\n      const tabbableIndex = tabbableContent.indexOf(activeEl);\n      if (tabbableIndex !== -1) {\n        tabbableIndexRef.current = tabbableIndex;\n      }\n      if (orderRef.current.includes('floating') || activeEl !== refs.domReference.current && tabbableContent.length === 0) {\n        if (tabIndex !== '0') {\n          floatingFocusElement.setAttribute('tabindex', '0');\n        }\n      } else if (tabIndex !== '-1') {\n        floatingFocusElement.setAttribute('tabindex', '-1');\n      }\n    };\n    handleMutation();\n    const observer = new MutationObserver(handleMutation);\n    observer.observe(floatingFocusElement, {\n      childList: true,\n      subtree: true,\n      attributes: true\n    });\n    return () => {\n      observer.disconnect();\n    };\n  }, [disabled, floating, floatingFocusElement, refs, orderRef, getTabbableContent, ignoreInitialFocus]);\n  function renderDismissButton(location) {\n    if (disabled || !visuallyHiddenDismiss || !modal) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n      ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n      onClick: event => onOpenChange(false, event.nativeEvent)\n    }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss');\n  }\n  const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"inside\",\n    ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n    onFocus: event => {\n      if (modal) {\n        const els = getTabbableElements();\n        enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n      } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n        preventReturnFocusRef.current = false;\n        if (isOutsideEvent(event, portalContext.portalNode)) {\n          const nextTabbable = getNextTabbable() || domReference;\n          nextTabbable == null || nextTabbable.focus();\n        } else {\n          var _portalContext$before;\n          (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n        }\n      }\n    }\n  }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n    \"data-type\": \"inside\",\n    ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n    onFocus: event => {\n      if (modal) {\n        enqueueFocus(getTabbableElements()[0]);\n      } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n        if (closeOnFocusOut) {\n          preventReturnFocusRef.current = true;\n        }\n        if (isOutsideEvent(event, portalContext.portalNode)) {\n          const prevTabbable = getPreviousTabbable() || domReference;\n          prevTabbable == null || prevTabbable.focus();\n        } else {\n          var _portalContext$afterO;\n          (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n        }\n      }\n    }\n  }));\n}\n\nlet lockCount = 0;\nfunction enableScrollLock() {\n  const isIOS = /iP(hone|ad|od)|iOS/.test(getPlatform());\n  const bodyStyle = document.body.style;\n  // RTL <body> scrollbar\n  const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n  const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n  const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n  const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n  const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n  bodyStyle.overflow = 'hidden';\n  if (scrollbarWidth) {\n    bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n  }\n\n  // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n  // technique has fewer side effects.\n  if (isIOS) {\n    var _window$visualViewpor, _window$visualViewpor2;\n    // iOS 12 does not support `visualViewport`.\n    const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n    const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n    Object.assign(bodyStyle, {\n      position: 'fixed',\n      top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n      left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n      right: '0'\n    });\n  }\n  return () => {\n    Object.assign(bodyStyle, {\n      overflow: '',\n      [paddingProp]: ''\n    });\n    if (isIOS) {\n      Object.assign(bodyStyle, {\n        position: '',\n        top: '',\n        left: '',\n        right: ''\n      });\n      window.scrollTo(scrollX, scrollY);\n    }\n  };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n  const {\n    lockScroll = false,\n    ...rest\n  } = props;\n  index(() => {\n    if (!lockScroll) return;\n    lockCount++;\n    if (lockCount === 1) {\n      cleanup = enableScrollLock();\n    }\n    return () => {\n      lockCount--;\n      if (lockCount === 0) {\n        cleanup();\n      }\n    };\n  }, [lockScroll]);\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref\n  }, rest, {\n    style: {\n      position: 'fixed',\n      overflow: 'auto',\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0,\n      ...rest.style\n    }\n  }));\n});\n\nfunction isButtonTarget(event) {\n  return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n  return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    elements: {\n      domReference\n    }\n  } = context;\n  const {\n    enabled = true,\n    event: eventOption = 'click',\n    toggle = true,\n    ignoreMouse = false,\n    keyboardHandlers = true,\n    stickIfOpen = true\n  } = props;\n  const pointerTypeRef = React.useRef();\n  const didKeyDownRef = React.useRef(false);\n  const reference = React.useMemo(() => ({\n    onPointerDown(event) {\n      pointerTypeRef.current = event.pointerType;\n    },\n    onMouseDown(event) {\n      const pointerType = pointerTypeRef.current;\n\n      // Ignore all buttons except for the \"main\" button.\n      // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n      if (event.button !== 0) return;\n      if (eventOption === 'click') return;\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        // Prevent stealing focus from the floating element\n        event.preventDefault();\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onClick(event) {\n      const pointerType = pointerTypeRef.current;\n      if (eventOption === 'mousedown' && pointerTypeRef.current) {\n        pointerTypeRef.current = undefined;\n        return;\n      }\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onKeyDown(event) {\n      pointerTypeRef.current = undefined;\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n        return;\n      }\n      if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n        // Prevent scrolling\n        event.preventDefault();\n        didKeyDownRef.current = true;\n      }\n      if (event.key === 'Enter') {\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    },\n    onKeyUp(event) {\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n        return;\n      }\n      if (event.key === ' ' && didKeyDownRef.current) {\n        didKeyDownRef.current = false;\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    }\n  }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n  let offsetX = null;\n  let offsetY = null;\n  let isAutoUpdateEvent = false;\n  return {\n    contextElement: domElement || undefined,\n    getBoundingClientRect() {\n      var _data$dataRef$current;\n      const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n        width: 0,\n        height: 0,\n        x: 0,\n        y: 0\n      };\n      const isXAxis = data.axis === 'x' || data.axis === 'both';\n      const isYAxis = data.axis === 'y' || data.axis === 'both';\n      const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n      let width = domRect.width;\n      let height = domRect.height;\n      let x = domRect.x;\n      let y = domRect.y;\n      if (offsetX == null && data.x && isXAxis) {\n        offsetX = domRect.x - data.x;\n      }\n      if (offsetY == null && data.y && isYAxis) {\n        offsetY = domRect.y - data.y;\n      }\n      x -= offsetX || 0;\n      y -= offsetY || 0;\n      width = 0;\n      height = 0;\n      if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n        width = data.axis === 'y' ? domRect.width : 0;\n        height = data.axis === 'x' ? domRect.height : 0;\n        x = isXAxis && data.x != null ? data.x : x;\n        y = isYAxis && data.y != null ? data.y : y;\n      } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n        height = data.axis === 'x' ? domRect.height : height;\n        width = data.axis === 'y' ? domRect.width : width;\n      }\n      isAutoUpdateEvent = true;\n      return {\n        width,\n        height,\n        x,\n        y,\n        top: y,\n        right: x + width,\n        bottom: y + height,\n        left: x\n      };\n    }\n  };\n}\nfunction isMouseBasedEvent(event) {\n  return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    dataRef,\n    elements: {\n      floating,\n      domReference\n    },\n    refs\n  } = context;\n  const {\n    enabled = true,\n    axis = 'both',\n    x = null,\n    y = null\n  } = props;\n  const initialRef = React.useRef(false);\n  const cleanupListenerRef = React.useRef(null);\n  const [pointerType, setPointerType] = React.useState();\n  const [reactive, setReactive] = React.useState([]);\n  const setReference = useEffectEvent((x, y) => {\n    if (initialRef.current) return;\n\n    // Prevent setting if the open event was not a mouse-like one\n    // (e.g. focus to open, then hover over the reference element).\n    // Only apply if the event exists.\n    if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n      return;\n    }\n    refs.setPositionReference(createVirtualElement(domReference, {\n      x,\n      y,\n      axis,\n      dataRef,\n      pointerType\n    }));\n  });\n  const handleReferenceEnterOrMove = useEffectEvent(event => {\n    if (x != null || y != null) return;\n    if (!open) {\n      setReference(event.clientX, event.clientY);\n    } else if (!cleanupListenerRef.current) {\n      // If there's no cleanup, there's no listener, but we want to ensure\n      // we add the listener if the cursor landed on the floating element and\n      // then back on the reference (i.e. it's interactive).\n      setReactive([]);\n    }\n  });\n\n  // If the pointer is a mouse-like pointer, we want to continue following the\n  // mouse even if the floating element is transitioning out. On touch\n  // devices, this is undesirable because the floating element will move to\n  // the dismissal touch point.\n  const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n  const addListener = React.useCallback(() => {\n    // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n    if (!openCheck || !enabled || x != null || y != null) return;\n    const win = getWindow(floating);\n    function handleMouseMove(event) {\n      const target = getTarget(event);\n      if (!contains(floating, target)) {\n        setReference(event.clientX, event.clientY);\n      } else {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      }\n    }\n    if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n      win.addEventListener('mousemove', handleMouseMove);\n      const cleanup = () => {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      };\n      cleanupListenerRef.current = cleanup;\n      return cleanup;\n    }\n    refs.setPositionReference(domReference);\n  }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n  React.useEffect(() => {\n    return addListener();\n  }, [addListener, reactive]);\n  React.useEffect(() => {\n    if (enabled && !floating) {\n      initialRef.current = false;\n    }\n  }, [enabled, floating]);\n  React.useEffect(() => {\n    if (!enabled && open) {\n      initialRef.current = true;\n    }\n  }, [enabled, open]);\n  index(() => {\n    if (enabled && (x != null || y != null)) {\n      initialRef.current = false;\n      setReference(x, y);\n    }\n  }, [enabled, x, y, setReference]);\n  const reference = React.useMemo(() => {\n    function setPointerTypeRef(_ref) {\n      let {\n        pointerType\n      } = _ref;\n      setPointerType(pointerType);\n    }\n    return {\n      onPointerDown: setPointerTypeRef,\n      onPointerEnter: setPointerTypeRef,\n      onMouseMove: handleReferenceEnterOrMove,\n      onMouseEnter: handleReferenceEnterOrMove\n    };\n  }, [handleReferenceEnterOrMove]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n  pointerdown: 'onPointerDown',\n  mousedown: 'onMouseDown',\n  click: 'onClick'\n};\nconst captureHandlerKeys = {\n  pointerdown: 'onPointerDownCapture',\n  mousedown: 'onMouseDownCapture',\n  click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n  var _normalizable$escapeK, _normalizable$outside;\n  return {\n    escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n    outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n  };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    elements,\n    dataRef\n  } = context;\n  const {\n    enabled = true,\n    escapeKey = true,\n    outsidePress: unstable_outsidePress = true,\n    outsidePressEvent = 'pointerdown',\n    referencePress = false,\n    referencePressEvent = 'pointerdown',\n    ancestorScroll = false,\n    bubbles,\n    capture\n  } = props;\n  const tree = useFloatingTree();\n  const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n  const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n  const insideReactTreeRef = React.useRef(false);\n  const endedOrStartedInsideRef = React.useRef(false);\n  const {\n    escapeKey: escapeKeyBubbles,\n    outsidePress: outsidePressBubbles\n  } = normalizeProp(bubbles);\n  const {\n    escapeKey: escapeKeyCapture,\n    outsidePress: outsidePressCapture\n  } = normalizeProp(capture);\n  const isComposingRef = React.useRef(false);\n  const closeOnEscapeKeyDown = useEffectEvent(event => {\n    var _dataRef$current$floa;\n    if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n      return;\n    }\n\n    // Wait until IME is settled. Pressing `Escape` while composing should\n    // close the compose menu, but not the floating element.\n    if (isComposingRef.current) {\n      return;\n    }\n    const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n    const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n    if (!escapeKeyBubbles) {\n      event.stopPropagation();\n      if (children.length > 0) {\n        let shouldDismiss = true;\n        children.forEach(child => {\n          var _child$context;\n          if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n            shouldDismiss = false;\n            return;\n          }\n        });\n        if (!shouldDismiss) {\n          return;\n        }\n      }\n    }\n    onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n  });\n  const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n    var _getTarget2;\n    const callback = () => {\n      var _getTarget;\n      closeOnEscapeKeyDown(event);\n      (_getTarget = getTarget(event)) == null || _getTarget.removeEventListener('keydown', callback);\n    };\n    (_getTarget2 = getTarget(event)) == null || _getTarget2.addEventListener('keydown', callback);\n  });\n  const closeOnPressOutside = useEffectEvent(event => {\n    var _dataRef$current$floa2;\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = insideReactTreeRef.current;\n    insideReactTreeRef.current = false;\n\n    // When click outside is lazy (`click` event), handle dragging.\n    // Don't close if:\n    // - The click started inside the floating element.\n    // - The click ended inside the floating element.\n    const endedOrStartedInside = endedOrStartedInsideRef.current;\n    endedOrStartedInsideRef.current = false;\n    if (outsidePressEvent === 'click' && endedOrStartedInside) {\n      return;\n    }\n    if (insideReactTree) {\n      return;\n    }\n    if (typeof outsidePress === 'function' && !outsidePress(event)) {\n      return;\n    }\n    const target = getTarget(event);\n    const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n    const markers = getDocument(elements.floating).querySelectorAll(inertSelector);\n    let targetRootAncestor = isElement(target) ? target : null;\n    while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n      const nextParent = getParentNode(targetRootAncestor);\n      if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n        break;\n      }\n      targetRootAncestor = nextParent;\n    }\n\n    // Check if the click occurred on a third-party element injected after the\n    // floating element rendered.\n    if (markers.length && isElement(target) && !isRootElement(target) &&\n    // Clicked on a direct ancestor (e.g. FloatingOverlay).\n    !contains(target, elements.floating) &&\n    // If the target root element contains none of the markers, then the\n    // element was injected after the floating element rendered.\n    Array.from(markers).every(marker => !contains(targetRootAncestor, marker))) {\n      return;\n    }\n\n    // Check if the click occurred on the scrollbar\n    if (isHTMLElement(target) && floating) {\n      // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n      // elements.\n      const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n      const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n      let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n      // In some browsers it is possible to change the <body> (or window)\n      // scrollbar to the left side, but is very rare and is difficult to\n      // check for. Plus, for modal dialogs with backdrops, it is more\n      // important that the backdrop is checked but not so much the window.\n      if (canScrollY) {\n        const isRTL = getComputedStyle(target).direction === 'rtl';\n        if (isRTL) {\n          xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n        }\n      }\n      if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n        return;\n      }\n    }\n    const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n    const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n      var _node$context;\n      return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n    });\n    if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n      return;\n    }\n    const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n    if (children.length > 0) {\n      let shouldDismiss = true;\n      children.forEach(child => {\n        var _child$context2;\n        if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n          shouldDismiss = false;\n          return;\n        }\n      });\n      if (!shouldDismiss) {\n        return;\n      }\n    }\n    onOpenChange(false, event, 'outside-press');\n  });\n  const closeOnPressOutsideCapture = useEffectEvent(event => {\n    var _getTarget4;\n    const callback = () => {\n      var _getTarget3;\n      closeOnPressOutside(event);\n      (_getTarget3 = getTarget(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n    };\n    (_getTarget4 = getTarget(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n  });\n  React.useEffect(() => {\n    if (!open || !enabled) {\n      return;\n    }\n    dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n    dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n    let compositionTimeout = -1;\n    function onScroll(event) {\n      onOpenChange(false, event, 'ancestor-scroll');\n    }\n    function handleCompositionStart() {\n      window.clearTimeout(compositionTimeout);\n      isComposingRef.current = true;\n    }\n    function handleCompositionEnd() {\n      // Safari fires `compositionend` before `keydown`, so we need to wait\n      // until the next tick to set `isComposing` to `false`.\n      // https://bugs.webkit.org/show_bug.cgi?id=165004\n      compositionTimeout = window.setTimeout(() => {\n        isComposingRef.current = false;\n      },\n      // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n      // Only apply to WebKit for the test to remain 0ms.\n      isWebKit() ? 5 : 0);\n    }\n    const doc = getDocument(elements.floating);\n    if (escapeKey) {\n      doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n      doc.addEventListener('compositionstart', handleCompositionStart);\n      doc.addEventListener('compositionend', handleCompositionEnd);\n    }\n    outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n    let ancestors = [];\n    if (ancestorScroll) {\n      if (isElement(elements.domReference)) {\n        ancestors = getOverflowAncestors(elements.domReference);\n      }\n      if (isElement(elements.floating)) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n      }\n      if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n      }\n    }\n\n    // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n    ancestors = ancestors.filter(ancestor => {\n      var _doc$defaultView;\n      return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n    });\n    ancestors.forEach(ancestor => {\n      ancestor.addEventListener('scroll', onScroll, {\n        passive: true\n      });\n    });\n    return () => {\n      if (escapeKey) {\n        doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n        doc.removeEventListener('compositionstart', handleCompositionStart);\n        doc.removeEventListener('compositionend', handleCompositionEnd);\n      }\n      outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n      ancestors.forEach(ancestor => {\n        ancestor.removeEventListener('scroll', onScroll);\n      });\n      window.clearTimeout(compositionTimeout);\n    };\n  }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n  React.useEffect(() => {\n    insideReactTreeRef.current = false;\n  }, [outsidePress, outsidePressEvent]);\n  const reference = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    [bubbleHandlerKeys[referencePressEvent]]: event => {\n      if (referencePress) {\n        onOpenChange(false, event.nativeEvent, 'reference-press');\n      }\n    }\n  }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n  const floating = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    onMouseDown() {\n      endedOrStartedInsideRef.current = true;\n    },\n    onMouseUp() {\n      endedOrStartedInsideRef.current = true;\n    },\n    [captureHandlerKeys[outsidePressEvent]]: () => {\n      insideReactTreeRef.current = true;\n    }\n  }), [closeOnEscapeKeyDown, outsidePressEvent]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n  const {\n    open = false,\n    onOpenChange: onOpenChangeProp,\n    elements: elementsProp\n  } = options;\n  const floatingId = useId();\n  const dataRef = React.useRef({});\n  const [events] = React.useState(() => createPubSub());\n  const nested = useFloatingParentNodeId() != null;\n  if (process.env.NODE_ENV !== \"production\") {\n    const optionDomReference = elementsProp.reference;\n    if (optionDomReference && !isElement(optionDomReference)) {\n      error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n    }\n  }\n  const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n  const onOpenChange = useEffectEvent((open, event, reason) => {\n    dataRef.current.openEvent = open ? event : undefined;\n    events.emit('openchange', {\n      open,\n      event,\n      reason,\n      nested\n    });\n    onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n  });\n  const refs = React.useMemo(() => ({\n    setPositionReference\n  }), []);\n  const elements = React.useMemo(() => ({\n    reference: positionReference || elementsProp.reference || null,\n    floating: elementsProp.floating || null,\n    domReference: elementsProp.reference\n  }), [positionReference, elementsProp.reference, elementsProp.floating]);\n  return React.useMemo(() => ({\n    dataRef,\n    open,\n    onOpenChange,\n    elements,\n    events,\n    floatingId,\n    refs\n  }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    nodeId\n  } = options;\n  const internalRootContext = useFloatingRootContext({\n    ...options,\n    elements: {\n      reference: null,\n      floating: null,\n      ...options.elements\n    }\n  });\n  const rootContext = options.rootContext || internalRootContext;\n  const computedElements = rootContext.elements;\n  const [_domReference, setDomReference] = React.useState(null);\n  const [positionReference, _setPositionReference] = React.useState(null);\n  const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n  const domReference = optionDomReference || _domReference;\n  const domReferenceRef = React.useRef(null);\n  const tree = useFloatingTree();\n  index(() => {\n    if (domReference) {\n      domReferenceRef.current = domReference;\n    }\n  }, [domReference]);\n  const position = useFloating$1({\n    ...options,\n    elements: {\n      ...computedElements,\n      ...(positionReference && {\n        reference: positionReference\n      })\n    }\n  });\n  const setPositionReference = React.useCallback(node => {\n    const computedPositionReference = isElement(node) ? {\n      getBoundingClientRect: () => node.getBoundingClientRect(),\n      contextElement: node\n    } : node;\n    // Store the positionReference in state if the DOM reference is specified externally via the\n    // `elements.reference` option. This ensures that it won't be overridden on future renders.\n    _setPositionReference(computedPositionReference);\n    position.refs.setReference(computedPositionReference);\n  }, [position.refs]);\n  const setReference = React.useCallback(node => {\n    if (isElement(node) || node === null) {\n      domReferenceRef.current = node;\n      setDomReference(node);\n    }\n\n    // Backwards-compatibility for passing a virtual element to `reference`\n    // after it has set the DOM reference.\n    if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n    // Don't allow setting virtual elements using the old technique back to\n    // `null` to support `positionReference` + an unstable `reference`\n    // callback ref.\n    node !== null && !isElement(node)) {\n      position.refs.setReference(node);\n    }\n  }, [position.refs]);\n  const refs = React.useMemo(() => ({\n    ...position.refs,\n    setReference,\n    setPositionReference,\n    domReference: domReferenceRef\n  }), [position.refs, setReference, setPositionReference]);\n  const elements = React.useMemo(() => ({\n    ...position.elements,\n    domReference: domReference\n  }), [position.elements, domReference]);\n  const context = React.useMemo(() => ({\n    ...position,\n    ...rootContext,\n    refs,\n    elements,\n    nodeId\n  }), [position, refs, elements, nodeId, rootContext]);\n  index(() => {\n    rootContext.dataRef.current.floatingContext = context;\n    const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n    if (node) {\n      node.context = context;\n    }\n  });\n  return React.useMemo(() => ({\n    ...position,\n    context,\n    refs,\n    elements\n  }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    events,\n    dataRef,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    visibleOnly = true\n  } = props;\n  const blockFocusRef = React.useRef(false);\n  const timeoutRef = React.useRef();\n  const keyboardModalityRef = React.useRef(true);\n  React.useEffect(() => {\n    if (!enabled) return;\n    const win = getWindow(elements.domReference);\n\n    // If the reference was focused and the user left the tab/window, and the\n    // floating element was not open, the focus should be blocked when they\n    // return to the tab/window.\n    function onBlur() {\n      if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {\n        blockFocusRef.current = true;\n      }\n    }\n    function onKeyDown() {\n      keyboardModalityRef.current = true;\n    }\n    win.addEventListener('blur', onBlur);\n    win.addEventListener('keydown', onKeyDown, true);\n    return () => {\n      win.removeEventListener('blur', onBlur);\n      win.removeEventListener('keydown', onKeyDown, true);\n    };\n  }, [elements.domReference, open, enabled]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        reason\n      } = _ref;\n      if (reason === 'reference-press' || reason === 'escape-key') {\n        blockFocusRef.current = true;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [events, enabled]);\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  const reference = React.useMemo(() => ({\n    onPointerDown(event) {\n      if (isVirtualPointerEvent(event.nativeEvent)) return;\n      keyboardModalityRef.current = false;\n    },\n    onMouseLeave() {\n      blockFocusRef.current = false;\n    },\n    onFocus(event) {\n      if (blockFocusRef.current) return;\n      const target = getTarget(event.nativeEvent);\n      if (visibleOnly && isElement(target)) {\n        try {\n          // Mac Safari unreliably matches `:focus-visible` on the reference\n          // if focus was outside the page initially - use the fallback\n          // instead.\n          if (isSafari() && isMac()) throw Error();\n          if (!target.matches(':focus-visible')) return;\n        } catch (e) {\n          // Old browsers will throw an error when using `:focus-visible`.\n          if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n            return;\n          }\n        }\n      }\n      onOpenChange(true, event.nativeEvent, 'focus');\n    },\n    onBlur(event) {\n      blockFocusRef.current = false;\n      const relatedTarget = event.relatedTarget;\n      const nativeEvent = event.nativeEvent;\n\n      // Hit the non-modal focus management portal guard. Focus will be\n      // moved into the floating element immediately after.\n      const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n      // Wait for the window blur listener to fire.\n      timeoutRef.current = window.setTimeout(() => {\n        var _dataRef$current$floa;\n        const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n        // Focus left the page, keep it open.\n        if (!relatedTarget && activeEl === elements.domReference) return;\n\n        // When focusing the reference element (e.g. regular click), then\n        // clicking into the floating element, prevent it from hiding.\n        // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n        // We can not rely on relatedTarget to point to the correct element\n        // as it will only point to the shadow host of the newly focused element\n        // and not the element that actually has received focus if it is located\n        // inside a shadow root.\n        if (contains((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains(elements.domReference, activeEl) || movedToFocusGuard) {\n          return;\n        }\n        onOpenChange(false, nativeEvent, 'focus');\n      });\n    }\n  }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nfunction mergeProps(userProps, propsList, elementKey) {\n  const map = new Map();\n  const isItem = elementKey === 'item';\n  let domUserProps = userProps;\n  if (isItem && userProps) {\n    const {\n      [ACTIVE_KEY]: _,\n      [SELECTED_KEY]: __,\n      ...validProps\n    } = userProps;\n    domUserProps = validProps;\n  }\n  return {\n    ...(elementKey === 'floating' && {\n      tabIndex: -1,\n      [FOCUSABLE_ATTRIBUTE]: ''\n    }),\n    ...domUserProps,\n    ...propsList.map(value => {\n      const propsOrGetProps = value ? value[elementKey] : null;\n      if (typeof propsOrGetProps === 'function') {\n        return userProps ? propsOrGetProps(userProps) : null;\n      }\n      return propsOrGetProps;\n    }).concat(userProps).reduce((acc, props) => {\n      if (!props) {\n        return acc;\n      }\n      Object.entries(props).forEach(_ref => {\n        let [key, value] = _ref;\n        if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n          return;\n        }\n        if (key.indexOf('on') === 0) {\n          if (!map.has(key)) {\n            map.set(key, []);\n          }\n          if (typeof value === 'function') {\n            var _map$get;\n            (_map$get = map.get(key)) == null || _map$get.push(value);\n            acc[key] = function () {\n              var _map$get2;\n              for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n                args[_key] = arguments[_key];\n              }\n              return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n            };\n          }\n        } else {\n          acc[key] = value;\n        }\n      });\n      return acc;\n    }, {})\n  };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n  if (propsList === void 0) {\n    propsList = [];\n  }\n  const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n  const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n  const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n  const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  referenceDeps);\n  const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  floatingDeps);\n  const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  itemDeps);\n  return React.useMemo(() => ({\n    getReferenceProps,\n    getFloatingProps,\n    getItemProps\n  }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\nfunction doSwitch(orientation, vertical, horizontal) {\n  switch (orientation) {\n    case 'vertical':\n      return vertical;\n    case 'horizontal':\n      return horizontal;\n    default:\n      return vertical || horizontal;\n  }\n}\nfunction isMainOrientationKey(key, orientation) {\n  const vertical = key === ARROW_UP || key === ARROW_DOWN;\n  const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n  const vertical = key === ARROW_DOWN;\n  const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n  const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  const horizontal = key === ARROW_DOWN;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n  const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n  const horizontal = key === ARROW_UP;\n  return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n  const {\n    open,\n    onOpenChange,\n    elements\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onNavigate: unstable_onNavigate = () => {},\n    enabled = true,\n    selectedIndex = null,\n    allowEscape = false,\n    loop = false,\n    nested = false,\n    rtl = false,\n    virtual = false,\n    focusItemOnOpen = 'auto',\n    focusItemOnHover = true,\n    openOnArrowKeyDown = true,\n    disabledIndices = undefined,\n    orientation = 'vertical',\n    cols = 1,\n    scrollItemIntoView = true,\n    virtualItemRef,\n    itemSizes,\n    dense = false\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (allowEscape) {\n      if (!loop) {\n        warn('`useListNavigation` looping must be enabled to allow escaping.');\n      }\n      if (!virtual) {\n        warn('`useListNavigation` must be virtual to allow escaping.');\n      }\n    }\n    if (orientation === 'vertical' && cols > 1) {\n      warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n    }\n  }\n  const floatingFocusElement = getFloatingFocusElement(elements.floating);\n  const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n  const parentId = useFloatingParentNodeId();\n  const tree = useFloatingTree();\n  const onNavigate = useEffectEvent(unstable_onNavigate);\n  const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n  const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n  const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n  const keyRef = React.useRef(null);\n  const isPointerModalityRef = React.useRef(true);\n  const previousOnNavigateRef = React.useRef(onNavigate);\n  const previousMountedRef = React.useRef(!!elements.floating);\n  const previousOpenRef = React.useRef(open);\n  const forceSyncFocus = React.useRef(false);\n  const forceScrollIntoViewRef = React.useRef(false);\n  const disabledIndicesRef = useLatestRef(disabledIndices);\n  const latestOpenRef = useLatestRef(open);\n  const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n  const selectedIndexRef = useLatestRef(selectedIndex);\n  const [activeId, setActiveId] = React.useState();\n  const [virtualId, setVirtualId] = React.useState();\n  const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n    if (forceScrollIntoView === void 0) {\n      forceScrollIntoView = false;\n    }\n    function runFocus(item) {\n      if (virtual) {\n        setActiveId(item.id);\n        tree == null || tree.events.emit('virtualfocus', item);\n        if (virtualItemRef) {\n          virtualItemRef.current = item;\n        }\n      } else {\n        enqueueFocus(item, {\n          preventScroll: true,\n          // Mac Safari does not move the virtual cursor unless the focus call\n          // is sync. However, for the very first focus call, we need to wait\n          // for the position to be ready in order to prevent unwanted\n          // scrolling. This means the virtual cursor will not move to the first\n          // item when first opening the floating element, but will on\n          // subsequent calls. `preventScroll` is supported in modern Safari,\n          // so we can use that instead.\n          // iOS Safari must be async or the first item will not be focused.\n          sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n        });\n      }\n    }\n    const initialItem = listRef.current[indexRef.current];\n    if (initialItem) {\n      runFocus(initialItem);\n    }\n    requestAnimationFrame(() => {\n      const waitedItem = listRef.current[indexRef.current] || initialItem;\n      if (!waitedItem) return;\n      if (!initialItem) {\n        runFocus(waitedItem);\n      }\n      const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n      const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n      if (shouldScrollIntoView) {\n        // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n        // by all browsers.\n        waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n          block: 'nearest',\n          inline: 'nearest'\n        } : scrollIntoViewOptions);\n      }\n    });\n  });\n  index(() => {\n    document.createElement('div').focus({\n      get preventScroll() {\n        isPreventScrollSupported = true;\n        return false;\n      }\n    });\n  }, []);\n\n  // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n  // element. Also, reset `activeIndex` upon closing the floating element.\n  index(() => {\n    if (!enabled) return;\n    if (open && elements.floating) {\n      if (focusItemOnOpenRef.current && selectedIndex != null) {\n        // Regardless of the pointer modality, we want to ensure the selected\n        // item comes into view when the floating element is opened.\n        forceScrollIntoViewRef.current = true;\n        indexRef.current = selectedIndex;\n        onNavigate(selectedIndex);\n      }\n    } else if (previousMountedRef.current) {\n      // Since the user can specify `onNavigate` conditionally\n      // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n      // we store and call the previous function.\n      indexRef.current = -1;\n      previousOnNavigateRef.current(null);\n    }\n  }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n  // Sync `activeIndex` to be the focused item while the floating element is\n  // open.\n  index(() => {\n    if (!enabled) return;\n    if (open && elements.floating) {\n      if (activeIndex == null) {\n        forceSyncFocus.current = false;\n        if (selectedIndexRef.current != null) {\n          return;\n        }\n\n        // Reset while the floating element was open (e.g. the list changed).\n        if (previousMountedRef.current) {\n          indexRef.current = -1;\n          focusItem(listRef, indexRef);\n        }\n\n        // Initial sync.\n        if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n          let runs = 0;\n          const waitForListPopulated = () => {\n            if (listRef.current[0] == null) {\n              // Avoid letting the browser paint if possible on the first try,\n              // otherwise use rAF. Don't try more than twice, since something\n              // is wrong otherwise.\n              if (runs < 2) {\n                const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n                scheduler(waitForListPopulated);\n              }\n              runs++;\n            } else {\n              indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n              keyRef.current = null;\n              onNavigate(indexRef.current);\n            }\n          };\n          waitForListPopulated();\n        }\n      } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n        indexRef.current = activeIndex;\n        focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n        forceScrollIntoViewRef.current = false;\n      }\n    }\n  }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n  // Ensure the parent floating element has focus when a nested child closes\n  // to allow arrow key navigation to work after the pointer leaves the child.\n  index(() => {\n    var _nodes$find;\n    if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n      return;\n    }\n    const nodes = tree.nodesRef.current;\n    const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n    const activeEl = activeElement(getDocument(elements.floating));\n    const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n    if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n      parent.focus({\n        preventScroll: true\n      });\n    }\n  }, [enabled, elements.floating, tree, parentId, virtual]);\n  index(() => {\n    if (!enabled) return;\n    if (!tree) return;\n    if (!virtual) return;\n    if (parentId) return;\n    function handleVirtualFocus(item) {\n      setVirtualId(item.id);\n      if (virtualItemRef) {\n        virtualItemRef.current = item;\n      }\n    }\n    tree.events.on('virtualfocus', handleVirtualFocus);\n    return () => {\n      tree.events.off('virtualfocus', handleVirtualFocus);\n    };\n  }, [enabled, tree, virtual, parentId, virtualItemRef]);\n  index(() => {\n    previousOnNavigateRef.current = onNavigate;\n    previousMountedRef.current = !!elements.floating;\n  });\n  index(() => {\n    if (!open) {\n      keyRef.current = null;\n    }\n  }, [open]);\n  index(() => {\n    previousOpenRef.current = open;\n  }, [open]);\n  const hasActiveIndex = activeIndex != null;\n  const item = React.useMemo(() => {\n    function syncCurrentTarget(currentTarget) {\n      if (!open) return;\n      const index = listRef.current.indexOf(currentTarget);\n      if (index !== -1) {\n        onNavigate(index);\n      }\n    }\n    const props = {\n      onFocus(_ref) {\n        let {\n          currentTarget\n        } = _ref;\n        syncCurrentTarget(currentTarget);\n      },\n      onClick: _ref2 => {\n        let {\n          currentTarget\n        } = _ref2;\n        return currentTarget.focus({\n          preventScroll: true\n        });\n      },\n      // Safari\n      ...(focusItemOnHover && {\n        onMouseMove(_ref3) {\n          let {\n            currentTarget\n          } = _ref3;\n          syncCurrentTarget(currentTarget);\n        },\n        onPointerLeave(_ref4) {\n          let {\n            pointerType\n          } = _ref4;\n          if (!isPointerModalityRef.current || pointerType === 'touch') {\n            return;\n          }\n          indexRef.current = -1;\n          focusItem(listRef, indexRef);\n          onNavigate(null);\n          if (!virtual) {\n            enqueueFocus(floatingFocusElementRef.current, {\n              preventScroll: true\n            });\n          }\n        }\n      })\n    };\n    return props;\n  }, [open, floatingFocusElementRef, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n  const commonOnKeyDown = useEffectEvent(event => {\n    isPointerModalityRef.current = false;\n    forceSyncFocus.current = true;\n\n    // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n    // don't appear to suffer from this. `event.isComposing` is avoided due to\n    // Safari not supporting it properly (although it's not needed in the first\n    // place for Safari, just avoiding any possible issues).\n    if (event.which === 229) {\n      return;\n    }\n\n    // If the floating element is animating out, ignore navigation. Otherwise,\n    // the `activeIndex` gets set to 0 despite not being open so the next time\n    // the user ArrowDowns, the first item won't be focused.\n    if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n      return;\n    }\n    if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n      stopEvent(event);\n      onOpenChange(false, event.nativeEvent, 'list-navigation');\n      if (isHTMLElement(elements.domReference)) {\n        if (virtual) {\n          tree == null || tree.events.emit('virtualfocus', elements.domReference);\n        } else {\n          elements.domReference.focus();\n        }\n      }\n      return;\n    }\n    const currentIndex = indexRef.current;\n    const minIndex = getMinIndex(listRef, disabledIndices);\n    const maxIndex = getMaxIndex(listRef, disabledIndices);\n    if (!typeableComboboxReference) {\n      if (event.key === 'Home') {\n        stopEvent(event);\n        indexRef.current = minIndex;\n        onNavigate(indexRef.current);\n      }\n      if (event.key === 'End') {\n        stopEvent(event);\n        indexRef.current = maxIndex;\n        onNavigate(indexRef.current);\n      }\n    }\n\n    // Grid navigation.\n    if (cols > 1) {\n      const sizes = itemSizes || Array.from({\n        length: listRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = buildCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(listRef.current, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(listRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const index = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        rtl,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getCellIndices([...(disabledIndices || listRef.current.map((_, index) => isDisabled(listRef.current, index) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction\n        // we're moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n        stopEvent: true\n      })];\n      if (index != null) {\n        indexRef.current = index;\n        onNavigate(indexRef.current);\n      }\n      if (orientation === 'both') {\n        return;\n      }\n    }\n    if (isMainOrientationKey(event.key, orientation)) {\n      stopEvent(event);\n\n      // Reset the index if no item is focused.\n      if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n        indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n        onNavigate(indexRef.current);\n        return;\n      }\n      if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n        if (loop) {\n          indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          }));\n        }\n      } else {\n        if (loop) {\n          indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          }));\n        }\n      }\n      if (isIndexOutOfBounds(listRef, indexRef.current)) {\n        onNavigate(null);\n      } else {\n        onNavigate(indexRef.current);\n      }\n    }\n  });\n  const ariaActiveDescendantProp = React.useMemo(() => {\n    return virtual && open && hasActiveIndex && {\n      'aria-activedescendant': virtualId || activeId\n    };\n  }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n  const floating = React.useMemo(() => {\n    return {\n      'aria-orientation': orientation === 'both' ? undefined : orientation,\n      ...(!isTypeableCombobox(elements.domReference) && ariaActiveDescendantProp),\n      onKeyDown: commonOnKeyDown,\n      onPointerMove() {\n        isPointerModalityRef.current = true;\n      }\n    };\n  }, [ariaActiveDescendantProp, commonOnKeyDown, elements.domReference, orientation]);\n  const reference = React.useMemo(() => {\n    function checkVirtualMouse(event) {\n      if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    function checkVirtualPointer(event) {\n      // `pointerdown` fires first, reset the state then perform the checks.\n      focusItemOnOpenRef.current = focusItemOnOpen;\n      if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    return {\n      ...ariaActiveDescendantProp,\n      onKeyDown(event) {\n        isPointerModalityRef.current = false;\n        const isArrowKey = event.key.startsWith('Arrow');\n        const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n        const isMoveKey = isArrowKey || isHomeOrEndKey;\n        const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n        const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl);\n        const isMainKey = isMainOrientationKey(event.key, orientation);\n        const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n        if (virtual && open) {\n          const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n          const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n          if (isMoveKey && deepestNode && virtualItemRef) {\n            const eventObject = new KeyboardEvent('keydown', {\n              key: event.key,\n              bubbles: true\n            });\n            if (isCrossOpenKey || isCrossCloseKey) {\n              var _deepestNode$context, _deepestNode$context2;\n              const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n              const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n              if (dispatchItem) {\n                stopEvent(event);\n                dispatchItem.dispatchEvent(eventObject);\n                setVirtualId(undefined);\n              }\n            }\n            if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n              if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n                var _deepestNode$context$;\n                stopEvent(event);\n                (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n                return;\n              }\n            }\n          }\n          return commonOnKeyDown(event);\n        }\n\n        // If a floating element should not open on arrow key down, avoid\n        // setting `activeIndex` while it's closed.\n        if (!open && !openOnArrowKeyDown && isArrowKey) {\n          return;\n        }\n        if (isNavigationKey) {\n          keyRef.current = nested && isMainKey ? null : event.key;\n        }\n        if (nested) {\n          if (isCrossOpenKey) {\n            stopEvent(event);\n            if (open) {\n              indexRef.current = getMinIndex(listRef, disabledIndicesRef.current);\n              onNavigate(indexRef.current);\n            } else {\n              onOpenChange(true, event.nativeEvent, 'list-navigation');\n            }\n          }\n          return;\n        }\n        if (isMainKey) {\n          if (selectedIndex != null) {\n            indexRef.current = selectedIndex;\n          }\n          stopEvent(event);\n          if (!open && openOnArrowKeyDown) {\n            onOpenChange(true, event.nativeEvent, 'list-navigation');\n          } else {\n            commonOnKeyDown(event);\n          }\n          if (open) {\n            onNavigate(indexRef.current);\n          }\n        }\n      },\n      onFocus() {\n        if (open && !virtual) {\n          onNavigate(null);\n        }\n      },\n      onPointerDown: checkVirtualPointer,\n      onMouseDown: checkVirtualMouse,\n      onClick: checkVirtualMouse\n    };\n  }, [activeId, ariaActiveDescendantProp, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n  var _componentRoleToAriaR;\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    floatingId\n  } = context;\n  const {\n    enabled = true,\n    role = 'dialog'\n  } = props;\n  const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n  const referenceId = useId();\n  const parentId = useFloatingParentNodeId();\n  const isNested = parentId != null;\n  const reference = React.useMemo(() => {\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return {\n        [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n      };\n    }\n    return {\n      'aria-expanded': open ? 'true' : 'false',\n      'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n      'aria-controls': open ? floatingId : undefined,\n      ...(ariaRole === 'listbox' && {\n        role: 'combobox'\n      }),\n      ...(ariaRole === 'menu' && {\n        id: referenceId\n      }),\n      ...(ariaRole === 'menu' && isNested && {\n        role: 'menuitem'\n      }),\n      ...(role === 'select' && {\n        'aria-autocomplete': 'none'\n      }),\n      ...(role === 'combobox' && {\n        'aria-autocomplete': 'list'\n      })\n    };\n  }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n  const floating = React.useMemo(() => {\n    const floatingProps = {\n      id: floatingId,\n      ...(ariaRole && {\n        role: ariaRole\n      })\n    };\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return floatingProps;\n    }\n    return {\n      ...floatingProps,\n      ...(ariaRole === 'menu' && {\n        'aria-labelledby': referenceId\n      })\n    };\n  }, [ariaRole, floatingId, referenceId, role]);\n  const item = React.useCallback(_ref => {\n    let {\n      active,\n      selected\n    } = _ref;\n    const commonProps = {\n      role: 'option',\n      ...(active && {\n        id: floatingId + \"-option\"\n      })\n    };\n\n    // For `menu`, we are unable to tell if the item is a `menuitemradio`\n    // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n    // avoid defaulting to `menuitem` as it may overwrite custom role props.\n    switch (role) {\n      case 'select':\n        return {\n          ...commonProps,\n          'aria-selected': active && selected\n        };\n      case 'combobox':\n        {\n          return {\n            ...commonProps,\n            ...(active && {\n              'aria-selected': true\n            })\n          };\n        }\n    }\n    return {};\n  }, [floatingId, role]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n  return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n  const [isMounted, setIsMounted] = React.useState(open);\n  if (open && !isMounted) {\n    setIsMounted(true);\n  }\n  React.useEffect(() => {\n    if (!open && isMounted) {\n      const timeout = setTimeout(() => setIsMounted(false), durationMs);\n      return () => clearTimeout(timeout);\n    }\n  }, [open, isMounted, durationMs]);\n  return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    elements: {\n      floating\n    }\n  } = context;\n  const {\n    duration = 250\n  } = props;\n  const isNumberDuration = typeof duration === 'number';\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [status, setStatus] = React.useState('unmounted');\n  const isMounted = useDelayUnmount(open, closeDuration);\n  if (!isMounted && status === 'close') {\n    setStatus('unmounted');\n  }\n  index(() => {\n    if (!floating) return;\n    if (open) {\n      setStatus('initial');\n      const frame = requestAnimationFrame(() => {\n        setStatus('open');\n      });\n      return () => {\n        cancelAnimationFrame(frame);\n      };\n    }\n    setStatus('close');\n  }, [open, floating]);\n  return {\n    isMounted,\n    status\n  };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    initial: unstable_initial = {\n      opacity: 0\n    },\n    open: unstable_open,\n    close: unstable_close,\n    common: unstable_common,\n    duration = 250\n  } = props;\n  const placement = context.placement;\n  const side = placement.split('-')[0];\n  const fnArgs = React.useMemo(() => ({\n    side,\n    placement\n  }), [side, placement]);\n  const isNumberDuration = typeof duration === 'number';\n  const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [styles, setStyles] = React.useState(() => ({\n    ...execWithArgsOrReturn(unstable_common, fnArgs),\n    ...execWithArgsOrReturn(unstable_initial, fnArgs)\n  }));\n  const {\n    isMounted,\n    status\n  } = useTransitionStatus(context, {\n    duration\n  });\n  const initialRef = useLatestRef(unstable_initial);\n  const openRef = useLatestRef(unstable_open);\n  const closeRef = useLatestRef(unstable_close);\n  const commonRef = useLatestRef(unstable_common);\n  index(() => {\n    const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n    const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n    const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n    const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n      acc[key] = '';\n      return acc;\n    }, {});\n    if (status === 'initial') {\n      setStyles(styles => ({\n        transitionProperty: styles.transitionProperty,\n        ...commonStyles,\n        ...initialStyles\n      }));\n    }\n    if (status === 'open') {\n      setStyles({\n        transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: openDuration + \"ms\",\n        ...commonStyles,\n        ...openStyles\n      });\n    }\n    if (status === 'close') {\n      const styles = closeStyles || initialStyles;\n      setStyles({\n        transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: closeDuration + \"ms\",\n        ...commonStyles,\n        ...styles\n      });\n    }\n  }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n  return {\n    isMounted,\n    styles\n  };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n  var _ref;\n  const {\n    open,\n    dataRef\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onMatch: unstable_onMatch,\n    onTypingChange: unstable_onTypingChange,\n    enabled = true,\n    findMatch = null,\n    resetMs = 750,\n    ignoreKeys = [],\n    selectedIndex = null\n  } = props;\n  const timeoutIdRef = React.useRef();\n  const stringRef = React.useRef('');\n  const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n  const matchIndexRef = React.useRef(null);\n  const onMatch = useEffectEvent(unstable_onMatch);\n  const onTypingChange = useEffectEvent(unstable_onTypingChange);\n  const findMatchRef = useLatestRef(findMatch);\n  const ignoreKeysRef = useLatestRef(ignoreKeys);\n  index(() => {\n    if (open) {\n      clearTimeout(timeoutIdRef.current);\n      matchIndexRef.current = null;\n      stringRef.current = '';\n    }\n  }, [open]);\n  index(() => {\n    // Sync arrow key navigation but not typeahead navigation.\n    if (open && stringRef.current === '') {\n      var _ref2;\n      prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n    }\n  }, [open, selectedIndex, activeIndex]);\n  const setTypingChange = useEffectEvent(value => {\n    if (value) {\n      if (!dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    } else {\n      if (dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    }\n  });\n  const onKeyDown = useEffectEvent(event => {\n    function getMatchingIndex(list, orderedList, string) {\n      const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n      return str ? list.indexOf(str) : -1;\n    }\n    const listContent = listRef.current;\n    if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n      if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n        setTypingChange(false);\n      } else if (event.key === ' ') {\n        stopEvent(event);\n      }\n    }\n    if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n    // Character key.\n    event.key.length !== 1 ||\n    // Modifier key.\n    event.ctrlKey || event.metaKey || event.altKey) {\n      return;\n    }\n    if (open && event.key !== ' ') {\n      stopEvent(event);\n      setTypingChange(true);\n    }\n\n    // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n    // allow it in this case, too.\n    const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n      var _text$, _text$2;\n      return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n    });\n\n    // Allows the user to cycle through items that start with the same letter\n    // in rapid succession.\n    if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n    }\n    stringRef.current += event.key;\n    clearTimeout(timeoutIdRef.current);\n    timeoutIdRef.current = setTimeout(() => {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n      setTypingChange(false);\n    }, resetMs);\n    const prevIndex = prevIndexRef.current;\n    const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n    if (index !== -1) {\n      onMatch(index);\n      matchIndexRef.current = index;\n    } else if (event.key !== ' ') {\n      stringRef.current = '';\n      setTypingChange(false);\n    }\n  });\n  const reference = React.useMemo(() => ({\n    onKeyDown\n  }), [onKeyDown]);\n  const floating = React.useMemo(() => {\n    return {\n      onKeyDown,\n      onKeyUp(event) {\n        if (event.key === ' ') {\n          setTypingChange(false);\n        }\n      }\n    };\n  }, [onKeyDown, setTypingChange]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n  return {\n    ...state,\n    rects: {\n      ...state.rects,\n      floating: {\n        ...state.rects.floating,\n        height\n      }\n    }\n  };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n  name: 'inner',\n  options: props,\n  async fn(state) {\n    const {\n      listRef,\n      overflowRef,\n      onFallbackChange,\n      offset: innerOffset = 0,\n      index = 0,\n      minItemsVisible = 4,\n      referenceOverflowThreshold = 0,\n      scrollRef,\n      ...detectOverflowOptions\n    } = evaluate(props, state);\n    const {\n      rects,\n      elements: {\n        floating\n      }\n    } = state;\n    const item = listRef.current[index];\n    const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n    // Valid combinations:\n    // 1. Floating element is the scrollRef and has a border (default)\n    // 2. Floating element is not the scrollRef, floating element has a border\n    // 3. Floating element is not the scrollRef, scrollRef has a border\n    // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n    // allowed as VoiceOver doesn't work.\n    const clientTop = floating.clientTop || scrollEl.clientTop;\n    const floatingIsBordered = floating.clientTop !== 0;\n    const scrollElIsBordered = scrollEl.clientTop !== 0;\n    const floatingIsScrollEl = floating === scrollEl;\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!state.placement.startsWith('bottom')) {\n        warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n      }\n    }\n    if (!item) {\n      return {};\n    }\n    const nextArgs = {\n      ...state,\n      ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n    };\n    const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    const refOverflow = await detectOverflow(nextArgs, {\n      ...detectOverflowOptions,\n      elementContext: 'reference'\n    });\n    const diffY = max(0, overflow.top);\n    const nextY = nextArgs.y + diffY;\n    const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n    const rounder = isScrollable ? v => v : round;\n    const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n    scrollEl.style.maxHeight = maxHeight + \"px\";\n    scrollEl.scrollTop = diffY;\n\n    // There is not enough space, fallback to standard anchored positioning\n    if (onFallbackChange) {\n      const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n      ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n    }\n    if (overflowRef) {\n      overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n        ...nextArgs,\n        y: nextY\n      }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    }\n    return {\n      y: nextY\n    };\n  }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n  const {\n    open,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    overflowRef,\n    scrollRef,\n    onChange: unstable_onChange\n  } = props;\n  const onChange = useEffectEvent(unstable_onChange);\n  const controlledScrollingRef = React.useRef(false);\n  const prevScrollTopRef = React.useRef(null);\n  const initialOverflowRef = React.useRef(null);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onWheel(e) {\n      if (e.ctrlKey || !el || overflowRef.current == null) {\n        return;\n      }\n      const dY = e.deltaY;\n      const isAtTop = overflowRef.current.top >= -0.5;\n      const isAtBottom = overflowRef.current.bottom >= -0.5;\n      const remainingScroll = el.scrollHeight - el.clientHeight;\n      const sign = dY < 0 ? -1 : 1;\n      const method = dY < 0 ? 'max' : 'min';\n      if (el.scrollHeight <= el.clientHeight) {\n        return;\n      }\n      if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n        e.preventDefault();\n        ReactDOM.flushSync(() => {\n          onChange(d => d + Math[method](dY, remainingScroll * sign));\n        });\n      } else if (/firefox/i.test(getUserAgent())) {\n        // Needed to propagate scrolling during momentum scrolling phase once\n        // it gets limited by the boundary. UX improvement, not critical.\n        el.scrollTop += dY;\n      }\n    }\n    const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n    if (open && el) {\n      el.addEventListener('wheel', onWheel);\n\n      // Wait for the position to be ready.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n        if (overflowRef.current != null) {\n          initialOverflowRef.current = {\n            ...overflowRef.current\n          };\n        }\n      });\n      return () => {\n        prevScrollTopRef.current = null;\n        initialOverflowRef.current = null;\n        el.removeEventListener('wheel', onWheel);\n      };\n    }\n  }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n  const floating = React.useMemo(() => ({\n    onKeyDown() {\n      controlledScrollingRef.current = true;\n    },\n    onWheel() {\n      controlledScrollingRef.current = false;\n    },\n    onPointerMove() {\n      controlledScrollingRef.current = false;\n    },\n    onScroll() {\n      const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n      if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n        return;\n      }\n      if (prevScrollTopRef.current !== null) {\n        const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n        if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n          ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n        }\n      }\n\n      // [Firefox] Wait for the height change to have been applied.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n      });\n    }\n  }), [elements.floating, onChange, overflowRef, scrollRef]);\n  return React.useMemo(() => enabled ? {\n    floating\n  } : {}, [enabled, floating]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n  const [x, y] = point;\n  let isInside = false;\n  const length = polygon.length;\n  for (let i = 0, j = length - 1; i < length; j = i++) {\n    const [xi, yi] = polygon[i] || [0, 0];\n    const [xj, yj] = polygon[j] || [0, 0];\n    const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) {\n      isInside = !isInside;\n    }\n  }\n  return isInside;\n}\nfunction isInside(point, rect) {\n  return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    buffer = 0.5,\n    blockPointerEvents = false,\n    requireIntent = true\n  } = options;\n  let timeoutId;\n  let hasLanded = false;\n  let lastX = null;\n  let lastY = null;\n  let lastCursorTime = performance.now();\n  function getCursorSpeed(x, y) {\n    const currentTime = performance.now();\n    const elapsedTime = currentTime - lastCursorTime;\n    if (lastX === null || lastY === null || elapsedTime === 0) {\n      lastX = x;\n      lastY = y;\n      lastCursorTime = currentTime;\n      return null;\n    }\n    const deltaX = x - lastX;\n    const deltaY = y - lastY;\n    const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n    const speed = distance / elapsedTime; // px / ms\n\n    lastX = x;\n    lastY = y;\n    lastCursorTime = currentTime;\n    return speed;\n  }\n  const fn = _ref => {\n    let {\n      x,\n      y,\n      placement,\n      elements,\n      onClose,\n      nodeId,\n      tree\n    } = _ref;\n    return function onMouseMove(event) {\n      function close() {\n        clearTimeout(timeoutId);\n        onClose();\n      }\n      clearTimeout(timeoutId);\n      if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n        return;\n      }\n      const {\n        clientX,\n        clientY\n      } = event;\n      const clientPoint = [clientX, clientY];\n      const target = getTarget(event);\n      const isLeave = event.type === 'mouseleave';\n      const isOverFloatingEl = contains(elements.floating, target);\n      const isOverReferenceEl = contains(elements.domReference, target);\n      const refRect = elements.domReference.getBoundingClientRect();\n      const rect = elements.floating.getBoundingClientRect();\n      const side = placement.split('-')[0];\n      const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n      const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n      const isOverReferenceRect = isInside(clientPoint, refRect);\n      const isFloatingWider = rect.width > refRect.width;\n      const isFloatingTaller = rect.height > refRect.height;\n      const left = (isFloatingWider ? refRect : rect).left;\n      const right = (isFloatingWider ? refRect : rect).right;\n      const top = (isFloatingTaller ? refRect : rect).top;\n      const bottom = (isFloatingTaller ? refRect : rect).bottom;\n      if (isOverFloatingEl) {\n        hasLanded = true;\n        if (!isLeave) {\n          return;\n        }\n      }\n      if (isOverReferenceEl) {\n        hasLanded = false;\n      }\n      if (isOverReferenceEl && !isLeave) {\n        hasLanded = true;\n        return;\n      }\n\n      // Prevent overlapping floating element from being stuck in an open-close\n      // loop: https://github.com/floating-ui/floating-ui/issues/1910\n      if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n        return;\n      }\n\n      // If any nested child is open, abort.\n      if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n        let {\n          context\n        } = _ref2;\n        return context == null ? void 0 : context.open;\n      })) {\n        return;\n      }\n\n      // If the pointer is leaving from the opposite side, the \"buffer\" logic\n      // creates a point where the floating element remains open, but should be\n      // ignored.\n      // A constant of 1 handles floating point rounding errors.\n      if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n        return close();\n      }\n\n      // Ignore when the cursor is within the rectangular trough between the\n      // two elements. Since the triangle is created from the cursor point,\n      // which can start beyond the ref element's edge, traversing back and\n      // forth from the ref to the floating element can cause it to close. This\n      // ensures it always remains open in that case.\n      let rectPoly = [];\n      switch (side) {\n        case 'top':\n          rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n          break;\n        case 'bottom':\n          rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n          break;\n        case 'left':\n          rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n          break;\n        case 'right':\n          rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n          break;\n      }\n      function getPolygon(_ref3) {\n        let [x, y] = _ref3;\n        switch (side) {\n          case 'top':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'bottom':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'left':\n            {\n              const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n              return [...commonPoints, cursorPointOne, cursorPointTwo];\n            }\n          case 'right':\n            {\n              const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n        }\n      }\n      if (isPointInPolygon([clientX, clientY], rectPoly)) {\n        return;\n      }\n      if (hasLanded && !isOverReferenceRect) {\n        return close();\n      }\n      if (!isLeave && requireIntent) {\n        const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n        const cursorSpeedThreshold = 0.1;\n        if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n          return close();\n        }\n      }\n      if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n        close();\n      } else if (!hasLanded && requireIntent) {\n        timeoutId = window.setTimeout(close, 40);\n      }\n    };\n  };\n  fn.__options = {\n    blockPointerEvents\n  };\n  return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import{autoUpdate as Z,flip as ee,inner as te,offset as ne,shift as le,size as re,useFloating as oe,useInnerOffset as ie,useInteractions as se}from\"@floating-ui/react\";import*as j from\"react\";import{createContext as _,useCallback as ae,useContext as R,useMemo as M,useRef as ue,useState as A}from\"react\";import{useDisposables as fe}from'../hooks/use-disposables.js';import{useEvent as z}from'../hooks/use-event.js';import{useIsoMorphicEffect as C}from'../hooks/use-iso-morphic-effect.js';let y=_({styles:void 0,setReference:()=>{},setFloating:()=>{},getReferenceProps:()=>({}),getFloatingProps:()=>({}),slot:{}});y.displayName=\"FloatingContext\";let H=_(null);H.displayName=\"PlacementContext\";function xe(e){return M(()=>e?typeof e==\"string\"?{to:e}:e:null,[e])}function ye(){return R(y).setReference}function Fe(){return R(y).getReferenceProps}function be(){let{getFloatingProps:e,slot:t}=R(y);return ae((...n)=>Object.assign({},e(...n),{\"data-anchor\":t.anchor}),[e,t])}function Re(e=null){e===!1&&(e=null),typeof e==\"string\"&&(e={to:e});let t=R(H),n=M(()=>e,[JSON.stringify(e,(r,o)=>{var u;return(u=o==null?void 0:o.outerHTML)!=null?u:o})]);C(()=>{t==null||t(n!=null?n:null)},[t,n]);let l=R(y);return M(()=>[l.setFloating,e?l.styles:{}],[l.setFloating,e,l.styles])}let q=4;function Me({children:e,enabled:t=!0}){let[n,l]=A(null),[r,o]=A(0),u=ue(null),[f,s]=A(null);pe(f);let i=t&&n!==null&&f!==null,{to:F=\"bottom\",gap:E=0,offset:v=0,padding:c=0,inner:P}=ce(n,f),[a,p=\"center\"]=F.split(\" \");C(()=>{i&&o(0)},[i]);let{refs:b,floatingStyles:w,context:g}=oe({open:i,placement:a===\"selection\"?p===\"center\"?\"bottom\":`bottom-${p}`:p===\"center\"?`${a}`:`${a}-${p}`,strategy:\"absolute\",transform:!1,middleware:[ne({mainAxis:a===\"selection\"?0:E,crossAxis:v}),le({padding:c}),a!==\"selection\"&&ee({padding:c}),a===\"selection\"&&P?te({...P,padding:c,overflowRef:u,offset:r,minItemsVisible:q,referenceOverflowThreshold:c,onFallbackChange(h){var O,W;if(!h)return;let d=g.elements.floating;if(!d)return;let T=parseFloat(getComputedStyle(d).scrollPaddingBottom)||0,$=Math.min(q,d.childElementCount),L=0,N=0;for(let m of(W=(O=g.elements.floating)==null?void 0:O.childNodes)!=null?W:[])if(m instanceof HTMLElement){let x=m.offsetTop,k=x+m.clientHeight+T,S=d.scrollTop,U=S+d.clientHeight;if(x>=S&&k<=U)$--;else{N=Math.max(0,Math.min(k,U)-Math.max(x,S)),L=m.clientHeight;break}}$>=1&&o(m=>{let x=L*$-N+T;return m>=x?m:x})}}):null,re({padding:c,apply({availableWidth:h,availableHeight:d,elements:T}){Object.assign(T.floating.style,{overflow:\"auto\",maxWidth:`${h}px`,maxHeight:`min(var(--anchor-max-height, 100vh), ${d}px)`})}})].filter(Boolean),whileElementsMounted:Z}),[I=a,B=p]=g.placement.split(\"-\");a===\"selection\"&&(I=\"selection\");let G=M(()=>({anchor:[I,B].filter(Boolean).join(\" \")}),[I,B]),K=ie(g,{overflowRef:u,onChange:o}),{getReferenceProps:Q,getFloatingProps:X}=se([K]),Y=z(h=>{s(h),b.setFloating(h)});return j.createElement(H.Provider,{value:l},j.createElement(y.Provider,{value:{setFloating:Y,setReference:b.setReference,styles:w,getReferenceProps:Q,getFloatingProps:X,slot:G}},e))}function pe(e){C(()=>{if(!e)return;let t=new MutationObserver(()=>{let n=window.getComputedStyle(e).maxHeight,l=parseFloat(n);if(isNaN(l))return;let r=parseInt(n);isNaN(r)||l!==r&&(e.style.maxHeight=`${Math.ceil(l)}px`)});return t.observe(e,{attributes:!0,attributeFilter:[\"style\"]}),()=>{t.disconnect()}},[e])}function ce(e,t){var o,u,f;let n=V((o=e==null?void 0:e.gap)!=null?o:\"var(--anchor-gap, 0)\",t),l=V((u=e==null?void 0:e.offset)!=null?u:\"var(--anchor-offset, 0)\",t),r=V((f=e==null?void 0:e.padding)!=null?f:\"var(--anchor-padding, 0)\",t);return{...e,gap:n,offset:l,padding:r}}function V(e,t,n=void 0){let l=fe(),r=z((s,i)=>{if(s==null)return[n,null];if(typeof s==\"number\")return[s,null];if(typeof s==\"string\"){if(!i)return[n,null];let F=J(s,i);return[F,E=>{let v=D(s);{let c=v.map(P=>window.getComputedStyle(i).getPropertyValue(P));l.requestAnimationFrame(function P(){l.nextFrame(P);let a=!1;for(let[b,w]of v.entries()){let g=window.getComputedStyle(i).getPropertyValue(w);if(c[b]!==g){c[b]=g,a=!0;break}}if(!a)return;let p=J(s,i);F!==p&&(E(p),F=p)})}return l.dispose}]}return[n,null]}),o=M(()=>r(e,t)[0],[e,t]),[u=o,f]=A();return C(()=>{let[s,i]=r(e,t);if(f(s),!!i)return i(f)},[e,t]),u}function D(e){let t=/var\\((.*)\\)/.exec(e);if(t){let n=t[1].indexOf(\",\");if(n===-1)return[t[1]];let l=t[1].slice(0,n).trim(),r=t[1].slice(n+1).trim();return r?[l,...D(r)]:[l]}return[]}function J(e,t){let n=document.createElement(\"div\");t.appendChild(n),n.style.setProperty(\"margin-top\",\"0px\",\"important\"),n.style.setProperty(\"margin-top\",e,\"important\");let l=parseFloat(window.getComputedStyle(n).marginTop)||0;return t.removeChild(n),l}export{Me as FloatingProvider,Re as useFloatingPanel,be as useFloatingPanelProps,ye as useFloatingReference,Fe as useFloatingReferenceProps,xe as useResolvedAnchor};\n","import r,{useState as u}from\"react\";function f({children:o,freeze:e}){let n=l(e,o);return r.createElement(r.Fragment,null,n)}function l(o,e){let[n,t]=u(e);return!o&&n!==e&&t(e),o?n:e}export{f as Frozen,l as useFrozenData};\n","import r,{createContext as l,useContext as d}from\"react\";let n=l(null);n.displayName=\"OpenClosedContext\";var i=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(i||{});function u(){return d(n)}function c({value:o,children:t}){return r.createElement(n.Provider,{value:o},t)}function s({children:o}){return r.createElement(n.Provider,{value:null},o)}export{c as OpenClosedProvider,s as ResetOpenClosedProvider,i as State,u as useOpenClosed};\n","function t(n){function e(){document.readyState!==\"loading\"&&(n(),document.removeEventListener(\"DOMContentLoaded\",e))}typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"DOMContentLoaded\",e),e())}export{t as onDocumentReady};\n","import{onDocumentReady as d}from'./document-ready.js';import{focusableSelector as u}from'./focus-management.js';let r=[];d(()=>{function e(t){if(!(t.target instanceof HTMLElement)||t.target===document.body||r[0]===t.target)return;let n=t.target;n=n.closest(u),r.unshift(n!=null?n:t.target),r=r.filter(o=>o!=null&&o.isConnected),r.splice(10)}window.addEventListener(\"click\",e,{capture:!0}),window.addEventListener(\"mousedown\",e,{capture:!0}),window.addEventListener(\"focus\",e,{capture:!0}),document.body.addEventListener(\"click\",e,{capture:!0}),document.body.addEventListener(\"mousedown\",e,{capture:!0}),document.body.addEventListener(\"focus\",e,{capture:!0})});export{r as history};\n","function r(n){let e=n.parentElement,l=null;for(;e&&!(e instanceof HTMLFieldSetElement);)e instanceof HTMLLegendElement&&(l=e),e=e.parentElement;let t=(e==null?void 0:e.getAttribute(\"disabled\"))===\"\";return t&&i(l)?!1:t}function i(n){if(!n)return!1;let e=n.previousElementSibling;for(;e!==null;){if(e instanceof HTMLLegendElement)return!1;e=e.previousElementSibling}return!0}export{r as isDisabledReactIssue7711};\n","function u(l){throw new Error(\"Unexpected object: \"+l)}var c=(i=>(i[i.First=0]=\"First\",i[i.Previous=1]=\"Previous\",i[i.Next=2]=\"Next\",i[i.Last=3]=\"Last\",i[i.Specific=4]=\"Specific\",i[i.Nothing=5]=\"Nothing\",i))(c||{});function f(l,n){let t=n.resolveItems();if(t.length<=0)return null;let r=n.resolveActiveIndex(),s=r!=null?r:-1;switch(l.focus){case 0:{for(let e=0;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 1:{s===-1&&(s=t.length);for(let e=s-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 2:{for(let e=s+1;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 3:{for(let e=t.length-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 4:{for(let e=0;e<t.length;++e)if(n.resolveId(t[e],e,t)===l.id)return e;return r}case 5:return null;default:u(l)}}export{c as Focus,f as calculateActiveIndex};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","var g=(f=>(f[f.Left=0]=\"Left\",f[f.Right=2]=\"Right\",f))(g||{});export{g as MouseButton};\n","import{useEffect as u,useRef as n}from\"react\";import{microTask as o}from'../utils/micro-task.js';import{useEvent as f}from'./use-event.js';function c(t){let r=f(t),e=n(!1);u(()=>(e.current=!1,()=>{e.current=!0,o(()=>{e.current&&r()})}),[r])}export{c as useOnUnmount};\n","import*as t from\"react\";import{env as f}from'../utils/env.js';function s(){let r=typeof document==\"undefined\";return\"useSyncExternalStore\"in t?(o=>o.useSyncExternalStore)(t)(()=>()=>{},()=>!1,()=>!r):!1}function l(){let r=s(),[e,n]=t.useState(f.isHandoffComplete);return e&&f.isHandoffComplete===!1&&n(!1),t.useEffect(()=>{e!==!0&&n(!0)},[e]),t.useEffect(()=>f.handoff(),[]),r?!1:e}export{l as useServerHandoffComplete};\n","import t,{createContext as r,useContext as c}from\"react\";let e=r(!1);function a(){return c(e)}function l(o){return t.createElement(e.Provider,{value:o.force},o.children)}export{l as ForcePortalRoot,a as usePortalRoot};\n","\"use client\";import f,{Fragment as R,createContext as g,useContext as T,useEffect as E,useMemo as c,useRef as A,useState as G}from\"react\";import{createPortal as O}from\"react-dom\";import{useEvent as L}from'../../hooks/use-event.js';import{useIsoMorphicEffect as x}from'../../hooks/use-iso-morphic-effect.js';import{useOnUnmount as h}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as _}from'../../hooks/use-owner.js';import{useServerHandoffComplete as F}from'../../hooks/use-server-handoff-complete.js';import{optionalRef as U,useSyncRefs as P}from'../../hooks/use-sync-refs.js';import{usePortalRoot as D}from'../../internal/portal-force-root.js';import{env as C}from'../../utils/env.js';import{forwardRefWithAs as m,useRender as d}from'../../utils/render.js';function N(u){let r=D(),n=T(v),e=_(u),[o,l]=G(()=>{var t;if(!r&&n!==null)return(t=n.current)!=null?t:null;if(C.isServer)return null;let p=e==null?void 0:e.getElementById(\"headlessui-portal-root\");if(p)return p;if(e===null)return null;let a=e.createElement(\"div\");return a.setAttribute(\"id\",\"headlessui-portal-root\"),e.body.appendChild(a)});return E(()=>{o!==null&&(e!=null&&e.body.contains(o)||e==null||e.body.appendChild(o))},[o,e]),E(()=>{r||n!==null&&l(n.current)},[n,l,r]),o}let M=R,S=m(function(r,n){let e=r,o=A(null),l=P(U(i=>{o.current=i}),n),p=_(o),a=N(o),[t]=G(()=>{var i;return C.isServer?null:(i=p==null?void 0:p.createElement(\"div\"))!=null?i:null}),s=T(y),b=F();x(()=>{!a||!t||a.contains(t)||(t.setAttribute(\"data-headlessui-portal\",\"\"),a.appendChild(t))},[a,t]),x(()=>{if(t&&s)return s.register(t)},[s,t]),h(()=>{var i;!a||!t||(t instanceof Node&&a.contains(t)&&a.removeChild(t),a.childNodes.length<=0&&((i=a.parentElement)==null||i.removeChild(a)))});let H=d();return b?!a||!t?null:O(H({ourProps:{ref:l},theirProps:e,slot:{},defaultTag:M,name:\"Portal\"}),t):null});function j(u,r){let n=P(r),{enabled:e=!0,...o}=u,l=d();return e?f.createElement(S,{...o,ref:n}):l({ourProps:{ref:n},theirProps:o,slot:{},defaultTag:M,name:\"Portal\"})}let W=R,v=g(null);function I(u,r){let{target:n,...e}=u,l={ref:P(r)},p=d();return f.createElement(v.Provider,{value:n},p({ourProps:l,theirProps:e,defaultTag:W,name:\"Popover.Group\"}))}let y=g(null);function te(){let u=T(y),r=A([]),n=L(l=>(r.current.push(l),u&&u.register(l),()=>e(l))),e=L(l=>{let p=r.current.indexOf(l);p!==-1&&r.current.splice(p,1),u&&u.unregister(l)}),o=c(()=>({register:n,unregister:e,portals:r}),[n,e,r]);return[r,c(()=>function({children:p}){return f.createElement(y.Provider,{value:o},p)},[o])]}let J=m(j),X=m(I),re=Object.assign(J,{Group:X});export{re as Portal,X as PortalGroup,te as useNestedPortals};\n","\"use client\";import{useFocusRing as Se}from\"@react-aria/focus\";import{useHover as Ie}from\"@react-aria/interactions\";import{useVirtualizer as He}from\"@tanstack/react-virtual\";import M,{Fragment as Pe,createContext as ce,createRef as Ue,useCallback as fe,useContext as Te,useMemo as W,useReducer as Ge,useRef as ee,useState as Ae}from\"react\";import{flushSync as te}from\"react-dom\";import{useActivePress as ze}from'../../hooks/use-active-press.js';import{useByComparator as Ke}from'../../hooks/use-by-comparator.js';import{useControllable as je}from'../../hooks/use-controllable.js';import{useDefaultValue as We}from'../../hooks/use-default-value.js';import{useDisposables as $e}from'../../hooks/use-disposables.js';import{useElementSize as Re}from'../../hooks/use-element-size.js';import{useEvent as c}from'../../hooks/use-event.js';import{useId as de}from'../../hooks/use-id.js';import{useInertOthers as Xe}from'../../hooks/use-inert-others.js';import{useIsoMorphicEffect as q}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as Je}from'../../hooks/use-latest-value.js';import{useOnDisappear as qe}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Ye}from'../../hooks/use-outside-click.js';import{useOwnerDocument as _e}from'../../hooks/use-owner.js';import{useRefocusableInput as he}from'../../hooks/use-refocusable-input.js';import{useResolveButtonType as Qe}from'../../hooks/use-resolve-button-type.js';import{useScrollLock as Ze}from'../../hooks/use-scroll-lock.js';import{useSyncRefs as be}from'../../hooks/use-sync-refs.js';import{useTrackedPointer as et}from'../../hooks/use-tracked-pointer.js';import{transitionDataAttributes as tt,useTransition as ot}from'../../hooks/use-transition.js';import{useTreeWalker as nt}from'../../hooks/use-tree-walker.js';import{useWatch as Me}from'../../hooks/use-watch.js';import{useDisabled as rt}from'../../internal/disabled.js';import{FloatingProvider as it,useFloatingPanel as lt,useFloatingPanelProps as at,useFloatingReference as ut,useResolvedAnchor as pt}from'../../internal/floating.js';import{FormFields as st}from'../../internal/form-fields.js';import{Frozen as dt,useFrozenData as De}from'../../internal/frozen.js';import{useProvidedId as bt}from'../../internal/id.js';import{OpenClosedProvider as mt,State as me,useOpenClosed as ct}from'../../internal/open-closed.js';import{history as Fe}from'../../utils/active-element-history.js';import{isDisabledReactIssue7711 as ft}from'../../utils/bugs.js';import{Focus as A,calculateActiveIndex as Ve}from'../../utils/calculate-active-index.js';import{disposables as Le}from'../../utils/disposables.js';import{sortByDomNode as Tt}from'../../utils/focus-management.js';import{match as oe}from'../../utils/match.js';import{isMobile as xt}from'../../utils/platform.js';import{RenderFeatures as Be,forwardRefWithAs as re,mergeProps as xe,useRender as ie}from'../../utils/render.js';import{useDescribedBy as gt}from'../description/description.js';import{Keys as F}from'../keyboard.js';import{Label as vt,useLabelledBy as ge,useLabels as yt}from'../label/label.js';import{MouseButton as we}from'../mouse.js';import{Portal as Ot}from'../portal/portal.js';var Ct=(e=>(e[e.Open=0]=\"Open\",e[e.Closed=1]=\"Closed\",e))(Ct||{}),Et=(e=>(e[e.Single=0]=\"Single\",e[e.Multi=1]=\"Multi\",e))(Et||{}),St=(o=>(o[o.Pointer=0]=\"Pointer\",o[o.Focus=1]=\"Focus\",o[o.Other=2]=\"Other\",o))(St||{}),It=(l=>(l[l.OpenCombobox=0]=\"OpenCombobox\",l[l.CloseCombobox=1]=\"CloseCombobox\",l[l.GoToOption=2]=\"GoToOption\",l[l.SetTyping=3]=\"SetTyping\",l[l.RegisterOption=4]=\"RegisterOption\",l[l.UnregisterOption=5]=\"UnregisterOption\",l[l.SetActivationTrigger=6]=\"SetActivationTrigger\",l[l.UpdateVirtualConfiguration=7]=\"UpdateVirtualConfiguration\",l[l.SetInputElement=8]=\"SetInputElement\",l[l.SetButtonElement=9]=\"SetButtonElement\",l[l.SetOptionsElement=10]=\"SetOptionsElement\",l))(It||{});function ve(t,n=e=>e){let e=t.activeOptionIndex!==null?t.options[t.activeOptionIndex]:null,o=n(t.options.slice()),f=o.length>0&&o[0].dataRef.current.order!==null?o.sort((m,d)=>m.dataRef.current.order-d.dataRef.current.order):Tt(o,m=>m.dataRef.current.domRef.current),b=e?f.indexOf(e):null;return b===-1&&(b=null),{options:f,activeOptionIndex:b}}let Pt={[1](t){var n;return(n=t.dataRef.current)!=null&&n.disabled||t.comboboxState===1?t:{...t,activeOptionIndex:null,comboboxState:1,isTyping:!1,activationTrigger:2,__demoMode:!1}},[0](t){var n,e;if((n=t.dataRef.current)!=null&&n.disabled||t.comboboxState===0)return t;if((e=t.dataRef.current)!=null&&e.value){let o=t.dataRef.current.calculateIndex(t.dataRef.current.value);if(o!==-1)return{...t,activeOptionIndex:o,comboboxState:0,__demoMode:!1}}return{...t,comboboxState:0,__demoMode:!1}},[3](t,n){return t.isTyping===n.isTyping?t:{...t,isTyping:n.isTyping}},[2](t,n){var b,m,d,x;if((b=t.dataRef.current)!=null&&b.disabled||t.optionsElement&&!((m=t.dataRef.current)!=null&&m.optionsPropsRef.current.static)&&t.comboboxState===1)return t;if(t.virtual){let{options:i,disabled:r}=t.virtual,l=n.focus===A.Specific?n.idx:Ve(n,{resolveItems:()=>i,resolveActiveIndex:()=>{var R,s;return(s=(R=t.activeOptionIndex)!=null?R:i.findIndex(D=>!r(D)))!=null?s:null},resolveDisabled:r,resolveId(){throw new Error(\"Function not implemented.\")}}),S=(d=n.trigger)!=null?d:2;return t.activeOptionIndex===l&&t.activationTrigger===S?t:{...t,activeOptionIndex:l,activationTrigger:S,isTyping:!1,__demoMode:!1}}let e=ve(t);if(e.activeOptionIndex===null){let i=e.options.findIndex(r=>!r.dataRef.current.disabled);i!==-1&&(e.activeOptionIndex=i)}let o=n.focus===A.Specific?n.idx:Ve(n,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:i=>i.id,resolveDisabled:i=>i.dataRef.current.disabled}),f=(x=n.trigger)!=null?x:2;return t.activeOptionIndex===o&&t.activationTrigger===f?t:{...t,...e,isTyping:!1,activeOptionIndex:o,activationTrigger:f,__demoMode:!1}},[4]:(t,n)=>{var b,m,d;if((b=t.dataRef.current)!=null&&b.virtual)return{...t,options:[...t.options,n.payload]};let e=n.payload,o=ve(t,x=>(x.push(e),x));t.activeOptionIndex===null&&(m=t.dataRef.current)!=null&&m.isSelected(n.payload.dataRef.current.value)&&(o.activeOptionIndex=o.options.indexOf(e));let f={...t,...o,activationTrigger:2};return(d=t.dataRef.current)!=null&&d.__demoMode&&t.dataRef.current.value===void 0&&(f.activeOptionIndex=0),f},[5]:(t,n)=>{var o;if((o=t.dataRef.current)!=null&&o.virtual)return{...t,options:t.options.filter(f=>f.id!==n.id)};let e=ve(t,f=>{let b=f.findIndex(m=>m.id===n.id);return b!==-1&&f.splice(b,1),f});return{...t,...e,activationTrigger:2}},[6]:(t,n)=>t.activationTrigger===n.trigger?t:{...t,activationTrigger:n.trigger},[7]:(t,n)=>{var o,f;if(t.virtual===null)return{...t,virtual:{options:n.options,disabled:(o=n.disabled)!=null?o:()=>!1}};if(t.virtual.options===n.options&&t.virtual.disabled===n.disabled)return t;let e=t.activeOptionIndex;if(t.activeOptionIndex!==null){let b=n.options.indexOf(t.virtual.options[t.activeOptionIndex]);b!==-1?e=b:e=null}return{...t,activeOptionIndex:e,virtual:{options:n.options,disabled:(f=n.disabled)!=null?f:()=>!1}}},[8]:(t,n)=>t.inputElement===n.element?t:{...t,inputElement:n.element},[9]:(t,n)=>t.buttonElement===n.element?t:{...t,buttonElement:n.element},[10]:(t,n)=>t.optionsElement===n.element?t:{...t,optionsElement:n.element}},ye=ce(null);ye.displayName=\"ComboboxActionsContext\";function le(t){let n=Te(ye);if(n===null){let e=new Error(`<${t} /> is missing a parent <Combobox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,le),e}return n}let Ne=ce(null);function At(t){let n=ne(\"VirtualProvider\"),{options:e}=n.virtual,[o,f]=W(()=>{let i=n.optionsElement;if(!i)return[0,0];let r=window.getComputedStyle(i);return[parseFloat(r.paddingBlockStart||r.paddingTop),parseFloat(r.paddingBlockEnd||r.paddingBottom)]},[n.optionsElement]),b=He({enabled:e.length!==0,scrollPaddingStart:o,scrollPaddingEnd:f,count:e.length,estimateSize(){return 40},getScrollElement(){return n.optionsElement},overscan:12}),[m,d]=Ae(0);q(()=>{d(i=>i+1)},[e]);let x=b.getVirtualItems();return x.length===0?null:M.createElement(Ne.Provider,{value:b},M.createElement(\"div\",{style:{position:\"relative\",width:\"100%\",height:`${b.getTotalSize()}px`},ref:i=>{i&&n.activationTrigger!==0&&n.activeOptionIndex!==null&&e.length>n.activeOptionIndex&&b.scrollToIndex(n.activeOptionIndex)}},x.map(i=>{var r;return M.createElement(Pe,{key:i.key},M.cloneElement((r=t.children)==null?void 0:r.call(t,{...t.slot,option:e[i.index]}),{key:`${m}-${i.key}`,\"data-index\":i.index,\"aria-setsize\":e.length,\"aria-posinset\":i.index+1,style:{position:\"absolute\",top:0,left:0,transform:`translateY(${i.start}px)`,overflowAnchor:\"none\"}}))})))}let ae=ce(null);ae.displayName=\"ComboboxDataContext\";function ne(t){let n=Te(ae);if(n===null){let e=new Error(`<${t} /> is missing a parent <Combobox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,ne),e}return n}function Rt(t,n){return oe(n.type,Pt,t,n)}let _t=Pe;function ht(t,n){var Oe,Ce;let e=rt(),{value:o,defaultValue:f,onChange:b,form:m,name:d,by:x,disabled:i=e||!1,onClose:r,__demoMode:l=!1,multiple:S=!1,immediate:R=!1,virtual:s=null,nullable:D,...B}=t,_=We(f),[I=S?[]:void 0,O]=je(o,b,_),[P,g]=Ge(Rt,{dataRef:Ue(),comboboxState:l?0:1,isTyping:!1,options:[],virtual:s?{options:s.options,disabled:(Oe=s.disabled)!=null?Oe:()=>!1}:null,activeOptionIndex:null,activationTrigger:2,inputElement:null,buttonElement:null,optionsElement:null,__demoMode:l}),V=ee(!1),w=ee({static:!1,hold:!1}),T=Ke(x),$=c(p=>s?x===null?s.options.indexOf(p):s.options.findIndex(v=>T(v,p)):P.options.findIndex(v=>T(v.dataRef.current.value,p))),K=fe(p=>oe(u.mode,{[1]:()=>I.some(v=>T(v,p)),[0]:()=>T(I,p)}),[I]),Z=c(p=>P.activeOptionIndex===$(p)),u=W(()=>({...P,immediate:R,optionsPropsRef:w,value:I,defaultValue:_,disabled:i,mode:S?1:0,virtual:s?P.virtual:null,get activeOptionIndex(){if(V.current&&P.activeOptionIndex===null&&(s?s.options.length>0:P.options.length>0)){if(s){let v=s.options.findIndex(z=>{var se,Ee;return!((Ee=(se=s.disabled)==null?void 0:se.call(s,z))!=null&&Ee)});if(v!==-1)return v}let p=P.options.findIndex(v=>!v.dataRef.current.disabled);if(p!==-1)return p}return P.activeOptionIndex},calculateIndex:$,compare:T,isSelected:K,isActive:Z}),[I,_,i,S,l,P,s]);q(()=>{var p;s&&g({type:7,options:s.options,disabled:(p=s.disabled)!=null?p:null})},[s,s==null?void 0:s.options,s==null?void 0:s.disabled]),q(()=>{P.dataRef.current=u},[u]);let X=u.comboboxState===0;Ye(X,[u.buttonElement,u.inputElement,u.optionsElement],()=>C.closeCombobox());let N=W(()=>{var p,v,z;return{open:u.comboboxState===0,disabled:i,activeIndex:u.activeOptionIndex,activeOption:u.activeOptionIndex===null?null:u.virtual?u.virtual.options[(p=u.activeOptionIndex)!=null?p:0]:(z=(v=u.options[u.activeOptionIndex])==null?void 0:v.dataRef.current.value)!=null?z:null,value:I}},[u,i,I]),U=c(()=>{if(u.activeOptionIndex!==null){if(C.setIsTyping(!1),u.virtual)j(u.virtual.options[u.activeOptionIndex]);else{let{dataRef:p}=u.options[u.activeOptionIndex];j(p.current.value)}C.goToOption(A.Specific,u.activeOptionIndex)}}),y=c(()=>{g({type:0}),V.current=!0}),G=c(()=>{g({type:1}),V.current=!1,r==null||r()}),ue=c(p=>{g({type:3,isTyping:p})}),Y=c((p,v,z)=>(V.current=!1,p===A.Specific?g({type:2,focus:A.Specific,idx:v,trigger:z}):g({type:2,focus:p,trigger:z}))),Q=c((p,v)=>(g({type:4,payload:{id:p,dataRef:v}}),()=>{u.isActive(v.current.value)&&(V.current=!0),g({type:5,id:p})})),j=c(p=>oe(u.mode,{[0](){return O==null?void 0:O(p)},[1](){let v=u.value.slice(),z=v.findIndex(se=>T(se,p));return z===-1?v.push(p):v.splice(z,1),O==null?void 0:O(v)}})),h=c(p=>{g({type:6,trigger:p})}),pe=c(p=>{g({type:8,element:p})}),a=c(p=>{g({type:9,element:p})}),k=c(p=>{g({type:10,element:p})}),C=W(()=>({onChange:j,registerOption:Q,goToOption:Y,setIsTyping:ue,closeCombobox:G,openCombobox:y,setActivationTrigger:h,selectActiveOption:U,setInputElement:pe,setButtonElement:a,setOptionsElement:k}),[]),[H,E]=yt(),L=n===null?{}:{ref:n},J=fe(()=>{if(_!==void 0)return O==null?void 0:O(_)},[O,_]),ke=ie();return M.createElement(E,{value:H,props:{htmlFor:(Ce=u.inputElement)==null?void 0:Ce.id},slot:{open:u.comboboxState===0,disabled:i}},M.createElement(it,null,M.createElement(ye.Provider,{value:C},M.createElement(ae.Provider,{value:u},M.createElement(mt,{value:oe(u.comboboxState,{[0]:me.Open,[1]:me.Closed})},d!=null&&M.createElement(st,{disabled:i,data:I!=null?{[d]:I}:{},form:m,onReset:J}),ke({ourProps:L,theirProps:B,slot:N,defaultTag:_t,name:\"Combobox\"}))))))}let Mt=\"input\";function Dt(t,n){var Y,Q,j,h,pe;let e=ne(\"Combobox.Input\"),o=le(\"Combobox.Input\"),f=de(),b=bt(),{id:m=b||`headlessui-combobox-input-${f}`,onChange:d,displayValue:x,disabled:i=e.disabled||!1,autoFocus:r=!1,type:l=\"text\",...S}=t,R=ee(null),s=be(R,n,ut(),o.setInputElement),D=_e(e.inputElement),B=$e(),_=c(()=>{o.onChange(null),e.optionsElement&&(e.optionsElement.scrollTop=0),o.goToOption(A.Nothing)}),I=W(()=>{var a;return typeof x==\"function\"&&e.value!==void 0?(a=x(e.value))!=null?a:\"\":typeof e.value==\"string\"?e.value:\"\"},[e.value,x]);Me(([a,k],[C,H])=>{if(e.isTyping)return;let E=R.current;E&&((H===0&&k===1||a!==C)&&(E.value=a),requestAnimationFrame(()=>{if(e.isTyping||!E||(D==null?void 0:D.activeElement)!==E)return;let{selectionStart:L,selectionEnd:J}=E;Math.abs((J!=null?J:0)-(L!=null?L:0))===0&&L===0&&E.setSelectionRange(E.value.length,E.value.length)}))},[I,e.comboboxState,D,e.isTyping]),Me(([a],[k])=>{if(a===0&&k===1){if(e.isTyping)return;let C=R.current;if(!C)return;let H=C.value,{selectionStart:E,selectionEnd:L,selectionDirection:J}=C;C.value=\"\",C.value=H,J!==null?C.setSelectionRange(E,L,J):C.setSelectionRange(E,L)}},[e.comboboxState]);let O=ee(!1),P=c(()=>{O.current=!0}),g=c(()=>{B.nextFrame(()=>{O.current=!1})}),V=c(a=>{switch(o.setIsTyping(!0),a.key){case F.Enter:if(e.comboboxState!==0||O.current)return;if(a.preventDefault(),a.stopPropagation(),e.activeOptionIndex===null){o.closeCombobox();return}o.selectActiveOption(),e.mode===0&&o.closeCombobox();break;case F.ArrowDown:return a.preventDefault(),a.stopPropagation(),oe(e.comboboxState,{[0]:()=>o.goToOption(A.Next),[1]:()=>o.openCombobox()});case F.ArrowUp:return a.preventDefault(),a.stopPropagation(),oe(e.comboboxState,{[0]:()=>o.goToOption(A.Previous),[1]:()=>{te(()=>o.openCombobox()),e.value||o.goToOption(A.Last)}});case F.Home:if(a.shiftKey)break;return a.preventDefault(),a.stopPropagation(),o.goToOption(A.First);case F.PageUp:return a.preventDefault(),a.stopPropagation(),o.goToOption(A.First);case F.End:if(a.shiftKey)break;return a.preventDefault(),a.stopPropagation(),o.goToOption(A.Last);case F.PageDown:return a.preventDefault(),a.stopPropagation(),o.goToOption(A.Last);case F.Escape:return e.comboboxState!==0?void 0:(a.preventDefault(),e.optionsElement&&!e.optionsPropsRef.current.static&&a.stopPropagation(),e.mode===0&&e.value===null&&_(),o.closeCombobox());case F.Tab:if(e.comboboxState!==0)return;e.mode===0&&e.activationTrigger!==1&&o.selectActiveOption(),o.closeCombobox();break}}),w=c(a=>{d==null||d(a),e.mode===0&&a.target.value===\"\"&&_(),o.openCombobox()}),T=c(a=>{var C,H,E;let k=(C=a.relatedTarget)!=null?C:Fe.find(L=>L!==a.currentTarget);if(!((H=e.optionsElement)!=null&&H.contains(k))&&!((E=e.buttonElement)!=null&&E.contains(k))&&e.comboboxState===0)return a.preventDefault(),e.mode===0&&e.value===null&&_(),o.closeCombobox()}),$=c(a=>{var C,H,E;let k=(C=a.relatedTarget)!=null?C:Fe.find(L=>L!==a.currentTarget);(H=e.buttonElement)!=null&&H.contains(k)||(E=e.optionsElement)!=null&&E.contains(k)||e.disabled||e.immediate&&e.comboboxState!==0&&B.microTask(()=>{te(()=>o.openCombobox()),o.setActivationTrigger(1)})}),K=ge(),Z=gt(),{isFocused:u,focusProps:X}=Se({autoFocus:r}),{isHovered:N,hoverProps:U}=Ie({isDisabled:i}),y=W(()=>({open:e.comboboxState===0,disabled:i,hover:N,focus:u,autofocus:r}),[e,N,u,r,i]),G=xe({ref:s,id:m,role:\"combobox\",type:l,\"aria-controls\":(Y=e.optionsElement)==null?void 0:Y.id,\"aria-expanded\":e.comboboxState===0,\"aria-activedescendant\":e.activeOptionIndex===null?void 0:e.virtual?(Q=e.options.find(a=>!a.dataRef.current.disabled&&e.compare(a.dataRef.current.value,e.virtual.options[e.activeOptionIndex])))==null?void 0:Q.id:(j=e.options[e.activeOptionIndex])==null?void 0:j.id,\"aria-labelledby\":K,\"aria-describedby\":Z,\"aria-autocomplete\":\"list\",defaultValue:(pe=(h=t.defaultValue)!=null?h:e.defaultValue!==void 0?x==null?void 0:x(e.defaultValue):null)!=null?pe:e.defaultValue,disabled:i||void 0,autoFocus:r,onCompositionStart:P,onCompositionEnd:g,onKeyDown:V,onChange:w,onFocus:$,onBlur:T},X,U);return ie()({ourProps:G,theirProps:S,slot:y,defaultTag:Mt,name:\"Combobox.Input\"})}let Ft=\"button\";function Vt(t,n){var w;let e=ne(\"Combobox.Button\"),o=le(\"Combobox.Button\"),f=be(n,o.setButtonElement),b=de(),{id:m=`headlessui-combobox-button-${b}`,disabled:d=e.disabled||!1,autoFocus:x=!1,...i}=t,r=he(e.inputElement),l=c(T=>{switch(T.key){case F.Space:case F.Enter:T.preventDefault(),T.stopPropagation(),e.comboboxState===1&&te(()=>o.openCombobox()),r();return;case F.ArrowDown:T.preventDefault(),T.stopPropagation(),e.comboboxState===1&&(te(()=>o.openCombobox()),e.value||o.goToOption(A.First)),r();return;case F.ArrowUp:T.preventDefault(),T.stopPropagation(),e.comboboxState===1&&(te(()=>o.openCombobox()),e.value||o.goToOption(A.Last)),r();return;case F.Escape:if(e.comboboxState!==0)return;T.preventDefault(),e.optionsElement&&!e.optionsPropsRef.current.static&&T.stopPropagation(),te(()=>o.closeCombobox()),r();return;default:return}}),S=c(T=>{T.preventDefault(),!ft(T.currentTarget)&&(T.button===we.Left&&(e.comboboxState===0?o.closeCombobox():o.openCombobox()),r())}),R=ge([m]),{isFocusVisible:s,focusProps:D}=Se({autoFocus:x}),{isHovered:B,hoverProps:_}=Ie({isDisabled:d}),{pressed:I,pressProps:O}=ze({disabled:d}),P=W(()=>({open:e.comboboxState===0,active:I||e.comboboxState===0,disabled:d,value:e.value,hover:B,focus:s}),[e,B,s,I,d]),g=xe({ref:f,id:m,type:Qe(t,e.buttonElement),tabIndex:-1,\"aria-haspopup\":\"listbox\",\"aria-controls\":(w=e.optionsElement)==null?void 0:w.id,\"aria-expanded\":e.comboboxState===0,\"aria-labelledby\":R,disabled:d||void 0,autoFocus:x,onMouseDown:S,onKeyDown:l},D,_,O);return ie()({ourProps:g,theirProps:i,slot:P,defaultTag:Ft,name:\"Combobox.Button\"})}let Lt=\"div\",Bt=Be.RenderStrategy|Be.Static;function wt(t,n){var Y,Q,j;let e=de(),{id:o=`headlessui-combobox-options-${e}`,hold:f=!1,anchor:b,portal:m=!1,modal:d=!0,transition:x=!1,...i}=t,r=ne(\"Combobox.Options\"),l=le(\"Combobox.Options\"),S=pt(b);S&&(m=!0);let[R,s]=lt(S),[D,B]=Ae(null),_=at(),I=be(n,S?R:null,l.setOptionsElement,B),O=_e(r.optionsElement),P=ct(),[g,V]=ot(x,D,P!==null?(P&me.Open)===me.Open:r.comboboxState===0);qe(g,r.inputElement,l.closeCombobox);let w=r.__demoMode?!1:d&&r.comboboxState===0;Ze(w,O);let T=r.__demoMode?!1:d&&r.comboboxState===0;Xe(T,{allowed:fe(()=>[r.inputElement,r.buttonElement,r.optionsElement],[r.inputElement,r.buttonElement,r.optionsElement])}),q(()=>{var h;r.optionsPropsRef.current.static=(h=t.static)!=null?h:!1},[r.optionsPropsRef,t.static]),q(()=>{r.optionsPropsRef.current.hold=f},[r.optionsPropsRef,f]),nt(r.comboboxState===0,{container:r.optionsElement,accept(h){return h.getAttribute(\"role\")===\"option\"?NodeFilter.FILTER_REJECT:h.hasAttribute(\"role\")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(h){h.setAttribute(\"role\",\"none\")}});let $=ge([(Y=r.buttonElement)==null?void 0:Y.id]),K=W(()=>({open:r.comboboxState===0,option:void 0}),[r.comboboxState]),Z=c(()=>{l.setActivationTrigger(0)}),u=c(h=>{h.preventDefault(),l.setActivationTrigger(0)}),X=xe(S?_():{},{\"aria-labelledby\":$,role:\"listbox\",\"aria-multiselectable\":r.mode===1?!0:void 0,id:o,ref:I,style:{...i.style,...s,\"--input-width\":Re(r.inputElement,!0).width,\"--button-width\":Re(r.buttonElement,!0).width},onWheel:r.activationTrigger===0?void 0:Z,onMouseDown:u,...tt(V)}),N=g&&r.comboboxState===1,U=De(N,(Q=r.virtual)==null?void 0:Q.options),y=De(N,r.value),G=c(h=>r.compare(y,h));if(r.virtual){if(U===void 0)throw new Error(\"Missing `options` in virtual mode\");Object.assign(i,{children:M.createElement(ae.Provider,{value:U!==r.virtual.options?{...r,virtual:{...r.virtual,options:U}}:r},M.createElement(At,{slot:K},i.children))})}let ue=ie();return M.createElement(Ot,{enabled:m?t.static||g:!1},M.createElement(ae.Provider,{value:r.mode===1?r:{...r,isSelected:G}},ue({ourProps:X,theirProps:{...i,children:M.createElement(dt,{freeze:N},typeof i.children==\"function\"?(j=i.children)==null?void 0:j.call(i,K):i.children)},slot:K,defaultTag:Lt,features:Bt,visible:g,name:\"Combobox.Options\"})))}let Nt=\"div\";function kt(t,n){var u,X,N,U;let e=ne(\"Combobox.Option\"),o=le(\"Combobox.Option\"),f=de(),{id:b=`headlessui-combobox-option-${f}`,value:m,disabled:d=(N=(X=(u=e.virtual)==null?void 0:u.disabled)==null?void 0:X.call(u,m))!=null?N:!1,order:x=null,...i}=t,r=he(e.inputElement),l=e.virtual?e.activeOptionIndex===e.calculateIndex(m):e.activeOptionIndex===null?!1:((U=e.options[e.activeOptionIndex])==null?void 0:U.id)===b,S=e.isSelected(m),R=ee(null),s=Je({disabled:d,value:m,domRef:R,order:x}),D=Te(Ne),B=be(n,R,D?D.measureElement:null),_=c(()=>{o.setIsTyping(!1),o.onChange(m)});q(()=>o.registerOption(b,s),[s,b]);let I=ee(!(e.virtual||e.__demoMode));q(()=>{if(!e.virtual&&!e.__demoMode)return Le().requestAnimationFrame(()=>{I.current=!0})},[e.virtual,e.__demoMode]),q(()=>{if(I.current&&e.comboboxState===0&&l&&e.activationTrigger!==0)return Le().requestAnimationFrame(()=>{var y,G;(G=(y=R.current)==null?void 0:y.scrollIntoView)==null||G.call(y,{block:\"nearest\"})})},[R,l,e.comboboxState,e.activationTrigger,e.activeOptionIndex]);let O=c(y=>{y.preventDefault(),y.button===we.Left&&(d||(_(),xt()||requestAnimationFrame(()=>r()),e.mode===0&&o.closeCombobox()))}),P=c(()=>{if(d)return o.goToOption(A.Nothing);let y=e.calculateIndex(m);o.goToOption(A.Specific,y)}),g=et(),V=c(y=>g.update(y)),w=c(y=>{if(!g.wasMoved(y)||d||l)return;let G=e.calculateIndex(m);o.goToOption(A.Specific,G,0)}),T=c(y=>{g.wasMoved(y)&&(d||l&&(e.optionsPropsRef.current.hold||o.goToOption(A.Nothing)))}),$=W(()=>({active:l,focus:l,selected:S,disabled:d}),[l,S,d]),K={id:b,ref:B,role:\"option\",tabIndex:d===!0?void 0:-1,\"aria-disabled\":d===!0?!0:void 0,\"aria-selected\":S,disabled:void 0,onMouseDown:O,onFocus:P,onPointerEnter:V,onMouseEnter:V,onPointerMove:w,onMouseMove:w,onPointerLeave:T,onMouseLeave:T};return ie()({ourProps:K,theirProps:i,slot:$,defaultTag:Nt,name:\"Combobox.Option\"})}let Ht=re(ht),Ut=re(Vt),Gt=re(Dt),zt=vt,Kt=re(wt),jt=re(kt),Ho=Object.assign(Ht,{Input:Gt,Button:Ut,Label:zt,Options:Kt,Option:jt});export{Ho as Combobox,Ut as ComboboxButton,Gt as ComboboxInput,zt as ComboboxLabel,jt as ComboboxOption,Kt as ComboboxOptions};\n","import { dynatrace } from '@dx-ui/framework-logger';\nimport { keepPreviousData, useQuery } from '@tanstack/react-query';\nimport type { AutocompletePrediction } from './use-suggestions';\n\nexport type Predictions = AutocompletePrediction[] | null;\n\nexport type PredictionStatusTypes = 'OK' | 'SELECTION_REQUIRED';\n\nexport type AutoCompleteResponse = {\n  predictions: Predictions;\n  status: PredictionStatusTypes | null;\n};\n\nexport type Coordinate = {\n  latitude: number;\n  longitude: number;\n};\n\nexport type LocationTypes = 'geocode' | 'airport' | 'pointOfInterest' | 'property' | 'address';\n\nexport interface PredictionService {\n  /** The auto-complete service url */\n  uri: string;\n  /** The input text to use for searching locations */\n  input: string;\n  /** The language param to use for the search */\n  language: string;\n  /** The type of location to search for.\n   * Options: `'geocode' | 'airport' | 'pointOfInterest' | 'property' | 'address'`\n   * Can be provided in an array\n   */\n  type?: LocationTypes | LocationTypes[];\n  /** The number of results to limit the search to. * Can be provided in an array with each value corresponding to the `type` option. */\n  count?: number | number[];\n  /** The coordinates to use when making a search. This is used to bias the results based on location */\n  coordinate?: Coordinate;\n  /** Unique id to use when making a search. If one is not supplied one is created using crypto.randomUUID(). @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID} */\n  sessionId?: string;\n  /** Toggle exclusion rules by country */\n  applyExclusions?: boolean;\n}\n\nexport type UsePlacesAutocompleteProps = {\n  /** Enabled autocomplete fetch */\n  isEnabled?: boolean;\n  /** Minimum charters needed to be entered before a search is attempted */\n  minLength?: number;\n  /** Query options that are used when making a search for locations */\n  serviceOptions: PredictionService;\n};\n\nconst mapParamToString = (param: unknown) => {\n  if (Array.isArray(param)) return param.join(',');\n  if (Number.isFinite(param)) return String(param);\n  return String(param);\n};\n\nconst getPredictions = async ({\n  sessionId = crypto.randomUUID(),\n  coordinate,\n  uri,\n  ...params\n}: PredictionService): Promise<AutoCompleteResponse | null> => {\n  const url = new URL(uri, window.location.origin);\n\n  const urlSearchParams = new URLSearchParams({\n    ...(params?.input && { input: params.input }),\n    ...(params?.language && { language: params.language }),\n    ...(params?.type && { type: mapParamToString(params?.type) }),\n    ...(params?.count && { count: mapParamToString(params.count) }),\n    ...(params?.applyExclusions && { applyExclusions: mapParamToString(params.applyExclusions) }),\n    ...(coordinate && {\n      location: mapParamToString(`${coordinate.latitude},${coordinate.longitude}`),\n    }),\n  });\n\n  try {\n    const response = await fetch(url.href + `?${urlSearchParams.toString()}`, {\n      method: 'GET',\n      headers: {\n        'dx-map-session-token': sessionId,\n      },\n    });\n    const autocompleteResults = await response.json();\n\n    if (autocompleteResults?.status === 'SELECTION_REQUIRED') {\n      dynatrace?.sendSessionProperties({ shortString: { searchdrawbridge: 'Up' } });\n    }\n\n    return autocompleteResults;\n  } catch {\n    return null;\n  }\n};\n\n/**\n * A search as you type hook that provides a list of predictions.\n */\nexport const usePlacesAutocomplete = ({\n  isEnabled = true,\n  minLength = 2,\n  serviceOptions,\n}: UsePlacesAutocompleteProps) => {\n  const hasSearchTerms = !!serviceOptions?.input && serviceOptions.input?.length >= minLength;\n\n  const { isFetching, data: autocompleteResponse } = useQuery<AutoCompleteResponse | null>({\n    queryKey: ['autocomplete', serviceOptions],\n    queryFn: () => getPredictions(serviceOptions),\n    enabled: isEnabled && hasSearchTerms,\n    placeholderData: keepPreviousData,\n  });\n\n  return {\n    predictions: autocompleteResponse?.predictions || null,\n    loading: isFetching,\n    status: autocompleteResponse?.status || null,\n  };\n};\n","/// <reference types=\"@types/google.maps\" />\n\nimport { useState, useEffect } from 'react';\n\nexport type FormattedSuggestion = {\n  mainText: string;\n  secondaryText: string;\n};\n\nexport type PlacesAutocompleteSuggestion = {\n  id?: string;\n  description: string;\n  placeId: string;\n  active?: boolean;\n  index?: number;\n  formattedSuggestion: FormattedSuggestion;\n  matchedSubstrings?: google.maps.places.PredictionSubstring[];\n  terms?: google.maps.places.PredictionTerm[];\n  type?: string;\n  types?: string[];\n};\n\nexport type AutocompletePrediction = google.maps.places.AutocompletePrediction & {\n  type: string;\n};\ntype SuggestionsProps = {\n  predictions: AutocompletePrediction[] | null;\n};\n\ntype SuggestionsRenderProps = {\n  suggestions: PlacesAutocompleteSuggestion[];\n};\n\ntype UseSuggestionsHook = (props: SuggestionsProps) => SuggestionsRenderProps;\n\nconst formattedSuggestion = (\n  formatting: google.maps.places.StructuredFormatting\n): FormattedSuggestion => ({\n  mainText: formatting.main_text,\n  secondaryText: formatting.secondary_text,\n});\n\nexport const useSuggestions: UseSuggestionsHook = ({ predictions }) => {\n  const [suggestions, setSuggestions] = useState<PlacesAutocompleteSuggestion[]>([]);\n\n  useEffect(() => {\n    if (!predictions || predictions.length === 0) {\n      setSuggestions([]);\n      return;\n    }\n    const results = predictions.map((p, idx) => ({\n      id: p.place_id,\n      description: p.description,\n      placeId: p.place_id,\n      active: false,\n      index: idx,\n      formattedSuggestion: formattedSuggestion(p.structured_formatting),\n      matchedSubstrings: p.matched_substrings,\n      terms: p.terms,\n      type: p.type,\n      types: p.types,\n    }));\n    setSuggestions(results);\n  }, [predictions]);\n\n  return { suggestions };\n};\n","export * from './use-places-autocomplete';\nexport * from './use-suggestions';\n","export * from './lib';\n","import type * as React from 'react';\nimport { ComboboxOption } from '@headlessui/react';\nimport type { FormInputBase } from '@dx-ui/osc-form';\nimport { useTranslation } from 'next-i18next';\nimport type { GeocodeCoordinateQuery } from '../gql/types';\n\ntype LocationHotelsNearMeOption = FormInputBase<\n  Omit<React.HTMLAttributes<HTMLInputElement>, 'value' | 'onSelect'>\n>;\n\nconst LocationHotelsNearMeOption = ({\n  geocodeData,\n}: {\n  geocodeData?: GeocodeCoordinateQuery['geocode'];\n  showNoResultsFound?: boolean;\n}) => {\n  const { t } = useTranslation('osc-location');\n  const userCity = geocodeData?.match?.address?.city || '';\n\n  let stateCountry = geocodeData?.match?.address?.stateName;\n  if (stateCountry)\n    stateCountry += geocodeData?.match?.address?.country\n      ? `, ${geocodeData?.match?.address?.country}`\n      : `${geocodeData?.match?.address?.country}`;\n  else\n    stateCountry += geocodeData?.match?.address?.country\n      ? ` ${geocodeData?.match?.address?.country}`\n      : ``;\n\n  return geocodeData && userCity ? (\n    <div>\n      <div className=\"flex pb-0 pt-1 ltr:pl-2 ltr:text-left rtl:pr-2 \">\n        <span className=\"text-text-alt\">{t('optionsHeader.hotelsNearBy')}</span>\n      </div>\n      <ComboboxOption\n        key={userCity}\n        value={userCity}\n        className=\"data-[focus]:bg-bg-primary data-[selected]:bg-bg-alt highlighted:bg-bg-alt cursor-pointer px-4 py-2\"\n        aria-setsize={1}\n        aria-posinset={1}\n      >\n        <div className=\"flex min-w-[226px]\">\n          <div className=\"flex justify-center\" aria-hidden>\n            <img\n              className=\"size-6 object-contain\"\n              alt=\"location icon\"\n              src=\"/modules/assets/img/common/icon_location@2x.png\"\n            />\n          </div>\n          <div className=\"flex flex-col ltr:pl-2 ltr:text-left rtl:pr-2\">\n            <span className=\"text-base\">{userCity}</span>\n            <span className=\"text-text-alt text-xs\">{stateCountry}</span>\n          </div>\n        </div>\n      </ComboboxOption>\n    </div>\n  ) : null;\n};\n\nexport { LocationHotelsNearMeOption };\nexport default LocationHotelsNearMeOption;\n","import type { PlacesAutocompleteSuggestion } from '@dx-ui/framework-places-autocomplete';\nimport { useLocalStorage } from 'usehooks-ts';\n\nconst REFRESH_TTL_2WEEK = 604800 * 2 * 1000;\nconst DISPLAY_COUNT = 5;\n\nexport function sanitizePlacesAutocompleteSuggestions(\n  places: PlacesAutocompleteSuggestion[]\n): PlacesAutocompleteSuggestion[] {\n  const knownDescriptions = new Set();\n\n  return places\n    .filter((place) => {\n      if (knownDescriptions.has(place.description)) {\n        return false;\n      } else {\n        knownDescriptions.add(place.description);\n        return true;\n      }\n    })\n    .slice(0, DISPLAY_COUNT);\n}\n\nexport function useRecentSearches() {\n  const [value, setValue] = useLocalStorage<PlacesAutocompleteSuggestion[]>('RecentSearches', [], {\n    initializeWithValue: false,\n\n    serializer: (instance) =>\n      JSON.stringify({\n        instance,\n        expireDate: new Date().getTime() + REFRESH_TTL_2WEEK,\n      }),\n\n    deserializer: (s: string): PlacesAutocompleteSuggestion[] => {\n      try {\n        const val: unknown = JSON.parse(s);\n        if (\n          val &&\n          typeof val === 'object' &&\n          'expireDate' in val &&\n          typeof val.expireDate === 'number' &&\n          'instance' in val\n        ) {\n          const { expireDate, instance } = val;\n          const ttl = new Date(expireDate).getTime() - new Date().getTime();\n\n          if (ttl <= 0) {\n            return [];\n          }\n\n          if (instance && Array.isArray(instance)) {\n            return instance;\n          }\n        }\n        return [];\n      } catch {\n        return [];\n      }\n    },\n  });\n\n  const lengthLimitedValue = (value ?? []).slice(0, DISPLAY_COUNT);\n\n  return [lengthLimitedValue, setValue] as const;\n}\n","import type { LocationTypes } from '@dx-ui/framework-places-autocomplete';\nimport type { IconNames } from '@dx-ui/osc-icon';\n\nexport const LocationIcons: { [key in LocationTypes]: (typeof IconNames)[number] } = {\n  address: 'location',\n  airport: 'airport',\n  geocode: 'location',\n  pointOfInterest: 'point-of-interest',\n  property: 'hotel',\n};\n","import { ComboboxOption } from '@headlessui/react';\nimport type { FormInputBase } from '@dx-ui/osc-form';\nimport type {\n  LocationTypes,\n  PlacesAutocompleteSuggestion,\n} from '@dx-ui/framework-places-autocomplete';\nimport { LocationIcons } from './icons.constant';\nimport Icon from '@dx-ui/osc-icon';\n\ntype PlacesAutoCompleteSuggestionOptions = FormInputBase<\n  Omit<React.HTMLAttributes<HTMLInputElement>, 'value' | 'onSelect'>\n>;\n\nconst PlacesAutoCompleteSuggestionOptions = ({\n  suggestions,\n  header = '',\n}: {\n  header?: string;\n  suggestions?: PlacesAutocompleteSuggestion[];\n}) => {\n  if (!suggestions) return null;\n  return (\n    <div>\n      {suggestions.map((suggestion, index: number) => {\n        return (\n          <ComboboxOption\n            key={suggestion.description}\n            value={suggestion.description}\n            className=\"data-[focus]:bg-bg-primary data-[selected]:bg-bg-alt highlighted:bg-bg-alt cursor-pointer px-4 py-2\"\n            aria-setsize={suggestions.length}\n            aria-posinset={index + 1}\n            data-testid={header ? header : undefined}\n          >\n            <AutoCompleteSuggestionOptionsWrapper\n              iconType={suggestion?.type}\n              header={header && !!suggestions.length && index === 0 ? header : undefined}\n            >\n              <>\n                <span className=\"text-base\" data-testid=\"autocomplete-text\">\n                  {suggestion.formattedSuggestion.mainText}\n                </span>\n                <span className=\"text-text-alt text-xs\">\n                  {suggestion.formattedSuggestion.secondaryText}\n                </span>\n              </>\n            </AutoCompleteSuggestionOptionsWrapper>\n          </ComboboxOption>\n        );\n      })}\n    </div>\n  );\n};\n\nconst AutoCompleteSuggestionOptionsWrapper = ({\n  header,\n  iconType,\n  children,\n}: {\n  header?: string;\n  iconType?: string;\n  children: React.ReactNode;\n}) => {\n  const locationIconName =\n    iconType && iconType in LocationIcons ? LocationIcons[iconType as LocationTypes] : 'location';\n  return (\n    <>\n      {header ? (\n        <div className=\"flex min-w-[226px] pb-2 pr-1 ltr:text-left rtl:ps-2\">\n          <span className=\"text-text-alt\">{header}</span>\n        </div>\n      ) : null}\n      <div className=\"flex min-w-[226px]\">\n        <div className=\"flex shrink-0 justify-center\" aria-hidden>\n          <Icon name={locationIconName} size=\"lg\" />\n        </div>\n        <div className=\"flex flex-col ps-2 ltr:text-left\">{children}</div>\n      </div>\n    </>\n  );\n};\n\nexport { PlacesAutoCompleteSuggestionOptions, AutoCompleteSuggestionOptionsWrapper };\nexport default PlacesAutoCompleteSuggestionOptions;\n","import type { FormInputBase } from '@dx-ui/osc-form';\nimport type * as React from 'react';\nimport { useRecentSearches } from './location-options-utils';\nimport type { PlacesAutocompleteSuggestion } from '@dx-ui/framework-places-autocomplete';\nimport PlacesAutoCompleteSuggestionOptions from '../autoComplete-suggestion-options';\nimport { useTranslation } from 'next-i18next';\n\ntype LocationPopularDestinationsOption = FormInputBase<\n  Omit<React.HTMLAttributes<HTMLInputElement>, 'value' | 'onSelect'>\n>;\n\nconst LocationPopularDestinationsOption = ({\n  isNearByEnabled,\n  popularDestinations,\n  popularDestinationsCount = 5,\n  showRecentDestinations = false,\n}: {\n  isNearByEnabled?: boolean;\n  popularDestinations?: PlacesAutocompleteSuggestion[];\n  popularDestinationsCount?: number;\n  showRecentDestinations?: boolean;\n}) => {\n  const { t } = useTranslation('osc-location');\n  const cachedRecentSearches = useRecentSearches();\n\n  const displayCount = isNearByEnabled ? 3 : popularDestinationsCount;\n\n  const popularDestinationsOptions = popularDestinations?.slice(\n    0,\n    displayCount\n  ) as unknown as PlacesAutocompleteSuggestion[];\n  const recentSearchOptions = showRecentDestinations ? cachedRecentSearches : [];\n  const showPopularDestinations = !(!!showRecentDestinations && recentSearchOptions?.length);\n\n  return showPopularDestinations ? (\n    <PlacesAutoCompleteSuggestionOptions\n      header={t('optionsHeader.popularDestinations')}\n      suggestions={popularDestinationsOptions}\n    />\n  ) : null;\n};\n\nexport { LocationPopularDestinationsOption };\nexport default LocationPopularDestinationsOption;\n","import type { FormInputBase } from '@dx-ui/osc-form';\nimport type * as React from 'react';\nimport { useRecentSearches } from './location-options-utils';\nimport { PlacesAutoCompleteSuggestionOptions } from '../autoComplete-suggestion-options';\nimport { useTranslation } from 'next-i18next';\n\ntype LocationRecentSearchesOption = FormInputBase<\n  Omit<React.HTMLAttributes<HTMLInputElement>, 'value' | 'onSelect'>\n>;\n\nconst LocationRecentSearchesOption = ({ isNearByEnabled }: { isNearByEnabled?: boolean }) => {\n  const { t } = useTranslation('osc-location');\n\n  const [recentSearchOptions] = useRecentSearches();\n  const displayCount = isNearByEnabled ? 3 : 5;\n  const recentSearches = recentSearchOptions?.slice(0, displayCount);\n\n  return (\n    <PlacesAutoCompleteSuggestionOptions\n      header={t('optionsHeader.recentSearches')}\n      suggestions={recentSearches}\n    />\n  );\n};\n\nexport { LocationRecentSearchesOption };\nexport default LocationRecentSearchesOption;\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 GetTranslateAutocompleteConfigDocument = {\n  operationName: 'featureConfigs',\n  operationString: `query featureConfigs {\n  featureConfigs(names: [\"config-ui-translate-autocomplete\"]) {\n    config\n    name\n  }\n}`,\n  originalOpName: 'getTranslateAutocompleteConfig',\n};\nexport function useGetTranslateAutocompleteConfigQuery<\n  TData = Types.GetTranslateAutocompleteConfigQuery,\n  TError = DXError\n>(\n  variables?: Types.GetTranslateAutocompleteConfigQueryVariables,\n  options?: Omit<\n    UseQueryOptions<Types.GetTranslateAutocompleteConfigQuery, TError, TData>,\n    'queryKey'\n  >\n) {\n  return useQuery<Types.GetTranslateAutocompleteConfigQuery, TError, TData>({\n    queryKey: [GetTranslateAutocompleteConfigDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGetTranslateAutocompleteConfigQuery(\n  queryClient: QueryClient,\n  variables?: Types.GetTranslateAutocompleteConfigQueryVariables,\n  options?: FetchQueryOptions<Types.GetTranslateAutocompleteConfigQuery>\n) {\n  return queryClient.fetchQuery<Types.GetTranslateAutocompleteConfigQuery>({\n    queryKey: [GetTranslateAutocompleteConfigDocument, variables],\n    ...options,\n  });\n}\n\nexport const GeocodeCoordinateDocument = {\n  operationName: 'geocode',\n  operationString: `query geocode($location: GeocodeCoordinateInput, $language: String!, $sessionToken: String) {\n  geocode(language: $language, location: $location, sessionToken: $sessionToken) {\n    match {\n      address {\n        city\n        country\n        stateName\n      }\n    }\n  }\n}`,\n  originalOpName: 'geocodeCoordinate',\n};\nexport function useGeocodeCoordinateQuery<TData = Types.GeocodeCoordinateQuery, TError = DXError>(\n  variables: Types.GeocodeCoordinateQueryVariables,\n  options?: Omit<UseQueryOptions<Types.GeocodeCoordinateQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.GeocodeCoordinateQuery, TError, TData>({\n    queryKey: [GeocodeCoordinateDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGeocodeCoordinateQuery(\n  queryClient: QueryClient,\n  variables: Types.GeocodeCoordinateQueryVariables,\n  options?: FetchQueryOptions<Types.GeocodeCoordinateQuery>\n) {\n  return queryClient.fetchQuery<Types.GeocodeCoordinateQuery>({\n    queryKey: [GeocodeCoordinateDocument, variables],\n    ...options,\n  });\n}\n","import * as React from 'react';\nimport { Controller, get, useFormContext, useFormState, useWatch } from 'react-hook-form';\nimport { Combobox, ComboboxInput, ComboboxOptions, Field } from '@headlessui/react';\nimport type { FormInputBase } from '@dx-ui/osc-form';\nimport { useTranslation } from 'next-i18next';\nimport { useSuggestions } from '@dx-ui/framework-places-autocomplete';\nimport { FormError, FormLabel } from '@dx-ui/osc-form';\nimport { Spinner } from '@dx-ui/osc-spinner';\nimport cx from 'classnames';\nimport HotelsNearMeOption from './location-options/hotels-near-me-option';\nimport type {\n  PredictionService,\n  AutocompletePrediction,\n  PredictionStatusTypes,\n  PlacesAutocompleteSuggestion,\n} from '@dx-ui/framework-places-autocomplete';\nimport PopularDestinationsOptions from './location-options/popular-destinations';\nimport RecentSearchesOptions from './location-options/recent-searches';\nimport {\n  sanitizePlacesAutocompleteSuggestions,\n  useRecentSearches,\n} from './location-options/location-options-utils';\nimport PlacesAutoCompleteSuggestionOptions, {\n  AutoCompleteSuggestionOptionsWrapper,\n} from './autoComplete-suggestion-options';\nimport { useGeocodeCoordinateQuery } from './gql/queries';\n\ntype BaseLocationInputOptions = FormInputBase<\n  Omit<React.ComponentProps<'input'>, 'value' | 'onSelect'>\n>;\n\nexport interface LocationInput extends BaseLocationInputOptions {\n  /** minimum length to trigger a search */\n  autoCompleteLength?: number;\n  /** Set the lat/long bias for this search.\n   * PredictionService [coordinate](/?path=/docs/library-framework-places-autocomplete--page)\n   */\n  coordinate?: PredictionService['coordinate'];\n  /** Flag to ensure hotels near `coordinates` provided are displayed */\n  enableHotelsNearMe?: boolean;\n  /** language value passed from router */\n  language: string;\n  /** Flag to ensure recent searches are displayed */\n  enableRecentSearches?: boolean;\n  /** Need to provide context */\n  placeIdFieldName?: string;\n  /** List of predictions that are returned from the service */\n  predictions: AutocompletePrediction[] | null;\n  /**  popular destinations options */\n  popularDestinationOptions?: PlacesAutocompleteSuggestion[] | null;\n  /** Whether this input field is required */\n  required?: HTMLInputElement['required'];\n  /** Provide the sessionId to use with this search.\n   * PredictionService [sessionId](/?path=/docs/library-framework-places-autocomplete--page)\n   */\n  sessionId?: PredictionService['sessionId'];\n  status: PredictionStatusTypes | null;\n  checkAutocompleteStatus?: boolean;\n}\n\nconst isHandheld = (userAgent: string): boolean => {\n  return /mobile|tablet|ipad|android/i.test(userAgent);\n};\n\nexport const LocationInput: React.FC<React.PropsWithChildren<LocationInput>> = ({\n  coordinate,\n  enableHotelsNearMe = false,\n  enableRecentSearches = false,\n  name,\n  predictions,\n  required,\n  optional,\n  loading,\n  label,\n  labelClassName,\n  language,\n  className,\n  registerOptions,\n  sessionId,\n  autoCompleteLength = 2,\n  placeIdFieldName = 'placeId',\n  status,\n  checkAutocompleteStatus = true,\n  popularDestinationOptions,\n  ...rest\n}) => {\n  const { t } = useTranslation('osc-location');\n  const errorId = `input-error-location`;\n  const {\n    getFieldState,\n    control,\n    setValue,\n    trigger,\n    formState: { errors },\n  } = useFormContext();\n\n  const [currentSuggestion, setCurrentSuggestion] =\n    React.useState<PlacesAutocompleteSuggestion | null>(null);\n  const [recentSearches, setRecentSearches] = useRecentSearches();\n  const { isSubmitting } = useFormState();\n\n  React.useEffect(() => {\n    if (isSubmitting && currentSuggestion) {\n      setRecentSearches((recentSearches) =>\n        sanitizePlacesAutocompleteSuggestions([currentSuggestion, ...recentSearches])\n      );\n    }\n  }, [currentSuggestion, isSubmitting, setRecentSearches]);\n\n  const [showAriaLabel, setShowAriaLabel] = React.useState(false);\n  const { suggestions } = useSuggestions({ predictions });\n  const inputName = name;\n  const inputValue = useWatch({ control, name });\n  const fieldError = get(errors, name);\n  const hasError = !!fieldError;\n  const hasSearchTerm = !!inputValue && inputValue.length >= autoCompleteLength;\n  const hasSuggestions = suggestions.length > 0;\n  const autoCompleteSelectionRequired = status === 'SELECTION_REQUIRED' && checkAutocompleteStatus;\n\n  const { data, isFetching: isGeoCodeFetching } = useGeocodeCoordinateQuery(\n    { language, location: coordinate, sessionToken: sessionId },\n    { enabled: !!coordinate && enableHotelsNearMe }\n  );\n\n  const geocodeData = data?.geocode;\n  const enablePopularDestinations = !!popularDestinationOptions;\n  const isPlacesAutocompleteSuggestions = !(\n    enableHotelsNearMe ||\n    enablePopularDestinations ||\n    enableRecentSearches\n  );\n  const [showSuggestions, setShowSuggestions] = React.useState(!isPlacesAutocompleteSuggestions);\n  const onKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key !== 'Enter') {\n      const hideSuggestions = isPlacesAutocompleteSuggestions && !hasSearchTerm;\n      setShowSuggestions(!hideSuggestions);\n    }\n    //When customer freeform types still check autocomplete results to see whether a valid placeId is found\n    setValue(\n      placeIdFieldName,\n      suggestions.find((suggestion) => suggestion.description === e.currentTarget.value)?.placeId ||\n        ''\n    );\n  };\n\n  const showHotelsNearMe = !!(enableHotelsNearMe && !hasSearchTerm && geocodeData);\n  const showPopularDestinations = enablePopularDestinations && !hasSearchTerm;\n  const showRecentSearches = enableRecentSearches && !hasSearchTerm && recentSearches.length > 0;\n\n  const showAutoCompleteSuggestions = !(\n    showHotelsNearMe ||\n    showPopularDestinations ||\n    showRecentSearches\n  );\n  const showSuggestionsPopover =\n    showSuggestions || showHotelsNearMe || showPopularDestinations || showRecentSearches;\n  const showSuggestionOptions =\n    showSuggestions &&\n    (hasSuggestions || showHotelsNearMe || showPopularDestinations || showRecentSearches);\n\n  const onSelect = async (selectValue: string) => {\n    setValue(inputName, selectValue);\n    const selectedSuggestion = getSelectedSuggestion(selectValue);\n\n    setValue(placeIdFieldName, selectedSuggestion?.placeId ?? '');\n    setShowSuggestions(false);\n    if (enableRecentSearches && selectedSuggestion) {\n      setCurrentSuggestion(selectedSuggestion);\n    }\n    await trigger(inputName);\n\n    if (autoCompleteSelectionRequired) await trigger(inputName);\n  };\n\n  const onFocus = () => {\n    if (isPlacesAutocompleteSuggestions && !hasSearchTerm) {\n      setShowSuggestions(false);\n    } else {\n      const locationFieldState = getFieldState(name);\n      const locationFieldError = !!locationFieldState?.error?.message;\n      if (locationFieldError) setShowSuggestions(false);\n    }\n    setShowAriaLabel(true);\n  };\n\n  const getSelectedSuggestion = (selectValue: string) => {\n    if (showRecentSearches && recentSearches?.length) {\n      return recentSearches.find((suggestion) => suggestion.description === selectValue);\n    } else if (showPopularDestinations) {\n      return popularDestinationOptions?.find(\n        (suggestion) => suggestion?.description === selectValue\n      );\n    } else return suggestions?.find((suggestion) => suggestion.description === selectValue);\n  };\n\n  const getAriaText = () => {\n    if (!hasSearchTerm || !showAriaLabel) {\n      return '';\n    }\n    switch (true) {\n      case loading:\n        return t('loading');\n      case autoCompleteSelectionRequired && hasSuggestions:\n        return t('ariaSuggestionRequired', {\n          drawBridgeNotification: t('drawBridgeSelect'),\n          ariaSuggestions: t('ariaSuggestions', { count: suggestions.length }),\n        });\n      case hasSuggestions:\n        return t('ariaSuggestions', { count: suggestions.length });\n      case autoCompleteSelectionRequired && !hasSuggestions:\n        return t('drawBridgeNoResults');\n      default:\n        return t('noSuggestions');\n    }\n  };\n\n  const validatePredictions = (value: string) => {\n    const isValidPrediction = suggestions.some((suggestion) => suggestion.description === value);\n    return isValidPrediction || t('selectSuggestion');\n  };\n\n  // HACK: Temporarily switch ComboboxInput to uncontrolled while isComposing is true\n  // to prevent selections from an Input Method Editor (IME) on mobile from being appended to\n  // the text input instead of replaced.\n  const isComposing = React.useRef(false);\n  const isMobileIME =\n    (language === 'ja' || /^zh.*/.test(language)) &&\n    typeof navigator !== 'undefined' &&\n    isHandheld(navigator.userAgent);\n  const handleCompositionEnd = () => {\n    isComposing.current = false;\n  };\n  const handleCompositionStart = () => {\n    isComposing.current = true;\n  };\n  const openOnFocus = !isPlacesAutocompleteSuggestions && !hasError;\n\n  const comboboxInputValue = inputValue || '';\n\n  return (\n    <div className=\"relative w-full\" data-osc-product=\"shop-form-location\">\n      <Controller\n        name={inputName}\n        control={control}\n        rules={{\n          ...registerOptions,\n          required: required && !autoCompleteSelectionRequired ? t('validation') : false,\n          validate:\n            (autoCompleteSelectionRequired && validatePredictions) || registerOptions?.validate,\n          onBlur: () => setShowAriaLabel(false),\n        }}\n        render={({ field }) => {\n          return (\n            <Field>\n              <FormLabel\n                label={label}\n                required={required}\n                optional={optional}\n                hasError={hasError}\n                className={cx('brand-ey:font-normal brand-lx:font-semibold w-full', labelClassName)}\n                htmlFor=\"location-input\"\n              />\n              <Combobox\n                name=\"location\"\n                value={isMobileIME && isComposing.current ? undefined : comboboxInputValue}\n                immediate={openOnFocus}\n                onChange={onSelect}\n              >\n                <ComboboxInput\n                  {...field}\n                  {...rest}\n                  ref={field.ref as React.Ref<HTMLInputElement>}\n                  id=\"location-input\"\n                  displayValue={isMobileIME && isComposing.current ? undefined : comboboxInputValue}\n                  className={cx(\n                    'form-input brand-ey:border-primary-alt brand-lx:bg-bg-light brand-lx:border-primary brand-lx:placeholder:text-text brand-ou:bg-transparent brand-ou:border-primary w-full',\n                    className,\n                    {\n                      'form-error': hasError,\n                    }\n                  )}\n                  onKeyUp={onKeyUp}\n                  onFocus={onFocus}\n                  onCompositionEnd={handleCompositionEnd}\n                  onCompositionStart={handleCompositionStart}\n                  autoComplete=\"off\"\n                  autoCorrect=\"off\"\n                  autoCapitalize=\"off\"\n                  spellCheck={false}\n                  aria-label={t('ariaInput', { label })}\n                  aria-invalid={hasError}\n                  aria-describedby={errorId}\n                  data-osc-product=\"shop-form-location-input\"\n                  required={required}\n                />\n                <ComboboxOptions\n                  // This prevents headlessui-react from adding aria-hidden to sibling elements when Combobox is active. That behavior was causing jest tests to fail.\n                  modal={false}\n                  className={cx(\n                    'text-text bg-bg border-border absolute z-50 transform-gpu rounded border border-solid text-sm font-normal shadow-lg',\n                    { hidden: !showSuggestionsPopover }\n                  )}\n                >\n                  {autoCompleteSelectionRequired ? (\n                    <div className=\"bg-warn-alt px-4 py-2\">\n                      <AutoCompleteSuggestionOptionsWrapper iconType=\"alert\">\n                        <span className=\"text-base font-bold\" aria-hidden>\n                          {hasSuggestions ? t('drawBridgeSelect') : t('drawBridgeNoResults')}\n                        </span>\n                      </AutoCompleteSuggestionOptionsWrapper>\n                    </div>\n                  ) : null}\n\n                  {showSuggestionOptions ? (\n                    <>\n                      {showHotelsNearMe && !isGeoCodeFetching ? (\n                        <HotelsNearMeOption\n                          geocodeData={geocodeData}\n                          key={`hotels-nearby-${!!geocodeData}`}\n                        />\n                      ) : null}\n                      {showPopularDestinations ? (\n                        <PopularDestinationsOptions\n                          isNearByEnabled={showHotelsNearMe}\n                          popularDestinations={popularDestinationOptions}\n                          showRecentDestinations={showRecentSearches}\n                        />\n                      ) : null}\n                      {showRecentSearches ? (\n                        <RecentSearchesOptions isNearByEnabled={showHotelsNearMe} />\n                      ) : null}\n                      {showAutoCompleteSuggestions ? (\n                        <PlacesAutoCompleteSuggestionOptions suggestions={suggestions} />\n                      ) : null}\n                    </>\n                  ) : !hasSuggestions && !hasError ? (\n                    <div className=\"p-3\" aria-hidden>\n                      {loading ? <Spinner size=\"md\" delay={0} /> : t('noSuggestions')}\n                    </div>\n                  ) : null}\n                </ComboboxOptions>\n              </Combobox>\n            </Field>\n          );\n        }}\n      />\n      <p className=\"sr-only\" aria-live=\"assertive\">\n        {getAriaText()}\n      </p>\n      <FormError id={errorId} error={hasError && fieldError} className=\"lg:absolute\" />\n    </div>\n  );\n};\n\nLocationInput.displayName = 'LocationInput';\n\nexport default LocationInput;\n","import { useFormContext, useWatch } from 'react-hook-form';\nimport { LocationInput } from './location.input';\nimport type { PredictionService } from '@dx-ui/framework-places-autocomplete';\nimport { usePlacesAutocomplete } from '@dx-ui/framework-places-autocomplete';\nimport { useDebounceValue } from 'usehooks-ts';\nimport { useGetTranslateAutocompleteConfigQuery } from './gql/queries';\n\nexport type Location = Omit<LocationInput, 'predictions' | 'status'> & {\n  autocompleteUri?: PredictionService['uri'];\n  type?: PredictionService['type'];\n  count?: PredictionService['count'];\n  enableRecentSearches?: boolean;\n  assetsUrl?: string;\n  applyExclusions?: boolean;\n};\n\n/**\n * Location is an optional component that may be consumed either standalone or as part of the newer [composable shop form component](?path=/docs/library-products-shop-form--default-story).\n */\nexport const Location: React.FC<React.PropsWithChildren<Location>> = ({\n  coordinate,\n  type,\n  count,\n  sessionId,\n  label,\n  language,\n  applyExclusions,\n  name = 'query',\n  autocompleteUri = '/dx-customer/autocomplete',\n  autoCompleteLength = 2,\n  ...rest\n}) => {\n  const { control } = useFormContext();\n  const inputValue = useWatch({ control, name });\n\n  const [debouncedInputValue] = useDebounceValue<string>(inputValue, 300);\n  const enablePlacesAutoComplete =\n    !!debouncedInputValue && debouncedInputValue.length >= autoCompleteLength;\n  const { data, isFetched: IsTranslateAutocompleteResolved } =\n    useGetTranslateAutocompleteConfigQuery();\n  const configLanguages = data?.featureConfigs?.[0]?.config?.languages;\n  const isSupportedLanguage =\n    IsTranslateAutocompleteResolved &&\n    !!configLanguages?.length &&\n    configLanguages.includes(language);\n\n  const { loading, predictions, status } = usePlacesAutocomplete({\n    isEnabled: enablePlacesAutoComplete && IsTranslateAutocompleteResolved,\n    minLength: autoCompleteLength,\n    serviceOptions: {\n      coordinate,\n      uri: autocompleteUri,\n      input: debouncedInputValue,\n      type,\n      applyExclusions,\n      count,\n      language: isSupportedLanguage ? language : 'en',\n      sessionId,\n    },\n  });\n\n  return (\n    <LocationInput\n      coordinate={coordinate}\n      name={name}\n      predictions={predictions}\n      loading={loading}\n      status={status}\n      label={label}\n      language={language}\n      autoCompleteLength={autoCompleteLength}\n      sessionId={sessionId}\n      {...rest}\n    />\n  );\n};\n\nLocation.displayName = 'Location';\nexport default Location;\n","export * from './lib/location';\nexport * from './lib/location-options/hotels-near-me-option';\nexport * from './lib/location.input';\nexport * from './lib/gql/types';\nexport * from './lib/gql/queries';\nexport * from './lib/location-options/location-options-utils';\n","export const NHCSEARCH_4807 = 'NHCSEARCH-4807-improve-dateless-search';\nexport const DISABLE_AARP_SPECIAL_RATES = 'aarp-special-rate-toggle';\n","import type { FormDataValues, FormDefaultValues, TargetOHWPage } from './shop-form';\nimport type {\n  BrandCode,\n  LocationUrlParams,\n  SortByValues,\n  TripAdvisorRatings,\n  MapLanguage,\n  Path,\n} from '@dx-ui/framework-uri-builder';\nimport { searchUriBuilder, bookUriBuilder, locationUriBuilder } from '@dx-ui/framework-uri-builder';\nimport { DEFAULT_FORM_VALUES } from './shop-form.constants';\nimport merge from 'lodash/merge';\nimport { differenceInDays, startOfDay } from 'date-fns';\nimport type { GeocodeQuery } from './gql/types';\nimport type { SpecialRates } from '@dx-ui/osc-special-rates';\nimport {\n  isTMTPRateSelected,\n  isHGVMax,\n  isHGVMaxRateSelected,\n  isOwner,\n  isTeamMember,\n  isFriendsAndFamily,\n  isTMTPProgramMember,\n} from '@dx-ui/osc-special-rates';\nimport type { QueryClient } from '@tanstack/react-query';\nimport {\n  getSpeedBumpFeatureConfig,\n  GetSpeedBumpFeatureConfigsDocument,\n  type GetSpeedBumpFeatureConfigsQuery,\n} from '@dx-ui/osc-speedbump';\nimport { FeatureTogglesDocument, serverSideFeatureTogglesQuery } from './gql/queries';\nimport {\n  GetTranslateAutocompleteConfigDocument,\n  serverSideGetTranslateAutocompleteConfigQuery,\n} from '@dx-ui/osc-location';\nimport { DISABLE_AARP_SPECIAL_RATES, NHCSEARCH_4807 } from './constants/featureToggles';\n\nexport const RatePlanCodes = {\n  GOVERNMENT_MILITARY: 'GDSGOV',\n  AARP: 'HCARP',\n  SENIOR: 'GDSSNR',\n  AAA: 'HCAAA',\n  USE_POINTS: 'HCSMR',\n} as const;\n\nexport const getSearchPath = (\n  data: Partial<FormDataValues>,\n  targetOHWPage: Omit<TargetOHWPage, 'book' | 'ten-plus-book'>\n): Path => {\n  if (isTMTPRateSelected(data?.specialRates) && isTMTPProgramMember(data.hhonors)) {\n    if (targetOHWPage === 'search') {\n      return 'go-hilton';\n    } else if (targetOHWPage === 'search-zero') {\n      return 'go-hilton-find-hotels';\n    }\n  } else if (isHGVMax(data.hhonors) && isHGVMaxRateSelected(data?.specialRates)) {\n    if (targetOHWPage === 'search') {\n      return 'hgv-max';\n    } else if (isHGVMax(data.hhonors) && targetOHWPage === 'search-zero') {\n      return 'hgv-max-find-hotels';\n    }\n  } else if (targetOHWPage === 'search') {\n    return 'search';\n  } else if (targetOHWPage === 'ten-plus-search') {\n    return 'group-search';\n  }\n  return 'find-hotels';\n};\n\n/** This must be updated along with the additionalQSParameterKeys array below */\nexport type AdditionalQSParameters = {\n  adjoiningRoomStay?: boolean;\n  availableHotelsOnly?: boolean;\n  brandCode?: string;\n  content?: string;\n  displayCurrency?: string;\n  fromId?: string;\n  f_attributeIds?: string[];\n  f_amenityIds?: string[];\n  f_brandCodes?: string[];\n  f_price?: [number, number];\n  f_tripAdvisorRatings?: TripAdvisorRatings;\n  maxPoints?: number;\n  requestedRatesOnly?: boolean;\n  sortBy?: SortByValues;\n  specPlan?: string[];\n  specialRatesTokens?: string;\n  redeemPts?: boolean;\n  token?: string[];\n  cid?: string;\n};\n\n/** This must be updated along with the AdditionalQSParameters type above */\nexport const additionalQSParameterKeys: Array<keyof AdditionalQSParameters> = [\n  'adjoiningRoomStay',\n  'availableHotelsOnly',\n  'brandCode',\n  'cid',\n  'content',\n  'displayCurrency',\n  'f_amenityIds',\n  'f_attributeIds',\n  'f_brandCodes',\n  'f_price',\n  'f_tripAdvisorRatings',\n  'fromId',\n  'maxPoints',\n  'redeemPts',\n  'requestedRatesOnly',\n  'sortBy',\n  'specPlan',\n  'specialRatesTokens',\n  'token',\n];\n\nexport function isAdditionalQsParameterKey(\n  someString: string\n): someString is keyof AdditionalQSParameters {\n  return Boolean(additionalQSParameterKeys.find((key) => someString === key));\n}\n\nconst getNumRooms = (numRooms?: number | null) => {\n  return numRooms == null || isNaN(numRooms) ? null : numRooms;\n};\n\nexport const generateShopFormUrl = async ({\n  additionalQSParameters,\n  formData,\n  disableAARPSpecialRates,\n  locale,\n  targetOHWPage,\n  enableDatesFlexDreamRouting = false,\n  geocodeData,\n  client,\n}: {\n  additionalQSParameters?: AdditionalQSParameters;\n  formData: Partial<FormDataValues>;\n  disableAARPSpecialRates: boolean | undefined;\n  locale: string;\n  targetOHWPage: TargetOHWPage;\n  enableDatesFlexDreamRouting?: boolean;\n  geocodeData?: GeocodeQuery;\n  client?: QueryClient;\n}) => {\n  const token = additionalQSParameters?.token;\n  /** If enableDatesFlexDreamRouting enabled, route user to locations result page\n   * if not using special rates beside points,\n   *  date range is within 30 days of today and language is English.\n   * If geocode fails for dream routing, fallback to default routing.\n   */\n  const flexDatesDreamRouting = isflexDatesDreamRouting({\n    data: formData,\n    target: targetOHWPage,\n    enableDreamRouting: enableDatesFlexDreamRouting,\n    geocodeData,\n  });\n\n  /** OHW Search URL generation */\n\n  //if flexdates dream redirect enabled and conditions met, return dream URL\n  if (flexDatesDreamRouting) {\n    return await generateFlexDatesDreamRedirectURL({\n      formData,\n      language: locale,\n      additionalQSParameters,\n      geocodeData,\n      client,\n    });\n  }\n  if (\n    targetOHWPage === 'search' ||\n    targetOHWPage === 'search-zero' ||\n    targetOHWPage === 'ten-plus-search'\n  ) {\n    const brandCodeParam = additionalQSParameters?.brandCode as keyof BrandCode;\n    return searchUriBuilder({\n      brandCode: brandCodeParam ?? (formData.brandCode as keyof BrandCode),\n      locale: locale as MapLanguage,\n      path: getSearchPath(formData, targetOHWPage),\n      relative: true,\n      urlParams: {\n        adjoiningRoomStay: additionalQSParameters?.adjoiningRoomStay,\n        content: additionalQSParameters?.content,\n        dates: {\n          arrivalDate: formData?.dates?.arrivalDate,\n          departureDate: formData?.dates?.departureDate,\n          flexibleDates: formData?.dates?.datesFlex,\n        },\n        displayCurrency: additionalQSParameters?.displayCurrency,\n        placeId: formData?.placeId,\n        query: formData?.query,\n        maxPoints: formData?.specialRates?.redeemPts ? additionalQSParameters?.maxPoints : null,\n        numAttendees: formData?.attendee_count,\n        availableHotelsOnly: additionalQSParameters?.availableHotelsOnly,\n        f_amenityIds: additionalQSParameters?.f_amenityIds,\n        f_attributeIds: additionalQSParameters?.f_attributeIds,\n        f_brandCodes: additionalQSParameters?.f_brandCodes,\n        f_price: additionalQSParameters?.f_price,\n        f_tripAdvisorRatings: additionalQSParameters?.f_tripAdvisorRatings,\n        sortBy: additionalQSParameters?.sortBy,\n        //if on a 10+ search uri or numRooms is provided with a value less than 10, consume numRooms. Otherwise consume length of rooms array from rooms modal sub component\n        numRooms:\n          targetOHWPage === 'ten-plus-search' || (formData?.numRooms && formData?.numRooms < 10)\n            ? formData?.numRooms\n            : formData?.rooms?.length,\n        rates: {\n          aarp: disableAARPSpecialRates ? undefined : formData?.specialRates?.aarpRate,\n          corporateAccount: formData?.specialRates?.corporateCode,\n          employeeRate: formData?.specialRates?.employeeRate,\n          friendsAndFamilyRate: formData?.specialRates?.friendsAndFamilyRate,\n          fromId: additionalQSParameters?.fromId,\n          government: formData?.specialRates?.governmentOrMilitaryRate,\n          groupCode: formData?.specialRates?.groupCode,\n          offerId: formData?.specialRates?.useOfferId ? formData?.specialRates?.offerId?.id : null,\n          ownerHGVRate: formData?.specialRates?.ownerHGVRate,\n          ownerVIPRate: formData?.specialRates?.ownerVIPRate,\n          pnd: formData?.specialRates?.usePnd ? formData?.specialRates?.pnd?.pnd : null,\n          promoCode: formData?.specialRates?.promoCode,\n          requestedRatesOnly: additionalQSParameters?.requestedRatesOnly,\n          senior: formData?.specialRates?.seniorRate,\n          smbRate: formData?.specialRates?.smbRate,\n          travelAgents: formData?.specialRates?.travelAgentRate,\n          tripleA: formData?.specialRates?.aaaRate,\n          spec_plan: additionalQSParameters?.specPlan?.join(','),\n          //TODO PAUL. THIS LOGIC MAKES NO SENSE. IF CUSTOMER SAYS USEPOINTS IS FALSE BUT I HAVE A TOKEN I IGNORE IT?\n          usePoints:\n            token?.includes(RatePlanCodes.USE_POINTS) ||\n            formData?.specialRates?.redeemPts ||\n            additionalQSParameters?.redeemPts,\n        },\n        rooms: formData?.rooms,\n        sessionToken: formData?.sessionToken,\n        specialRateTokens: additionalQSParameters?.specialRatesTokens?.split(','),\n        cid: additionalQSParameters?.cid,\n      },\n    });\n  }\n\n  //TODO talk to kevin\n  /** OHW Book URL Generation */\n  return bookUriBuilder({\n    locale: locale as MapLanguage,\n    page: formData?.dates?.datesFlex ? 'flexibledates' : 'rooms',\n    relative: true,\n    urlParams: {\n      additionalQS: {\n        displayCurrency: additionalQSParameters?.displayCurrency,\n        requestedRatesOnly: additionalQSParameters?.requestedRatesOnly,\n        spec_plan: additionalQSParameters?.specPlan?.join(','),\n        specialRateTokens: additionalQSParameters?.specialRatesTokens,\n        srpName: additionalQSParameters?.specialRatesTokens,\n      },\n      adjoiningRoomStay: additionalQSParameters?.adjoiningRoomStay,\n      ctyhocn: formData.query || '',\n      dates: {\n        arrivalDate: formData?.dates?.arrivalDate,\n        departureDate: formData?.dates?.departureDate,\n        flexibleDates: formData?.dates?.datesFlex,\n      },\n      rates: {\n        aaaRate: formData?.specialRates?.aaaRate,\n        aarpRate: disableAARPSpecialRates ? undefined : formData?.specialRates?.aarpRate,\n        corporateCode: formData?.specialRates?.corporateCode,\n        employeeRate: formData?.specialRates?.employeeRate,\n        friendsAndFamilyRate: formData?.specialRates?.friendsAndFamilyRate,\n        fromId: additionalQSParameters?.fromId,\n        governmentRate: formData?.specialRates?.governmentOrMilitaryRate,\n        groupCode: formData?.specialRates?.groupCode,\n        offerId: formData?.specialRates?.offerId?.id,\n        ownerHGVRate: formData?.specialRates?.ownerHGVRate,\n        ownerVIPRate: formData?.specialRates?.ownerVIPRate,\n        pnd: formData?.specialRates?.pnd?.pnd,\n        promotionCode: formData?.specialRates?.promoCode,\n        redeemPts: formData?.specialRates?.redeemPts,\n        seniorRate: formData?.specialRates?.seniorRate,\n        smbRate: formData?.specialRates?.smbRate,\n        travelAgent: formData?.specialRates?.travelAgentRate,\n        travelAgentId: formData?.specialRates?.travelAgentId,\n      },\n      rooms: formData?.rooms,\n      numRooms: getNumRooms(formData.numRooms),\n      numAttendees: formData?.numAttendees,\n    },\n  });\n};\n\nexport const generateSanitizedDefaultValues = (defaultValues?: FormDefaultValues) => {\n  const initialValues: FormDataValues = merge({}, DEFAULT_FORM_VALUES, defaultValues);\n\n  if (initialValues?.dates?.arrivalDate) {\n    initialValues.dates.arrivalDate = startOfDay(initialValues.dates.arrivalDate);\n  }\n  if (initialValues?.dates?.departureDate) {\n    initialValues.dates.departureDate = startOfDay(initialValues.dates.departureDate);\n  }\n\n  //clear HGV rate is user not eligible\n  if (!isHGVMax(initialValues?.hhonors)) {\n    initialValues['specialRates']['ownerHGVRate'] = false;\n  }\n\n  //clear tmtp rates if user is not eligible\n  if (!isOwner(initialValues?.hhonors)) {\n    if (isTeamMember(initialValues?.hhonors)) {\n      initialValues['specialRates']['ownerVIPRate'] = false;\n    } else if (isFriendsAndFamily(initialValues?.hhonors)) {\n      initialValues['specialRates']['ownerVIPRate'] = false;\n      initialValues['specialRates']['employeeRate'] = false;\n    } else {\n      initialValues['specialRates']['ownerVIPRate'] = false;\n      initialValues['specialRates']['employeeRate'] = false;\n      initialValues['specialRates']['friendsAndFamilyRate'] = false;\n    }\n  }\n\n  return initialValues;\n};\n\nexport const isflexDatesDreamRouting = ({\n  data,\n  target,\n  enableDreamRouting,\n  geocodeData,\n}: {\n  data: Partial<FormDataValues>;\n  target: string;\n  enableDreamRouting?: boolean;\n  geocodeData?: GeocodeQuery;\n}) => {\n  const noSpecialRatesOrOnlyUsePointsApplied = (specialRates?: Partial<SpecialRates>) => {\n    //no special rate applied\n    if ((specialRates && Object.values(specialRates).filter(Boolean).length === 0) || !specialRates)\n      return true;\n    //or only one special rate applied and that rate is usePoints\n    if (\n      specialRates &&\n      Object.values(specialRates).filter(Boolean).length < 2 &&\n      specialRates.redeemPts\n    )\n      return true;\n    return false;\n  };\n  const isDateLess = !(data?.dates?.arrivalDate && data?.dates?.departureDate);\n  return (\n    //flexDates dream routing opt-in\n    enableDreamRouting &&\n    /*geocode data returned for routing to dream flow \n    or search routing passed from dream page to route to search flow*/\n    !!geocodeData &&\n    !!geocodeData?.geocode?.match?.placeUri &&\n    (target === 'search' || target === 'search-zero') &&\n    noSpecialRatesOrOnlyUsePointsApplied(data?.specialRates) &&\n    //searched dates must be within 30 days of today or dateless\n    (isDateLess ||\n      (!!data?.dates?.arrivalDate &&\n        data?.dates?.datesFlex &&\n        differenceInDays(data?.dates?.arrivalDate, new Date()) <= 30))\n  );\n};\nexport const generateFlexDatesDreamRedirectURL = async ({\n  formData,\n  language,\n  additionalQSParameters,\n  geocodeData,\n  client,\n}: {\n  formData?: Partial<FormDataValues>;\n  language: string;\n  additionalQSParameters?: AdditionalQSParameters;\n  geocodeData?: GeocodeQuery;\n  client?: QueryClient;\n}) => {\n  let shouldAddLocationCoordParams = false;\n  try {\n    if (client) {\n      const { featureToggles } = await serverSideFeatureTogglesQuery(client, {\n        names: NHCSEARCH_4807,\n      });\n      shouldAddLocationCoordParams =\n        featureToggles.find(({ name }) => NHCSEARCH_4807 === name)?.enabled || false;\n    }\n  } catch (error) {\n    // eslint-disable-next-line no-console\n    console.error(error);\n  }\n\n  const locationCoordParams = {\n    placeId: geocodeData?.geocode?.match?.id,\n    location: geocodeData?.geocode?.match?.geometry?.location,\n    bounds: geocodeData?.geocode?.match?.geometry?.bounds,\n    geocodeType: geocodeData?.geocode?.match?.type,\n    query: formData?.query,\n  };\n  const urlParams: LocationUrlParams = {\n    displayCurrency: additionalQSParameters?.displayCurrency,\n    adjoiningRoomStay: additionalQSParameters?.adjoiningRoomStay,\n    sortBy: additionalQSParameters?.sortBy,\n    f_amenityIds: additionalQSParameters?.f_amenityIds,\n    f_brandCodes: additionalQSParameters?.f_brandCodes,\n    f_price: additionalQSParameters?.f_price,\n    f_tripAdvisorRatings: additionalQSParameters?.f_tripAdvisorRatings,\n    redeemPts: formData?.specialRates?.redeemPts || additionalQSParameters?.redeemPts,\n    placeUri: geocodeData?.geocode?.match?.placeUri,\n    cid: additionalQSParameters?.cid,\n    content: additionalQSParameters?.content,\n    ...(shouldAddLocationCoordParams && locationCoordParams),\n  };\n  const brandCodeParam = additionalQSParameters?.brandCode as keyof BrandCode;\n  const locationUrlString = locationUriBuilder({\n    locale: language,\n    brandCode: brandCodeParam ?? (formData?.brandCode as keyof BrandCode),\n    urlParams,\n    relative: true,\n  });\n  return locationUrlString;\n};\n\nexport const SHOP_FORM_ORIGINAL_OP_NAMES = [\n  GetSpeedBumpFeatureConfigsDocument.originalOpName,\n  GetTranslateAutocompleteConfigDocument.originalOpName,\n  FeatureTogglesDocument.originalOpName,\n];\nexport const getServerSideShopFormData: (\n  queryClient: QueryClient,\n  options?: { getTranslateAutocomplete?: boolean }\n) => Promise<void | GetSpeedBumpFeatureConfigsQuery> = (queryClient, options = {}) => {\n  const { getTranslateAutocomplete = false } = options;\n  const speedBumpFeatureconfig = getSpeedBumpFeatureConfig(queryClient).catch((e) => {\n    // eslint-disable-next-line no-console\n    console.error('Error fetching shopFormSpeedBumpData', e);\n  });\n\n  if (getTranslateAutocomplete)\n    serverSideGetTranslateAutocompleteConfigQuery(queryClient).catch((e: Error) => {\n      console.error('Error fetching translateAutocompleteData', e); // eslint-disable-line no-console\n    });\n\n  serverSideFeatureTogglesQuery(queryClient, { names: [DISABLE_AARP_SPECIAL_RATES] }).catch((e) => {\n    // eslint-disable-next-line no-console\n    console.error('Error fetching aarp-special-rate-toggle featureConfigs', e);\n  });\n\n  return speedBumpFeatureconfig;\n};\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameYear} function options.\n */\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport function isSameYear(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return laterDate_.getFullYear() === earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default isSameYear;\n","import { useTranslation } from 'next-i18next';\nimport type { TFunction } from 'i18next';\nimport { differenceInDays, isSameYear } from 'date-fns';\nimport type { ShopFormRoom } from '@dx-ui/osc-rooms';\n\ntype ResSummaryText = {\n  dates: string;\n  adaDates: string;\n  kidsAgesText: string | null;\n  occupancy: string;\n  stayDuration?: string;\n};\n\nconst handleUnder1Text = (childAge: number, t: TFunction<'osc-rooms', undefined>) =>\n  childAge === 0 ? t('occupancy.under1') : childAge;\n\nexport const useShopFormSummaryText = ({\n  arrivalDate,\n  departureDate,\n  language,\n  showChildAges,\n  rooms,\n}: {\n  arrivalDate: Date | null;\n  departureDate: Date | null;\n  /** language value passed from router */\n  language: string;\n  showChildAges?: boolean;\n  rooms: ShopFormRoom[];\n}): ResSummaryText => {\n  const { t } = useTranslation('osc-rooms');\n  const { formattedStayDates, adaFormattedStayDates, stayDuration } = useFormattedStayDates({\n    arrivalDate,\n    departureDate,\n    language,\n  });\n  const numRooms = rooms.length;\n  const { numAdults, numChildren, childrenAges } = rooms.reduce(\n    (acc, room) => {\n      acc.numAdults = acc.numAdults + room.adults;\n      acc.numChildren = acc.numChildren + room.children.length;\n      acc.childrenAges = [\n        ...acc.childrenAges,\n        ...room.children.filter((c) => typeof c.age === 'number').map((c) => c.age as number),\n      ];\n      return acc;\n    },\n    { numAdults: 0, numChildren: 0, childrenAges: [] as number[] }\n  );\n  const updatedChildrenAges = childrenAges?.map((childAge) => handleUnder1Text(childAge, t));\n  const roomsText = t('occupancy.rooms', { count: numRooms });\n  const adultsText = t('occupancy.adult', { count: numAdults ?? undefined });\n  const hasKids = (numChildren || 0) > 0;\n  const kidsText = hasKids ? t('occupancy.kids', { count: numChildren ?? undefined }) : '';\n\n  let kidsAgesText: string | null = null;\n\n  if (showChildAges && hasKids && updatedChildrenAges?.length) {\n    const firstKidsAge = updatedChildrenAges?.slice(0, -1).join(', ');\n\n    kidsAgesText = t('occupancy.kidsAgeText', {\n      count: updatedChildrenAges.length,\n      firstKidsAge: updatedChildrenAges.length < 3 ? firstKidsAge : firstKidsAge + ',',\n      lastKidAge: updatedChildrenAges?.slice(-1)[0],\n      kidAge: updatedChildrenAges[0],\n    });\n  }\n\n  const noDatesStayDuration = formattedStayDates ? t('occupancy.dayOnly') : t('occupancy.anyDates');\n\n  return {\n    dates: formattedStayDates,\n    adaDates: adaFormattedStayDates,\n    kidsAgesText,\n    occupancy: t(kidsText ? 'occupancy.occupancyWithKids' : 'occupancy.occupancy', {\n      adults: adultsText,\n      kids: kidsText,\n      rooms: roomsText,\n    }),\n    stayDuration:\n      stayDuration === 0\n        ? noDatesStayDuration\n        : t('occupancy.stayDurationNights', { count: stayDuration }),\n  };\n};\n\nexport const formatDates = (arrivalDate: Date, departureDate: Date, locale: Intl.Locale) => {\n  const sameYear = isSameYear(arrivalDate, departureDate);\n  const kanji = isKanji(locale);\n  const month = isTurkish(locale) ? ('long' as const) : ('short' as const);\n  const weekday = 'short';\n  const day = 'numeric';\n  const year = 'numeric';\n  const options: Intl.DateTimeFormatOptions = {\n    weekday,\n    month,\n    day,\n  };\n  const optionsWithYear: Intl.DateTimeFormatOptions = { ...options, year };\n\n  const arrivalDateString = arrivalDate.toLocaleDateString(\n    locale,\n    !sameYear || kanji ? optionsWithYear : options\n  );\n  const departureDateString = departureDate.toLocaleDateString(\n    locale,\n    sameYear && kanji ? options : optionsWithYear\n  );\n\n  return `${arrivalDateString} \\u2013 ${departureDateString}`;\n};\n\nexport interface Props {\n  children: (args: {\n    arrivalDate: Date | null;\n    departureDate: Date | null;\n    formattedStayDates: string;\n    adaFormattedStayDates: string;\n    stayDuration: number;\n  }) => JSX.Element | null;\n}\n\nexport function useFormattedStayDates({\n  language,\n  arrivalDate,\n  departureDate,\n}: {\n  language: string;\n  arrivalDate: Date | null;\n  departureDate: Date | null;\n}) {\n  const locale = useLocale({ language });\n  const { t, ready: textReady } = useTranslation('osc-rooms');\n\n  return {\n    formattedStayDates:\n      !!arrivalDate && !!departureDate && !!locale\n        ? formatDates(arrivalDate, departureDate, locale)\n        : '',\n    adaFormattedStayDates:\n      !!arrivalDate && !!departureDate && !!locale\n        ? t('occupancy.stayDatesADA', {\n            arrivalDate: arrivalDate.toLocaleDateString(locale, {\n              dateStyle: 'full',\n            }),\n            departureDate: departureDate.toLocaleDateString(locale, { dateStyle: 'full' }),\n          })\n        : '',\n    stayDuration:\n      !!arrivalDate && !!departureDate ? differenceInDays(departureDate, arrivalDate) : 0,\n    textReady,\n  };\n}\n\nexport const isKanji = (locale: string | Intl.Locale) => {\n  const language = localeToLanguage(locale);\n  return ['ja', 'ko', 'zh-hans', 'zh-hant'].includes(language);\n};\n\nexport const isTurkish = (locale: Intl.Locale | string) => {\n  const language = localeToLanguage(locale);\n  return ['tr'].includes(language);\n};\n\nfunction localeToLanguage(locale: string | Intl.Locale) {\n  return (\n    isLocale(locale) && locale?.baseName ? locale.baseName : (locale as string)\n  ).toLowerCase();\n}\n\nfunction isLocale(locale: string | Intl.Locale | undefined): locale is Intl.Locale {\n  if ((locale as Intl.Locale)?.baseName) {\n    return true;\n  }\n  return false;\n}\n\nconst defaultOptions: Intl.DateTimeFormatOptions = {\n  calendar: 'gregory',\n};\n\nconst localeOptions: Record<string, Intl.DateTimeFormatOptions> = {\n  ar: {\n    numberingSystem: 'latn',\n  },\n};\n\nexport function useLocale({ language }: { language: string }) {\n  return new Intl.Locale(language, {\n    ...defaultOptions,\n    ...localeOptions[language],\n  });\n}\n","import Icon from '@dx-ui/osc-icon';\nimport type * as React from 'react';\nimport cx from 'classnames';\nimport { useShopFormSummaryText } from './shop-form.summary.utils';\nimport { useTranslation } from 'next-i18next';\nimport type { ShopFormRoom } from '@dx-ui/osc-rooms';\nimport { useMediaQuery } from 'usehooks-ts';\n\nexport type ShopFormSummaryProps = {\n  arrivalDate: Date | null;\n  className?: string;\n  departureDate: Date | null;\n  editButtonRef?: React.Ref<HTMLButtonElement>;\n  isExpanded: boolean;\n  isLoading?: boolean;\n  language: string;\n  location?: string;\n  onEditClick: () => void;\n  rooms: ShopFormRoom[];\n  showChildAges?: boolean;\n  summaryType: 'search' | 'stay';\n  hideRoomSummary?: boolean;\n};\n\nexport function ShopFormSummary({\n  arrivalDate,\n  className,\n  departureDate,\n  editButtonRef,\n  isExpanded,\n  isLoading: isLoadingProp,\n  language,\n  location,\n  onEditClick,\n  rooms,\n  showChildAges,\n  summaryType,\n  hideRoomSummary,\n}: ShopFormSummaryProps) {\n  const isLargeView = useMediaQuery('(min-width: 1024px)');\n  const isSmallAndMediumView = !isLargeView;\n  const { t, ready } = useTranslation('osc-shop-form');\n  const { dates, adaDates, kidsAgesText, occupancy, stayDuration } = useShopFormSummaryText({\n    arrivalDate,\n    departureDate,\n    language,\n    rooms,\n    showChildAges,\n  });\n  const titleText = summaryType === 'search' ? t('yourSearchTitleCase') : t('yourStayTitleCase');\n  const editText = summaryType === 'search' ? t('editSearch') : t('editStayTitleCase');\n  const locationAnywhere = t('anywhere');\n  const adaEditSummary =\n    summaryType === 'search'\n      ? t('editSearchDetails', { location, dates: adaDates, occupancy })\n      : t('editStayDetails', { location: location ?? undefined, dates: adaDates, occupancy });\n\n  const isLoading = isLoadingProp || !ready;\n\n  const editStayButton = (\n    <button\n      ref={editButtonRef}\n      className=\"btn-primary-link\"\n      type=\"button\"\n      aria-expanded={isExpanded}\n      aria-label={adaEditSummary}\n      onClick={onEditClick}\n      data-testid=\"search-edit-button\"\n    >\n      {editText}\n    </button>\n  );\n\n  return (\n    <div\n      className={cx(\n        'flex w-full flex-wrap justify-between gap-2 lg:flex-nowrap lg:items-center lg:justify-center lg:gap-3',\n        className\n      )}\n      data-testid=\"search-summary\"\n    >\n      <div className=\"font-bold lg:shrink-0\">\n        {isLoading ? <SkeletonLoader className=\"h-6 w-16\" /> : titleText}\n      </div>\n      {isLoading ? (\n        <SkeletonLoader className=\"h-6 w-16 lg:hidden\" />\n      ) : isSmallAndMediumView ? (\n        editStayButton\n      ) : null}\n      <div className=\"lg:divide-border lg:border-border flex w-full flex-col gap-2 lg:w-auto lg:flex-row lg:gap-3 lg:divide-x lg:border-e lg:pe-3 rtl:lg:divide-x-reverse lg:[&>*:not(:first-child)]:ps-3 lg:[&>*]:py-2\">\n        {isLoading ? (\n          <SkeletonLoader className=\"h-6 w-20 lg:self-center\" />\n        ) : (\n          <div className=\"flex w-full gap-1 lg:w-auto lg:min-w-0\">\n            <Icon name=\"hotel-location\" variant=\"solid\" className=\"size-6\" />\n            <span\n              className=\"text-base font-normal lg:truncate\"\n              title={location || locationAnywhere}\n            >\n              {location || locationAnywhere}\n            </span>\n          </div>\n        )}\n        <div className=\"flex w-full gap-1 lg:w-auto lg:shrink-0\" data-testid=\"search-summary-dates\">\n          <Icon name=\"calendar\" variant=\"solid\" className=\"size-6\" />\n          {isLoading ? (\n            <SkeletonLoader className=\"h-6 w-64\" />\n          ) : (\n            <>\n              <span aria-hidden={true}>\n                {dates}\n                {dates ? ' ' : null}\n                <span\n                  className={cx('inline-block whitespace-nowrap text-base font-normal', {\n                    'text-text-alt': dates,\n                  })}\n                  data-testid=\"search-summary-nights\"\n                >\n                  {dates ? `(${stayDuration})` : stayDuration}\n                </span>\n              </span>\n              <span className=\"sr-only\">\n                {adaDates} {stayDuration}\n              </span>\n            </>\n          )}\n        </div>\n        {hideRoomSummary ? null : (\n          <div className=\"flex w-full gap-1 lg:w-auto lg:min-w-0\">\n            <Icon name=\"users\" className=\"size-6\" />\n            {isLoading ? (\n              <SkeletonLoader className=\"h-6 w-28\" />\n            ) : (\n              <span\n                className=\"lg:truncate\"\n                title={`${occupancy}${kidsAgesText ? kidsAgesText : ''}`}\n              >\n                {occupancy}\n                {kidsAgesText ? <span className=\"text-text-alt\"> {kidsAgesText}</span> : null}\n              </span>\n            )}\n          </div>\n        )}\n      </div>\n      {isLoading ? (\n        <SkeletonLoader className=\"hidden h-6 w-16 lg:block\" />\n      ) : isLargeView ? (\n        editStayButton\n      ) : null}\n    </div>\n  );\n}\n\nfunction SkeletonLoader({\n  className,\n  ...rest\n}: React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>) {\n  return (\n    <span\n      className={cx('bg-bg-alt inline-block animate-pulse align-middle', className)}\n      {...rest}\n    />\n  );\n}\n","import * as React from 'react';\nimport type { FormDataValues, ShopForm } from '../shop-form';\nimport { useTranslationsConfig } from '@dx-ui/osc-speedbump';\nimport type { Rule, Facts } from '@dx-shared/rule-engine';\nimport { RuleEngine } from '@dx-shared/rule-engine';\nimport { useRouter } from 'next/router';\nimport { useTranslation } from 'next-i18next';\n\nconst DEFAULT_LANGUAGE = 'en';\n\nexport function useShopFormSpeedBump({\n  locale,\n  onSubmit,\n  targetOHWPage,\n}: Pick<React.ComponentProps<typeof ShopForm>, 'onSubmit' | 'targetOHWPage'> & {\n  locale: string;\n}) {\n  const { asPath } = useRouter();\n  const { t } = useTranslation(['osc-speedbump', 'osc-rooms']);\n\n  const [speedBumpData, setSpeedBumpData] = React.useState<{\n    formData: FormDataValues;\n    url: string | null;\n  } | null>(null);\n  const [speedBumpType, setSpeedBumpType] = React.useState<'language' | 'ten-plus' | null>(null);\n  const { translateRules } = useTranslationsConfig({ isEnabled: !!targetOHWPage });\n\n  const isSpeedBumpVisible = speedBumpData !== null;\n  const closeSpeedBump = () => {\n    setSpeedBumpData(null);\n  };\n\n  const handleSpeedBumpClose = () => {\n    closeSpeedBump();\n  };\n  const handleSpeedBumpContinue = () => {\n    let url = speedBumpData?.url ?? null;\n    if (speedBumpType === 'language') {\n      url = speedBumpData?.url?.replace(`/${locale}/`, `/${DEFAULT_LANGUAGE}/`) || null;\n    }\n    if (\n      speedBumpData?.formData &&\n      speedBumpType !== 'language' &&\n      shouldShowLanguageSpeedBump(url)\n    ) {\n      setSpeedBumpData({ formData: speedBumpData?.formData, url });\n      setSpeedBumpType('language');\n      return;\n    }\n    speedBumpData &&\n      onSubmit?.({\n        formData: speedBumpData.formData,\n        url,\n        locale: speedBumpType === 'language' ? DEFAULT_LANGUAGE : locale ?? DEFAULT_LANGUAGE,\n      });\n    closeSpeedBump();\n  };\n\n  const shouldShowLanguageSpeedBump = (url?: string | null) => {\n    if (url && locale && locale !== DEFAULT_LANGUAGE) {\n      try {\n        const ruleEngine = new RuleEngine(translateRules as Rule);\n\n        return ruleEngine?.run({ language: locale, url } as Facts) === false;\n      } catch (e) {\n        console.warn('Error while running rule engine in shouldShowSpeedBump', e); // eslint-disable-line no-console\n        return true;\n      }\n    }\n  };\n  const shouldShowSpeedBump = (url?: string | null, formData?: FormDataValues) => {\n    const isGMELessThanTenRoomsAndNoAttendees =\n      asPath.includes('/events/') &&\n      formData?.numRooms &&\n      Number(formData.numRooms) < 10 &&\n      (!formData?.numAttendees || Number(formData?.numAttendees) === 0);\n\n    if (isGMELessThanTenRoomsAndNoAttendees) {\n      setSpeedBumpType('ten-plus');\n      return true;\n    }\n    if (shouldShowLanguageSpeedBump(url)) {\n      setSpeedBumpType('language');\n      return true;\n    }\n    return false;\n  };\n\n  const getSpeedBumpOptions = () => {\n    switch (speedBumpType) {\n      case 'language':\n        return {\n          title: t('osc-speedbump:title'),\n        };\n      case 'ten-plus':\n        return {\n          title: t('osc-rooms:roomsAttendees.groupSpeedbump.speedbumpTitle'),\n          message: t('osc-rooms:roomsAttendees.groupSpeedbump.speedbumpMessage'),\n          confirmButtonLabel: t('osc-rooms:roomsAttendees.groupSpeedbump.continueSelections'),\n          cancelButtonLabel: t('osc-rooms:roomsAttendees.groupSpeedbump.changeSelections'),\n        };\n\n      default:\n        break;\n    }\n  };\n  return {\n    isSpeedBumpVisible,\n    handleSpeedBumpClose,\n    handleSpeedBumpContinue,\n    shouldShowSpeedBump,\n    setSpeedBumpData,\n    speedBumpType,\n    getSpeedBumpOptions,\n  };\n}\n","import { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { useTranslation } from 'next-i18next';\n\nexport const GeocodeFailModal = ({\n  isGeocodeError,\n  setIsGeoCodeError,\n  dialogTrigger,\n}: {\n  isGeocodeError: boolean;\n  setIsGeoCodeError: React.Dispatch<React.SetStateAction<boolean>>;\n  dialogTrigger?: React.ReactNode;\n}) => {\n  const { t } = useTranslation('osc-shop-form');\n\n  return (\n    <Dialog\n      isOpen={isGeocodeError}\n      size=\"sm\"\n      onDismiss={() => setIsGeoCodeError(false)}\n      title={t('geocodeFailModalTitle')}\n      dialogTrigger={dialogTrigger}\n    >\n      <div className=\"pb-2 text-center\">\n        <div>{t('geocodeFailModalContent')}</div>\n      </div>\n      <div className=\"flex items-center justify-center space-x-2 py-2 rtl:space-x-reverse\">\n        <button\n          className=\"btn btn-lg btn-primary\"\n          onClick={() => setIsGeoCodeError(false)}\n          type=\"button\"\n        >\n          {t('geocodeFailModalButton')}\n        </button>\n      </div>\n    </Dialog>\n  );\n};\n","import type { FeatureConfig, FeatureToggle } from '@dx-ui/gql-types';\n\nexport type FeatureTogglesQueryData = {\n  featureToggles: Pick<FeatureToggle, 'name' | 'enabled'>[];\n};\n\nexport type FeatureConfigsQueryData = FeatureTogglesQueryData & {\n  featureConfigs: Pick<FeatureConfig, 'name' | 'conditions' | 'config'>[];\n};\n\nexport function getIsFeatureToggleEnabled({\n  featureToggleData,\n  name,\n}: {\n  featureToggleData: FeatureTogglesQueryData | null | undefined;\n  name: string;\n}) {\n  return (\n    featureToggleData?.featureToggles?.find((toggle) => toggle.name === name)?.enabled || false\n  );\n}\n\nexport function getFeatureConfig<T = Record<string, unknown>>({\n  featureToggleData,\n  name,\n}: {\n  featureToggleData: FeatureConfigsQueryData | undefined;\n  name: string;\n}): T | null {\n  const toggleEnabled = getIsFeatureToggleEnabled({ featureToggleData, name });\n  const allConfigs = featureToggleData?.featureConfigs || [];\n  const searchedConfig = allConfigs.find((toggle) => toggle.name === name);\n  return toggleEnabled ? searchedConfig?.config : null;\n}\n","import { DISABLE_AARP_SPECIAL_RATES } from '../constants/featureToggles';\nimport { useFeatureTogglesQuery } from '../gql/queries';\nimport { getIsFeatureToggleEnabled } from '@dx-ui/utilities-feature-toggles-configs';\n\nexport function useAarpToggle() {\n  const { data } = useFeatureTogglesQuery({\n    names: [DISABLE_AARP_SPECIAL_RATES],\n  });\n\n  return {\n    disableAARPSpecialRates: getIsFeatureToggleEnabled({\n      featureToggleData: data,\n      name: DISABLE_AARP_SPECIAL_RATES,\n    }),\n  };\n}\n","import type { FormProps } from '@dx-ui/osc-form';\nimport { Form, FormConnector } from '@dx-ui/osc-form';\nimport cx from 'classnames';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport type { AdditionalQSParameters } from './shop-form.utils';\nimport { generateShopFormUrl, generateSanitizedDefaultValues } from './shop-form.utils';\nimport type { DEFAULT_FORM_VALUES } from './shop-form.constants';\nimport { ShopFormSummary } from './shop-form.summary';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { serverSideGeocodeQuery } from './gql/queries';\nimport type { FormState } from 'react-hook-form';\nimport { getSafeLanguage } from '@dx-ui/framework-react-query';\nimport type { Hhonors, SpecialRates } from '@dx-ui/osc-special-rates';\nimport type { ShopFormRoom } from '@dx-ui/osc-rooms';\nimport type { ShopFormDatesProps } from './shop-form.dates';\nimport { Speedbump } from '@dx-ui/osc-speedbump';\nimport { useShopFormSpeedBump } from './hooks/use-shop-form-speedbump';\nimport type { GeocodeQuery } from './gql/types';\nimport { GeocodeFailModal } from './shop-form.geocode-fail-modal';\nimport { logError } from '@dx-ui/framework-logger';\nimport { ControlClose } from '@dx-ui/osc-controls';\nimport { useAarpToggle } from './hooks/use-aarp-toggle';\n\ntype FormValues = Omit<\n  typeof DEFAULT_FORM_VALUES,\n  'dates' | 'hhonors' | 'numRooms' | 'numAttendees' | 'specialRates' | 'numNights'\n> & {\n  dates: {\n    arrivalDate: Date | null;\n    departureDate: Date | null;\n    datesFlex: boolean;\n  };\n  hhonors: Hhonors | null;\n  numRooms: number | null;\n  numNights: number | null;\n  numAttendees: number | null;\n  specialRates: SpecialRates;\n  shouldFocusRoomsInput?: boolean;\n};\n\ntype DeepPartial<T> = T extends object\n  ? {\n      [P in keyof T]?: DeepPartial<T[P]>;\n    }\n  : T;\n\nexport interface FormDataValues extends FormValues {\n  dates: ShopFormDatesProps;\n  hhonors: Hhonors;\n  rooms: ShopFormRoom[];\n}\n\nexport interface FormDefaultValues extends DeepPartial<FormDataValues> {\n  dates?: Partial<ShopFormDatesProps>;\n  rooms?: ShopFormRoom[];\n  specialRates?: Partial<SpecialRates>;\n}\n\nexport type TargetOHWPage = 'search' | 'ten-plus-search' | 'book' | 'ten-plus-book' | 'search-zero';\n\ntype ShopForm = {\n  /** Additional query string parameters that are typically pass-through parameters that are not used in widget directly */\n  additionalQSParameters?: AdditionalQSParameters;\n  buttonClassName?: string;\n  /** override for the cta button text */\n  cta?: string;\n  /** initial values to set in form */\n  defaultValues?: FormDefaultValues;\n  /** enable to exclude the internal form provider when wrapping with \\<ShopFormProvider /\\> */\n  excludeProvider?: boolean;\n  isLoading?: boolean;\n  /** language value passed from router */\n  language: string;\n  onClose?: () => void;\n  onSubmit?: (args0: { formData: FormDataValues; url: string | null; locale: string }) => void;\n  shouldDirtyToSubmit?: boolean;\n  /** Adds screen reader text to update button **/\n  submitOpensNewTab?: boolean;\n  /** Target OHW page to generate URL for from onSubmit. If none passed url in onSubmit will return null */\n  summaryOptions?: {\n    expanded?: boolean;\n    initiallyExpanded?: boolean;\n    state?: FormDataValues;\n    onEditClick?: () => void;\n    showChildAges?: boolean;\n    summaryClassName?: string;\n    summaryWrapperClassName?: string;\n    suppressHeader?: boolean;\n    hideRoomSummary?: boolean;\n    type: 'search' | 'stay';\n  };\n  /** Target OHW page to generate URL for from onSubmit. If none passed url in onSubmit will return null */\n  targetOHWPage?: TargetOHWPage;\n  /** optional title of the form */\n  title?: string;\n  wrapperClassName?: string;\n  useFormProps?: Pick<FormProps, 'useFormProps'> & {\n    defaultValues?: FormDefaultValues;\n  };\n  /**Opt-in to route flex date searches to locations page results - <br/>\n   * Once routed to dream flow, dates and flexible date selection will be wiped <br/>\n   * If user selects again in dream flow, will be routed to search flow flex dates experience.\n   */\n  enableDatesFlexDreamRouting?: boolean;\n  baseUrl?: string;\n  canAlwaysSubmit?: boolean;\n  onSubmitClick?: (formState: FormState<FormDataValues>) => void;\n  renderAfterUpdateButton?: React.ReactNode;\n  shouldDisplayGeocodeErrorModal?: boolean;\n  /** Override for the Error Banner Defaults to displaying */\n  hasErrorBanner?: boolean | undefined;\n} & Omit<FormProps, 'onSubmit'>;\n\nexport const wrapperClassNameDefault = [\n  'container', // container needs to be first for wrappers to slice(1) to remove\n  'relative',\n  'flex',\n  'flex-wrap',\n  'items-end',\n  'justify-center',\n  'gap-2',\n  'lg:gap-3',\n  'lg:flex-nowrap',\n];\n\nexport const wrapperClassNameDefaultWithLocation = [...wrapperClassNameDefault, 'lg:mb-6'];\n\n/**\n * The OSC shop form is an extended version of the OSC form component with some key additional features:\n *\n * `defaultValues` is somewhat strictly typed with `FormDefaultValues`. This allows consumers to pass in search-specific defaults like dates, room parameters, and special rates. The defaults also allow us to handle business logic cases—such as generating valid search URLs—more easily.\n\nTo use more freeform form values, consider using [the OSC `<Form />` component instead](https://nx-storybook-ui.dig-t.hhc.hilton.com/?path=/docs*library-components-form--combining-form-components).\n *\n * Use the `additionalQSParameters` prop to include any “passthrough” query strings. `displayCurrency` are used to ensure the URL returned from `onFormSubmit()` is generated properly.\n *\n * Certain error handling is built in and standardized. For example, if a user tries to select a freeform rate while trying to use points, the form displays messaging that lets the user know they cannot use both points and freeform rates.\n *\n * The `targetOHWPage` allows for auto generation of a specific OHW page URL as part of the `onSubmit` callback. The resulting URI is only valid if consumers pass the correct initial values into `additionalQSParameters` and `defaultValues` props.\n */\nexport const ShopForm: React.FC<React.PropsWithChildren<ShopForm>> = ({\n  additionalQSParameters,\n  buttonClassName,\n  children,\n  cta,\n  defaultValues,\n  excludeProvider,\n  isLoading: isLoadingProp,\n  language,\n  onClose,\n  onSubmit,\n  shouldDirtyToSubmit = false,\n  onSubmitClick,\n  canAlwaysSubmit = false,\n  submitOpensNewTab,\n  summaryOptions,\n  targetOHWPage,\n  title,\n  wrapperClassName,\n  enableDatesFlexDreamRouting = false,\n  renderAfterUpdateButton,\n  shouldDisplayGeocodeErrorModal = false,\n  hasErrorBanner,\n  useFormProps,\n  ...rest\n}) => {\n  const client = useQueryClient();\n  const formContentRef = React.useRef<HTMLDivElement | null>(null);\n  const editButtonRef = React.useRef<HTMLButtonElement | null>(null);\n  const [\n    {\n      hasLocationInput,\n      hasRoomsButton,\n      hasSpecialRatesButton,\n      hasNumRoomsButton,\n      hasNumAttendeesButton,\n    },\n    setElementState,\n  ] = React.useState<ReturnType<typeof getElementState>>(getElementState(formContentRef.current));\n  const { t, ready } = useTranslation(['osc-link', 'osc-shop-form']);\n  const isLoading = !ready || isLoadingProp;\n  const [isExpanded, setIsExpanded] = React.useState(\n    !!summaryOptions?.initiallyExpanded || !summaryOptions\n  );\n  const [isGeocodeError, setIsGeoCodeError] = React.useState(false);\n  const expanded = !!summaryOptions?.expanded || isExpanded;\n  const locale = React.useMemo(() => getSafeLanguage(language), [language]);\n  const {\n    isSpeedBumpVisible,\n    handleSpeedBumpClose,\n    handleSpeedBumpContinue,\n    shouldShowSpeedBump,\n    setSpeedBumpData,\n    speedBumpType,\n    getSpeedBumpOptions,\n  } = useShopFormSpeedBump({ locale, onSubmit, targetOHWPage });\n\n  const { disableAARPSpecialRates } = useAarpToggle();\n\n  //React hook form doesn't recommend undefined defaultValues. So merge user values with defaults object to pass into consumer form values.\n  const defaultValuesWithDefaults = React.useMemo(\n    () => generateSanitizedDefaultValues(defaultValues),\n    [defaultValues]\n  );\n\n  const [internalSummaryState, setInternalSummaryState] =\n    React.useState<FormDataValues>(defaultValuesWithDefaults);\n  const summaryState = summaryOptions?.state || internalSummaryState;\n\n  const onFormSubmit = async (data: FormDataValues) => {\n    const formData = {\n      ...data,\n      rooms: data.rooms.map((room) => ({\n        adults: room.adults,\n        children: room.children.map((c) => {\n          return { age: Number.isNaN(c.age) ? null : c.age };\n        }),\n      })),\n    };\n    setInternalSummaryState(formData);\n\n    const hasGeoCodeInput = formData.query || formData.placeId;\n    const hasFlexDates = formData.dates.datesFlex && enableDatesFlexDreamRouting;\n    const shouldAttemptToGeocode =\n      hasGeoCodeInput && (hasFlexDates || shouldDisplayGeocodeErrorModal);\n\n    let geocodeData: GeocodeQuery = {};\n\n    if (shouldAttemptToGeocode) {\n      try {\n        geocodeData = await serverSideGeocodeQuery(client, {\n          address: formData?.query,\n          placeId: formData?.placeId,\n          sessionToken: formData?.sessionToken,\n          language: locale || 'en',\n        });\n\n        if (!geocodeData?.geocode && shouldDisplayGeocodeErrorModal) return setIsGeoCodeError(true);\n      } catch (error) {\n        if (error instanceof Error || typeof error === 'string')\n          logError('OSC_SHOP_FORM', error, 'failed to fetch geocode data');\n        if (shouldDisplayGeocodeErrorModal) {\n          return setIsGeoCodeError(true);\n        }\n      }\n    }\n    if (onSubmit) {\n      const url = targetOHWPage\n        ? await generateShopFormUrl({\n            additionalQSParameters,\n            formData,\n            locale,\n            disableAARPSpecialRates,\n            targetOHWPage,\n            enableDatesFlexDreamRouting,\n            geocodeData,\n            client,\n          })\n        : null;\n      if (shouldShowSpeedBump(url, formData)) {\n        setSpeedBumpData({ formData, url });\n        return;\n      }\n      onSubmit({ formData, url, locale });\n    }\n  };\n  React.useEffect(() => {\n    if (!isLoading && expanded) {\n      setElementState(getElementState(formContentRef.current));\n    }\n  }, [expanded, isLoading]);\n\n  function closeShopForm() {\n    setIsExpanded(false);\n    onClose?.();\n    editButtonRef?.current?.focus();\n  }\n  const formContent = (\n    <FormConnector<FormDataValues>>\n      {({ formState, setValue }) => {\n        const { isValid, isDirty } = formState;\n        const canSubmit =\n          canAlwaysSubmit || (summaryOptions || shouldDirtyToSubmit ? isValid && isDirty : isValid);\n\n        return (\n          <div>\n            <GeocodeFailModal\n              isGeocodeError={isGeocodeError}\n              setIsGeoCodeError={setIsGeoCodeError}\n            />\n            {summaryOptions ? (\n              <div\n                className={cx(summaryOptions.summaryWrapperClassName, {\n                  'border-border border-b pb-2': expanded,\n                })}\n              >\n                <ShopFormSummary\n                  className={summaryOptions.summaryClassName || 'container'}\n                  arrivalDate={summaryState.dates.arrivalDate}\n                  departureDate={summaryState.dates.departureDate}\n                  isLoading={isLoading}\n                  language={language}\n                  location={summaryState.query}\n                  onEditClick={() => {\n                    summaryOptions?.onEditClick?.();\n                    if (summaryOptions?.expanded === undefined) {\n                      setIsExpanded(true);\n                    }\n                  }}\n                  rooms={summaryState.rooms}\n                  showChildAges={summaryOptions.showChildAges}\n                  summaryType={summaryOptions.type}\n                  hideRoomSummary={summaryOptions.hideRoomSummary}\n                  isExpanded={expanded}\n                  editButtonRef={editButtonRef}\n                />\n              </div>\n            ) : null}\n            {!isLoading && expanded ? (\n              <div className={cx({ 'pt-2': summaryOptions })}>\n                {!!title && (\n                  <h2 className=\"heading-2xl lg:heading-4xl mb-4 font-medium\">{title}</h2>\n                )}\n                <div\n                  ref={formContentRef}\n                  className={\n                    wrapperClassName ||\n                    cx(...wrapperClassNameDefault, {\n                      'md:flex-nowrap':\n                        !hasRoomsButton &&\n                        !hasSpecialRatesButton &&\n                        !hasNumRoomsButton &&\n                        !hasNumAttendeesButton,\n                    })\n                  }\n                >\n                  {summaryOptions && !summaryOptions.suppressHeader && !hasLocationInput ? (\n                    <header\n                      className=\"w-full font-bold lg:mb-2.5 lg:w-auto\"\n                      id=\"shop-form-header\"\n                      data-testid=\"shop-form-header\"\n                      tabIndex={-1}\n                    >\n                      {summaryOptions.type === 'search'\n                        ? t('osc-shop-form:editSearch')\n                        : t('osc-shop-form:editStayTitleCase')}\n                    </header>\n                  ) : null}\n                  {children}\n                  <div\n                    data-osc-product=\"shop-form-btn-submit-wrapper\"\n                    className=\"flex w-full md:w-auto md:flex-1\"\n                  >\n                    <button\n                      data-osc-product=\"shop-form-button\"\n                      data-testid=\"search-submit-button\"\n                      disabled={!canSubmit}\n                      {...(onSubmitClick && { onClick: () => onSubmitClick(formState) })}\n                      className={\n                        buttonClassName ||\n                        'shop-form-btn-submit btn btn-lg w-full px-4 motion-safe:transition md:w-auto md:flex-1'\n                      }\n                      type=\"submit\"\n                    >\n                      {cta || t('osc-shop-form:ctaButton')}\n                      {submitOpensNewTab ? (\n                        <span className=\"sr-only\">{t('osc-link:newTab')}</span>\n                      ) : null}\n                    </button>\n                  </div>\n                  {renderAfterUpdateButton}\n                  {summaryOptions ? (\n                    <ControlClose\n                      onClick={closeShopForm}\n                      className=\"absolute -top-2.5 end-1 order-last md:end-4 lg:static lg:-ms-2\"\n                      size=\"xl\"\n                      label={t('osc-shop-form:close')}\n                    />\n                  ) : null}\n                </div>\n              </div>\n            ) : null}\n            {isSpeedBumpVisible ? (\n              <Speedbump\n                isShowing={true}\n                speedbumpOptions={getSpeedBumpOptions()}\n                onClose={() => {\n                  handleSpeedBumpClose();\n                  if (speedBumpType === 'ten-plus') setValue('shouldFocusRoomsInput', true);\n                }}\n                onContinue={handleSpeedBumpContinue}\n              />\n            ) : null}\n          </div>\n        );\n      }}\n    </FormConnector>\n  );\n\n  if (excludeProvider) {\n    return (\n      <FormConnector<FormDataValues>>\n        {({ handleSubmit }) => (\n          <form method=\"POST\" {...rest} noValidate onSubmit={handleSubmit(onFormSubmit)}>\n            {formContent}\n          </form>\n        )}\n      </FormConnector>\n    );\n  }\n\n  return (\n    <Form\n      onSubmit={onFormSubmit}\n      useFormProps={{\n        ...useFormProps,\n        defaultValues: defaultValuesWithDefaults,\n      }}\n      {...rest}\n      hasErrorBanner={hasErrorBanner}\n    >\n      {formContent}\n    </Form>\n  );\n};\n\nfunction getElementState(formContentElement: HTMLDivElement | null) {\n  return {\n    hasLocationInput: formContentElement?.querySelector(\n      '[data-osc-product=\"shop-form-location-input\"]'\n    ),\n    hasRoomsButton: formContentElement?.querySelector('[data-osc-product=\"search-rooms-button\"]'),\n    hasSpecialRatesButton: formContentElement?.querySelector(\n      '[data-osc-product=\"search-rates-button\"]'\n    ),\n    hasNumRoomsButton: formContentElement?.querySelector('#shop-form-numRooms'),\n    hasNumAttendeesButton: formContentElement?.querySelector('#shop-form-numAttendees'),\n  };\n}\n\nexport default ShopForm;\n","import { useEffect, useRef } from 'react';\n\nfunction usePreviousValue<T = unknown>(value: T) {\n  const ref = useRef<T>(value);\n\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n\n  return ref.current;\n}\n\nexport { usePreviousValue };\n","export * from './use-previous-value';\n","export * from './lib';\n","import { useMemo, useEffect } from 'react';\nimport type { UseFormProps } from 'react-hook-form';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { usePreviousValue } from '@dx-ui/utilities-use-previous-value';\nimport type { FormDataValues, FormDefaultValues } from './shop-form';\nimport { generateSanitizedDefaultValues } from './shop-form.utils';\nimport isEqual from 'lodash/isEqual';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\n\ntype SearchForProviderProps = React.PropsWithChildren<\n  Omit<UseFormProps<FormDataValues>, 'defaultValues'> & { defaultValues?: FormDefaultValues }\n>;\n\n/**\n * Use `<ShopFormProvider/>` when shop form state needs to be shared across multiple components e.g. `<ShopForm />` itself and an external `<ShopFormSpecialRates />` used on the same page.\n * When using with `<ShopForm />` make sure to set excludeProvider to true `<ShopForm excludeProvider={true} />`.\n */\nexport function ShopFormProvider({ children, ...formProps }: SearchForProviderProps) {\n  const defaultValuesWithDefaults = useMemo(\n    () => generateSanitizedDefaultValues(formProps.defaultValues),\n    [formProps.defaultValues]\n  );\n  const previousDefaultValues = usePreviousValue(defaultValuesWithDefaults);\n  const methods = useForm<FormDataValues>({\n    mode: 'onTouched',\n    criteriaMode: 'all',\n    ...formProps,\n    defaultValues: defaultValuesWithDefaults,\n  });\n  const reset = methods.reset;\n  const { defaultValues, setShopFormDefaultValues } = useShopFormDefaultValues();\n\n  useEffect(() => {\n    if (!isEqual(defaultValues, defaultValuesWithDefaults)) {\n      setShopFormDefaultValues(defaultValuesWithDefaults);\n    }\n    if (!isEqual(previousDefaultValues, defaultValuesWithDefaults)) {\n      reset(defaultValuesWithDefaults);\n    }\n  }, [\n    defaultValues,\n    defaultValuesWithDefaults,\n    reset,\n    previousDefaultValues,\n    setShopFormDefaultValues,\n  ]);\n\n  return <FormProvider {...methods}>{children}</FormProvider>;\n}\n\nexport function useShopFormDefaultValues() {\n  const queryClient = useQueryClient();\n  const queryKey = ['oscShopFormDefaultValues'];\n  const { data: defaultValues } = useQuery<FormDataValues>({ queryKey, enabled: false });\n  const setShopFormDefaultValues = (defaultValues: FormDefaultValues) => {\n    queryClient.setQueryData(queryKey, defaultValues);\n  };\n  return {\n    defaultValues,\n    setShopFormDefaultValues,\n  };\n}\n","import type * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { Location } from '@dx-ui/osc-location';\n\n/**\n * Use the `<ShopFormLocation/>` component inside of the ShopForm in order to provide the OSC experience for querying the location used to search.\n */\nexport const ShopFormLocation: React.FC<\n  React.PropsWithChildren<Partial<Location>> & Pick<Location, 'language'>\n> = ({ label, language, placeholder, ...rest }) => {\n  const [t] = useTranslation('osc-location');\n  return (\n    <div className=\"flex-basis-full relative flex\">\n      <Location\n        label={label ?? t('label')}\n        language={language}\n        placeholder={placeholder ?? t('placeholder')}\n        name=\"query\"\n        {...rest}\n      />\n    </div>\n  );\n};\n","import { normalizeDates } from \"./normalizeDates.js\";\n\nexport function normalizeInterval(context, interval) {\n  const [start, end] = normalizeDates(context, interval.start, interval.end);\n  return { start, end };\n}\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachDayOfInterval} function options.\n */\n\n/**\n * The {@link eachDayOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of days from the day of the interval start to the day of the interval end\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n *   start: new Date(2014, 9, 6),\n *   end: new Date(2014, 9, 10)\n * })\n * //=> [\n * //   Mon Oct 06 2014 00:00:00,\n * //   Tue Oct 07 2014 00:00:00,\n * //   Wed Oct 08 2014 00:00:00,\n * //   Thu Oct 09 2014 00:00:00,\n * //   Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport function eachDayOfInterval(interval, options) {\n  const { start, end } = normalizeInterval(options?.in, interval);\n\n  let reversed = +start > +end;\n  const endTime = reversed ? +start : +end;\n  const date = reversed ? end : start;\n  date.setHours(0, 0, 0, 0);\n\n  let step = options?.step ?? 1;\n  if (!step) return [];\n  if (step < 0) {\n    step = -step;\n    reversed = !reversed;\n  }\n\n  const dates = [];\n\n  while (+date <= endTime) {\n    dates.push(constructFrom(start, date));\n    date.setDate(date.getDate() + step);\n    date.setHours(0, 0, 0, 0);\n  }\n\n  return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachDayOfInterval;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from 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 subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n  return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month 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 - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  const month = _date.getMonth();\n  _date.setFullYear(_date.getFullYear(), month + 1, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDay} function options.\n */\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date, options) {\n  return toDate(date, options?.in).getDay();\n}\n\n// Fallback for modularized imports:\nexport default getDay;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDaysInMonth} function options.\n */\n\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, considering the context if provided.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  const monthIndex = _date.getMonth();\n  const lastDayOfMonth = constructFrom(_date, 0);\n  lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n  lastDayOfMonth.setHours(0, 0, 0, 0);\n  return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import type { SupportedLanguage } from '@dx-ui/framework-i18n';\nimport {\n  startOfWeek,\n  differenceInCalendarDays,\n  addDays,\n  getDaysInMonth,\n  eachDayOfInterval,\n  endOfMonth,\n  getDay,\n  subDays,\n} from 'date-fns';\n\nexport const MAX_CALENDAR_DAYS = 42; // maximum day slots a calendar can have\n\nexport const DEFAULT_LANGUAGE = 'en' as SupportedLanguage;\n\nexport const DEFAULT_LOCALE_OPTIONS = {\n  calendar: 'gregory',\n};\n\nexport const LOCALE_OPTIONS: Partial<\n  Record<StringWithAutocompleteOptions<SupportedLanguage>, Partial<Intl.DateTimeFormatOptions>>\n> = {\n  ar: {\n    numberingSystem: 'latn',\n  },\n};\n\nexport const weekStartsOn = (locale: Intl.Locale) => {\n  const key = `${locale.language}${locale.script ? `-${locale.script.toLocaleLowerCase()}` : ''}`;\n  return key ? weekStartsOnLocale[key] : 0;\n};\n\nexport function getDaysSplitByWeeks({\n  date,\n  locale,\n}: {\n  date: Date;\n  locale: Intl.Locale;\n}): Date[][] {\n  const startDay = differenceInCalendarDays(\n    date,\n    startOfWeek(date, { weekStartsOn: weekStartsOn(locale) })\n  );\n  const days = eachDayOfInterval({\n    start: subDays(date, startDay),\n    end: addDays(endOfMonth(date), MAX_CALENDAR_DAYS - (getDay(date) + getDaysInMonth(date))),\n  });\n  const w: Date[][] = [];\n  while (days.length > 0) {\n    w.push(days.splice(0, 7));\n  }\n  return w;\n}\n\nexport const isKanji = (locale?: Intl.Locale) =>\n  locale?.language && ['ja', 'ko', 'zh'].includes(locale?.language);\nexport const isLocale = (language: string, locale?: Intl.Locale) =>\n  locale?.language && language === locale.language;\nexport const isArabic = (locale?: Intl.Locale) =>\n  locale?.language && ['ar'].includes(locale?.language);\nexport const isVietnamese = (locale?: Intl.Locale) =>\n  locale?.language && ['vi'].includes(locale?.language);\n\nconst weekStartsOnLocale: Record<string, 0 | 1 | 2 | 3 | 4 | 5 | 6> = {\n  en: 0,\n  ar: 6,\n  bg: 1,\n  cs: 1,\n  da: 1,\n  fi: 1,\n  fr: 1,\n  id: 1,\n  nl: 1,\n  de: 1,\n  it: 1,\n  ja: 0,\n  ko: 0,\n  no: 1,\n  pl: 1,\n  pt: 1,\n  ro: 1,\n  ru: 1,\n  es: 1,\n  sv: 1,\n  th: 0,\n  tr: 1,\n  'zh-hans': 0,\n  'zh-hant': 0,\n};\n","import { addDays, startOfWeek } from 'date-fns';\nimport { useMemo } from 'react';\nimport { isArabic, weekStartsOn } from './utils';\n\nexport type UseDaysOfWeek = {\n  /** The locale used to get the in-language days of the week. */\n  locale: Intl.Locale;\n  /** The option to use when formatting the days of the wekk. @see Intl.DateTimeFormatOptions['weekday'] */\n  format?: Intl.DateTimeFormatOptions['weekday'];\n  /**\n   * **deprecated** whether to use the format overrides or not\n   * @deprecated\n   */\n  override?: boolean;\n};\n\n/**\n * Provides the days of the week for a given locale. The format for each day is determined by the `format` property.\n * This hook will order the days of the week based on the day the week starts for the given `locale`.\n *\n * #### Overrides\n * If the `override` flag is enabled, the following languages produce these day of week instead of the native support\n *\n * | Language | Short Days of Week |\n * |--------|-------------------|\n * | bg | 'пон', 'вто', 'сря', 'чет', 'пет', 'съб', 'нед' |\n * | cs | 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob', 'ned' |\n * | ru | 'пнд', 'втр', 'срд', 'чтв', 'птн', 'суб', 'вск' |\n * | th | 'อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์' |\n */\nexport const useDaysOfWeek = ({\n  locale,\n  format = 'short',\n  override = true,\n}: UseDaysOfWeek): Array<string> =>\n  useMemo(() => {\n    if (!locale) {\n      return [];\n    }\n    const options = {\n      weekday: isArabic(locale) ? 'long' : format,\n    };\n    let days;\n    if (format === 'short' && override) {\n      days = locale.baseName ? FORMAT_SHORT_OVERRIDES[locale.baseName] : undefined;\n    }\n    if (!days) {\n      const startDate = startOfWeek(new Date(), {\n        weekStartsOn: weekStartsOn(locale),\n      });\n      days = [...Array(7)].map((n, i) => {\n        const day = addDays(startDate, i);\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        return day.toLocaleDateString(locale, options);\n      });\n    }\n    return days;\n  }, [locale, format, override]);\n\n/** these languages only supply 2 character short weekday values with Intl.DateTimeFormat */\nconst FORMAT_SHORT_OVERRIDES: Record<string, Array<string>> = {\n  bg: ['пон', 'вто', 'сря', 'чет', 'пет', 'съб', 'нед'],\n  ru: ['пнд', 'втр', 'срд', 'чтв', 'птн', 'суб', 'вск'],\n  th: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์'],\n};\n\nexport default useDaysOfWeek;\n","import { getDay } from 'date-fns';\nimport { useMemo } from 'react';\nimport { useDaysOfWeek } from './use-days-of-week';\nimport capitalize from 'lodash/capitalize';\nimport { DEFAULT_LOCALE_OPTIONS, isKanji, LOCALE_OPTIONS, weekStartsOn } from './utils';\n\ntype AdditionalFormatOptions = {\n  monthName?: Intl.DateTimeFormatOptions['month'];\n};\n\nexport type UseDateFormatPartTypes = 'day' | 'month' | 'year' | 'weekday';\n\nexport type UseDateFormatOptions = Pick<Intl.DateTimeFormatOptions, UseDateFormatPartTypes> &\n  AdditionalFormatOptions;\n\nexport const DEFAULT_FORMAT_OPTIONS: UseDateFormatOptions = {\n  day: 'numeric',\n  month: 'numeric',\n  year: 'numeric',\n  weekday: 'short',\n  monthName: 'short',\n};\n\ntype FormatPart = { numeric: string; text: string };\n\nexport type DateFormat = {\n  day: FormatPart;\n  month: FormatPart;\n  year: FormatPart;\n  weekday: string;\n};\n\ntype UseDateFormatter = {\n  /**\n   * Date to format\n   */\n  date: Date | null;\n  /**\n   * The language locale to use to format the date\n   */\n  locale: Intl.Locale;\n  /**\n   * Format options for the given date. There are options to format both\n   * text output and date output. [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat)\n   */\n  options?: UseDateFormatOptions;\n};\n\nexport function formatDateAndText(\n  date: Date | null,\n  locale: Intl.Locale,\n  part: UseDateFormatPartTypes,\n  options: UseDateFormatOptions\n) {\n  const config = {\n    ...DEFAULT_LOCALE_OPTIONS,\n    ...LOCALE_OPTIONS[locale.baseName || ''],\n    ...options,\n  } as const;\n  const formatter = new Intl.DateTimeFormat(locale.toString(), config);\n  const parts = date && formatter.formatToParts(date);\n  const isNumeric = options[part] === 'numeric';\n  let numeric;\n  let text;\n  if (isNumeric) {\n    numeric = parts?.find(({ type }) => type === part)?.value || '';\n    const value = parts?.find(({ type }) => type === 'literal')?.value?.trim() || '';\n    text = value.match(/^[,.]$/) ? '' : value;\n  } else {\n    numeric = '';\n    text = parts?.find(({ type }) => type === part)?.value?.trim() || '';\n  }\n  return { numeric, text };\n}\n\n/**\n * Date Formatter that provides the parts of the date broken up into `text` values and `numeric` values.\n *\n * ### Special Format Cases\n * There are are few special cases where we override the default text formats to provide in-language text support for dates\n *\n * #### Kanji\n * Kanji based languages which are `Japanese`, `Korean`, `Traditional Chinese` and `Simplified Chinese` default override will use `{ weekday: 'long' }`\n *\n * #### Bulgarian\n * There is an [issue with bulgarian](https://www.unicode.org/cldr/cldr-aux/charts/31/summary/bg.html), where the short month format is missing.\n * In order to obtain this format additional settings are required, in particular `{ weekday: 'long' }`\n */\nexport const useDateFormat = ({\n  date,\n  locale,\n  options = DEFAULT_FORMAT_OPTIONS,\n}: UseDateFormatter): DateFormat => {\n  const config = useMemo(\n    () => ({\n      ...DEFAULT_FORMAT_OPTIONS,\n      ...options,\n    }),\n    [options]\n  );\n  if (isKanji(locale)) {\n    config.weekday = 'long';\n  }\n  const daysOfWeek = useDaysOfWeek({ locale, format: config.weekday });\n  return useMemo(() => {\n    if (!date) {\n      return {\n        day: { numeric: '', text: '' },\n        month: { numeric: '', text: '' },\n        year: { numeric: '', text: '' },\n        weekday: '',\n      };\n    }\n\n    const day = formatDateAndText(date, locale, 'day', { day: config.day });\n    const month = formatDateAndText(date, locale, 'month', {\n      month: config.month,\n    });\n    const year = formatDateAndText(date, locale, 'year', { year: config.year });\n    // get the index day of the week from date-fns\n    const dayIndex = getDay(date);\n    // find the array index value\n    const weekStart = weekStartsOn(locale) ?? 0;\n    const index = dayIndex - weekStart;\n    const weekday = daysOfWeek.at(index) || '';\n\n    // find a month text if there is not one supplied already\n    if (month.text.trim() === '') {\n      month.text = formatDateAndText(date, locale, 'month', {\n        month: config.monthName,\n      }).text;\n      /** bug with bulgarian short month format. short format for month is tied to additional settings\n       * @see https://www.unicode.org/cldr/cldr-aux/charts/31/summary/bg.html */\n      if (locale.baseName === 'bg') {\n        const monthConfig = {\n          ...config,\n          ...{ month: config.monthName, weekday: 'long' as const },\n        };\n        month.text = formatDateAndText(date, locale, 'month', monthConfig).text;\n      }\n    }\n    // process capitilization\n    if (['ru', 'es'].includes(locale.baseName)) {\n      month.text = capitalize(month.text);\n    }\n\n    return {\n      day,\n      month,\n      year,\n      weekday,\n    };\n  }, [config, date, daysOfWeek, locale]);\n};\n\nexport default useDateFormat;\n","import { useMemo } from 'react';\nimport type { SupportedLanguage } from '@dx-ui/framework-i18n';\nimport { DEFAULT_LANGUAGE, DEFAULT_LOCALE_OPTIONS, LOCALE_OPTIONS } from './utils';\n\ntype UseLocale = {\n  /** The supported language code to use */\n  language: StringWithAutocompleteOptions<SupportedLanguage>;\n  /** Any date format options to use. In addition to the default setting, The numbering system for the `ar` language code is set to `latn` */\n  options?: Intl.DateTimeFormatOptions;\n};\n\n/**\n * Used to obtain the [Intl.Locale](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale).\n */\nexport const useLocale = ({\n  language = DEFAULT_LANGUAGE,\n  options = DEFAULT_LOCALE_OPTIONS,\n}: UseLocale): Intl.Locale =>\n  useMemo(\n    () =>\n      new Intl.Locale(language, {\n        ...DEFAULT_LOCALE_OPTIONS,\n        ...LOCALE_OPTIONS[language],\n        ...options,\n      }),\n    [language, options]\n  );\n\nexport default useLocale;\n","export * from './utils';\nexport * from './use-days-of-week';\nexport * from './use-date-format';\nexport * from './use-locale';\n","export * from './lib';\n","import Icon from '@dx-ui/osc-icon';\nimport { useIsClient } from 'usehooks-ts';\nimport { isKanji, useLocale, useDateFormat } from '@dx-ui/utilities-dates';\nimport cx from 'classnames';\nimport type * as React from 'react';\n\ntype DatePickerDatesButton = {\n  children?: React.ReactNode;\n  className?: HTMLDivElement['className'];\n  day: Date;\n  dayTextColorClassName?: string;\n  language: string;\n  isReducedSize?: boolean;\n};\n\nconst DatePickerDatesButton: React.FC<React.PropsWithChildren<DatePickerDatesButton>> = ({\n  className,\n  children,\n  day,\n  dayTextColorClassName = 'text-primary',\n  language,\n  isReducedSize,\n}) => {\n  const locale = useLocale({ language });\n  const kanji = isKanji(locale) as boolean;\n  const options = kanji ? { weekday: 'long' as Intl.DateTimeFormatOptions['weekday'] } : {};\n  const dateFormatParts = useDateFormat({ date: day, locale, options });\n  const isClient = useIsClient();\n\n  const reducedSubTextSize = {\n    'text-xs': isReducedSize,\n    'text-base': !isReducedSize,\n  };\n\n  if (!day) {\n    return (\n      <span className=\"flex w-36 items-center justify-center whitespace-nowrap sm:w-auto sm:ps-2 sm:first-of-type:ps-0\">\n        <Icon name=\"calendar\" size=\"xl\" variant=\"solid\" className=\"text-primary\" />\n        {children ? (\n          <span data-osc-product=\"date-picker-buttons\" className=\"ms-2 text-sm leading-tight\">\n            {children}\n          </span>\n        ) : null}\n      </span>\n    );\n  }\n\n  if (!isClient) {\n    return (\n      <span className=\"flex w-36 items-center justify-center whitespace-nowrap sm:w-auto sm:ps-2 sm:first-of-type:ps-0\">\n        <span className={cx('bg-bg-alt w-20 rounded', kanji ? 'h-12' : 'h-11')} />\n      </span>\n    );\n  }\n\n  return kanji ? (\n    <span\n      aria-hidden\n      className={cx(\n        'flex h-12 items-center whitespace-nowrap sm:w-auto sm:ps-2 sm:first-of-type:ps-0',\n        className\n      )}\n    >\n      <span className=\"row-span-1 row-start-2\">\n        <span className={cx('block uppercase tabular-nums leading-none', reducedSubTextSize)}>\n          {dateFormatParts.month.numeric}\n          {dateFormatParts.month.text}\n        </span>\n      </span>\n      <span className=\"row-span-4 row-start-1\">\n        <span\n          className={cx('pe-1 font-bold tabular-nums leading-none', dayTextColorClassName, {\n            'text-3xl md:text-2xl lg:text-3xl': isReducedSize,\n            'text-4xl md:text-3xl lg:text-4xl': !isReducedSize,\n          })}\n        >\n          {dateFormatParts.day.numeric}\n          <span className=\"uppercase tabular-nums\">{dateFormatParts.day.text}</span>\n        </span>\n        <span className={cx('block uppercase tabular-nums leading-none', reducedSubTextSize)}>\n          {dateFormatParts.weekday}\n        </span>\n      </span>\n    </span>\n  ) : (\n    <span\n      aria-hidden\n      className={cx(\n        'flex w-32 items-end justify-center sm:w-auto sm:ps-2 sm:first-of-type:ps-0',\n        className,\n        {\n          'h-8': isReducedSize,\n          'h-11': !isReducedSize,\n        }\n      )}\n    >\n      <span\n        className={cx(\n          'brand-ey:font-normal brand-hi-refresh:font-headline brand-hi-refresh:font-normal brand-hi-refresh:text-primary brand-lx:font-serif brand-lx:text-brand brand-ou:font-headline brand-ou:font-normal pe-1 font-bold tabular-nums leading-[0.9]',\n          dayTextColorClassName,\n          {\n            'text-4xl': isReducedSize,\n            'text-5xl': !isReducedSize,\n          }\n        )}\n      >\n        {dateFormatParts.day.numeric}\n      </span>\n      <span className=\"flex flex-col\">\n        <span\n          className={cx(\n            'brand-ey:font-normal brand-lx:font-semibold brand-ou:text-primary block font-bold uppercase tabular-nums leading-none',\n            reducedSubTextSize\n          )}\n        >\n          {dateFormatParts.month.text}\n        </span>\n        <span\n          className={cx('brand-ou:text-primary block uppercase tabular-nums', reducedSubTextSize)}\n        >\n          {dateFormatParts.weekday}\n        </span>\n      </span>\n    </span>\n  );\n};\n\nexport { DatePickerDatesButton };\nexport default DatePickerDatesButton;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * 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,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setDate(1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameMonth} function options.\n */\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return (\n    laterDate_.getFullYear() === earlierDate_.getFullYear() &&\n    laterDate_.getMonth() === earlierDate_.getMonth()\n  );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n  const [dateLeft_, dateRight_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n  return +toDate(date) > +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n  return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months 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 months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return _date;\n  }\n  const dayOfMonth = _date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n  endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n  const daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    _date.setFullYear(\n      endOfDesiredMonth.getFullYear(),\n      endOfDesiredMonth.getMonth(),\n      dayOfMonth,\n    );\n    return _date;\n  }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from 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 months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n  return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link isFirstDayOfMonth} function options.\n */\n\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the first day of a month\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * const result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport function isFirstDayOfMonth(date, options) {\n  return toDate(date, options?.in).getDate() === 1;\n}\n\n// Fallback for modularized imports:\nexport default isFirstDayOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link isWithinInterval} function options.\n */\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param date - The date to check\n * @param interval - The interval to check\n * @param options - An object with options\n *\n * @returns The date is within the interval\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * // => true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * // => false\n *\n * @example\n * // For date equal to the interval start:\n * isWithinInterval(date, { start, end: date })\n * // => true\n *\n * @example\n * // For date equal to the interval end:\n * isWithinInterval(date, { start: date, end })\n * // => true\n */\nexport function isWithinInterval(date, interval, options) {\n  const time = +toDate(date, options?.in);\n  const [startTime, endTime] = [\n    +toDate(interval.start, options?.in),\n    +toDate(interval.end, options?.in),\n  ].sort((a, b) => a - b);\n\n  return time >= startTime && time <= endTime;\n}\n\n// Fallback for modularized imports:\nexport default isWithinInterval;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link lastDayOfWeek} function options.\n */\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone unless a context is specified.\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 - An object with options\n *\n * @returns The last day of a week\n */\nexport function lastDayOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n  _date.setHours(0, 0, 0, 0);\n  _date.setDate(_date.getDate() + diff);\n\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default lastDayOfWeek;\n","import * as React from 'react';\nimport cx from 'classnames';\n\ntype CalendarDay = {\n  /**\n   * is a date within the selected range\n   */\n  inRange?: boolean;\n  /**\n   * applies UI to denote that it is the current date\n   */\n  isToday?: boolean;\n  /**\n   * is either the `day` or `endDay`\n   */\n  selected?: boolean;\n  /**\n   * applies UI for a highlighted date\n   */\n  highlighted?: boolean;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * Displays a calendar day as a button\n */\nconst CalendarDay = React.forwardRef<HTMLButtonElement, CalendarDay>(\n  ({ className, inRange, isToday, selected, highlighted, ...rest }, forwardedRef) => (\n    <button\n      className={cx(\n        'disabled:text-text-disabled border-bg focus:border-primary hover:border-primary block h-[37px] w-full min-w-[37px] appearance-none border text-center uppercase ring-inset focus:!shadow-none disabled:cursor-default',\n        'brand-hi-refresh:hover:border-none brand-hi-refresh:hover:bg-primary-alt brand-hi-refresh:hover:text-text-inverse',\n        {\n          'bg-bg-alt text-text': !selected && inRange,\n          'bg-bg-alt': !selected && !inRange && isToday,\n          'bg-primary text-text-inverse focus:ring-bg focus:border-primary hover:border-primary hover:ring-bg hover:ring-1 focus:ring-1':\n            selected,\n          'font-bold': isToday,\n          'ring-primary ring-1': highlighted,\n          className,\n        }\n      )}\n      {...rest}\n      type=\"button\"\n      ref={forwardedRef}\n    />\n  )\n);\n\nCalendarDay.displayName = 'CalendarDay';\n\nexport { CalendarDay };\nexport default CalendarDay;\n","import {\n  getDaysSplitByWeeks,\n  useDaysOfWeek,\n  isKanji,\n  useDateFormat,\n  DEFAULT_LANGUAGE,\n  isVietnamese,\n} from '@dx-ui/utilities-dates';\nimport cx from 'classnames';\nimport {\n  addDays,\n  format,\n  isAfter,\n  isBefore,\n  isFirstDayOfMonth,\n  isSameDay,\n  isSameMonth,\n  isWithinInterval,\n  lastDayOfWeek,\n  startOfDay,\n  startOfMonth,\n  startOfWeek,\n  subDays,\n} from 'date-fns';\nimport * as React from 'react';\nimport { CalendarDay } from './calendar.day';\n\ntype CalendarMonth = {\n  /**\n   * selected day or start day when a range is allowed\n   */\n  day?: Date;\n  /**\n   * selected end day when a range is allowed\n   */\n  endDay?: Date;\n  /**\n   * furthest date available to book\n   */\n  maxDays?: number;\n  /**\n   * allow ability to select previous months\n   */\n  allowPrevious?: boolean;\n  /**\n   * month to display, should be passed as the first day of the month, can use `startOfMonth(someDate)` from the date-fns lib\n   */\n  month?: Date;\n  /**\n   * locale for i18n\n   */\n  locale: Intl.Locale;\n  /**\n   * callback when a day is selected\n   */\n  onDayChange: (day?: Date) => void;\n  focusedDay?: number;\n  onFocusedDayChange: (d: number, newD?: number) => void;\n  isVisibleMonth?: boolean;\n  dayLabel?: (d: Date, isStartDay?: boolean) => string;\n  /**\n   * marked as current date, can be set to any date\n   */\n  today?: Date;\n  /**\n   * If using a string, it must be in the `yyyy-MM-dd` format\n   */\n  highlightedDates?: Array<Date | string>;\n  /**\n   * If using a string, it must be in the `yyyy-MM-dd` format\n   */\n  enabledDates?: Array<Date | string>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst FORMAT = 'yyyy-MM-dd';\n\n/**\n * displays a calendar month\n */\nconst CalendarMonth = React.forwardRef<HTMLDivElement, CalendarMonth>(\n  (\n    {\n      day,\n      endDay,\n      maxDays = 730,\n      allowPrevious,\n      month: passedMonth,\n      onDayChange,\n      locale,\n      className,\n      onFocusedDayChange,\n      isVisibleMonth,\n      dayLabel,\n      today = new Date(),\n      highlightedDates: passedHighlightedDates = [],\n      enabledDates: passedEnabledDates = [],\n    },\n    forwardedRef\n  ) => {\n    const month = passedMonth || startOfMonth(today);\n\n    const dateToString = (d: Date | string) => {\n      const isDate = d instanceof Date;\n      const parsedDate = isDate ? ['', '', ''] : d.split('-');\n      const date: Date = isDate\n        ? d\n        : new Date(\n            parseInt(parsedDate[0] ?? '', 10),\n            parseInt(parsedDate[1] ?? '', 10) - 1,\n            parseInt(parsedDate[2] ?? '', 10)\n          );\n      return format(date, FORMAT);\n    };\n\n    const highlightedDates = React.useMemo(\n      () => passedHighlightedDates.map(dateToString),\n      [passedHighlightedDates]\n    );\n\n    const enabledDates = React.useMemo(\n      () => passedEnabledDates.map(dateToString),\n      [passedEnabledDates]\n    );\n\n    const weeks: Date[][] = React.useMemo(\n      () => getDaysSplitByWeeks({ date: month, locale }),\n      [month, locale]\n    );\n    const week = useDaysOfWeek({ locale });\n    const formattedDate = useDateFormat({\n      date: month,\n      locale,\n      options: { monthName: 'long' },\n    });\n    const yearText = isVietnamese(locale) ? 'năm ' : '';\n    const header = isKanji(locale)\n      ? `${formattedDate.year.numeric}${formattedDate.year.text} ${formattedDate.month.numeric}${formattedDate.month.text}`\n      : `${formattedDate.month.text} ${yearText}${formattedDate.year.numeric}`;\n    const id = React.useId();\n    const monthId = `calendar-month-${id}`;\n\n    return (\n      <div ref={forwardedRef} className={cx('w-full max-w-6xl select-none', className)}>\n        <h2\n          className=\"mb-2 block text-center text-lg font-extrabold\"\n          id={monthId}\n          data-testid=\"calendar-month-header\"\n          aria-live=\"polite\"\n        >\n          {header}\n        </h2>\n        <table role=\"grid\" className=\"w-full\" aria-labelledby={monthId}>\n          <thead>\n            <tr>\n              {week.map((weekday) => (\n                <th scope=\"col\" key={weekday} className=\"text-center text-xs uppercase\">\n                  <span aria-hidden>{weekday}</span>\n                </th>\n              ))}\n            </tr>\n          </thead>\n          <tbody>\n            {weeks.map((w, i) => (\n              <tr key={w[0]?.getTime() ?? i}>\n                {w.map((d) => {\n                  if (d) {\n                    const selected = (day && isSameDay(d, day)) || (endDay && isSameDay(d, endDay));\n                    const tab0 =\n                      selected || isSameDay(d, today) || (isVisibleMonth && isFirstDayOfMonth(d));\n                    const disabled = enabledDates.length\n                      ? !enabledDates.includes(format(d, FORMAT))\n                      : allowPrevious\n                      ? false\n                      : isBefore(d, startOfDay(today)) || isAfter(d, addDays(today, maxDays));\n                    const inRange =\n                      day && endDay ? isWithinInterval(d, { start: day, end: endDay }) : false;\n                    const highlighted = highlightedDates.includes(format(d, FORMAT));\n\n                    const selectDay = () => onDayChange(d);\n                    const onKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n                      let flag = false;\n                      switch (e.key) {\n                        case ' ':\n                        case 'Enter':\n                          selectDay();\n                          flag = true;\n                          break;\n                        case 'ArrowRight':\n                          onFocusedDayChange(d.getTime(), addDays(d, 1).getTime());\n                          break;\n                        case 'ArrowLeft':\n                          onFocusedDayChange(d.getTime(), subDays(d, 1).getTime());\n                          flag = true;\n                          break;\n                        case 'ArrowDown':\n                          onFocusedDayChange(d.getTime(), addDays(d, 7).getTime());\n                          flag = true;\n                          break;\n                        case 'ArrowUp':\n                          onFocusedDayChange(d.getTime(), subDays(d, 7).getTime());\n                          flag = true;\n                          break;\n                        case 'Home':\n                          onFocusedDayChange(d.getTime(), startOfWeek(d).getTime());\n                          flag = true;\n                          break;\n                        case 'End':\n                          onFocusedDayChange(d.getTime(), lastDayOfWeek(d).getTime());\n                          flag = true;\n                          break;\n                        default:\n                          break;\n                      }\n                      if (flag) {\n                        e.stopPropagation();\n                        e.preventDefault();\n                      }\n                    };\n\n                    return (\n                      <td key={d.getTime()} className=\"p-0\">\n                        {isSameMonth(d, month) ? (\n                          <CalendarDay\n                            id={`day-${d.getTime()}`}\n                            disabled={disabled}\n                            selected={selected}\n                            inRange={inRange}\n                            highlighted={highlighted}\n                            isToday={isSameDay(d, today)}\n                            onKeyDown={onKeyDown}\n                            onClick={(evt: React.MouseEvent<HTMLButtonElement>) => {\n                              if (evt.clientX && evt.clientY) {\n                                selectDay();\n                              }\n                            }}\n                            onFocus={() => onFocusedDayChange(d.getTime())}\n                            tabIndex={tab0 ? 0 : -1}\n                          >\n                            <span className=\"sr-only\">{dayLabel ? dayLabel(d) : ''}</span>\n                            <span aria-hidden>\n                              {d.toLocaleDateString(DEFAULT_LANGUAGE, {\n                                day: 'numeric',\n                              })}\n                            </span>\n                          </CalendarDay>\n                        ) : null}\n                      </td>\n                    );\n                  }\n                  return null;\n                })}\n              </tr>\n            ))}\n          </tbody>\n        </table>\n      </div>\n    );\n  }\n);\n\nCalendarMonth.displayName = 'CalendarMonth';\n\nexport { CalendarMonth };\nexport default CalendarMonth;\n","import {\n  addMonths,\n  format,\n  isAfter,\n  isBefore,\n  isSameDay,\n  isSameMonth,\n  startOfMonth,\n  subMonths,\n  addDays,\n} from 'date-fns';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { ControlBack, ControlNext } from '@dx-ui/osc-controls';\nimport type { CalendarMonth as CalendarMonthType } from './calendar.month';\nimport { CalendarMonth } from './calendar.month';\nimport { sendReward } from '@dx-ui/framework-conductrics';\n\nconst INPUT_FORMAT = 'yyyy-MM-dd';\n\nexport type Calendar = {\n  /**\n   * Used for giving unique ids based on the form in which it is used\n   */\n  formId?: string;\n  /**\n   * When used in a form this will be the key of the `day` i.e. `arrivalDate`\n   */\n  dayId?: string;\n  /**\n   * When used in a form this will be the key of the `endDay` i.e. `departureDate`\n   */\n  endDayId?: string;\n  /**\n   * Whether or not to allow selecting the same day for both `day` and `endDay`\n   */\n  allowSameDay?: boolean;\n  onEndDayChange?: (day?: Date) => void;\n  /**\n   * the a11y instructions for the calendar\n   */\n  instructions?: string;\n  /**\n   * used in a live region to possibly give context to the selected date(s)\n   */\n  message?: string;\n  /** to display the content of a month tab selector component before the calendar dates view */\n  MonthDateSelectorComponent?: ({\n    selectedCalendarDate,\n    onMonthUpdate,\n  }: {\n    selectedCalendarDate: Date;\n    onMonthUpdate: (d: Date) => void;\n  }) => React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement> &\n  Pick<\n    CalendarMonthType,\n    | 'day'\n    | 'endDay'\n    | 'onDayChange'\n    | 'maxDays'\n    | 'locale'\n    | 'dayLabel'\n    | 'allowPrevious'\n    | 'today'\n    | 'highlightedDates'\n    | 'enabledDates'\n  >;\n\n/**\n * A component to display calendars for selection of a date or date range. can be used in conjunction with a popup or inline.\n */\nexport const Calendar: React.FC<React.PropsWithChildren<Calendar>> = ({\n  allowSameDay,\n  allowPrevious,\n  children,\n  locale,\n  day,\n  endDay,\n  maxDays,\n  onDayChange,\n  onEndDayChange,\n  dayLabel,\n  instructions,\n  message,\n  formId,\n  dayId,\n  endDayId,\n  highlightedDates,\n  enabledDates,\n  today = new Date(),\n  MonthDateSelectorComponent,\n  ...rest\n}) => {\n  const ref = React.useRef<HTMLDivElement>(null);\n  const month0Ref = React.useRef<HTMLDivElement>(null);\n  const month1Ref = React.useRef<HTMLDivElement>(null);\n  const [focusedDay, setFocusedDay] = React.useState<number>();\n  const previousMonthRef = React.useRef<HTMLButtonElement>(null);\n  const nextMonthRef = React.useRef<HTMLButtonElement>(null);\n  const [month, setMonth] = React.useState(startOfMonth(day || today));\n  const [t] = useTranslation('osc-calendar');\n  const nextDay = day ? addDays(day, 1) : day;\n  const prevDisabled = allowPrevious ? false : isSameMonth(month, today);\n  const selectedDateRef = React.useRef(day || today);\n\n  const onChangeDay = (d?: Date) => {\n    if (onEndDayChange && d) {\n      if (day && !endDay) {\n        if (allowSameDay) {\n          /**\n           * Handle cases where `allowSameDay` is true\n           */\n          if (isSameDay(d, day) || isAfter(d, day)) {\n            onEndDayChange(d);\n          } else if (isBefore(d, day)) {\n            onDayChange(d);\n          }\n        } else {\n          /**\n           * Handle cases where `allowSameDay` is false\n           */\n          // eslint-disable-next-line no-lonely-if\n          if (isAfter(d, day)) {\n            onEndDayChange(d);\n          } else if (isBefore(d, day)) {\n            onDayChange(d);\n          }\n        }\n      } else {\n        onDayChange(d);\n        onEndDayChange(undefined);\n      }\n    } else {\n      onDayChange(d);\n    }\n    if (MonthDateSelectorComponent && d) {\n      selectedDateRef.current = d;\n    }\n    sendReward('g-date-selector-interaction-total');\n  };\n\n  const getDayLabel = (d: Date) => {\n    if (dayLabel) {\n      if (onEndDayChange && d) {\n        if (day && !endDay) {\n          if (allowSameDay) {\n            if (isSameDay(d, day) || isAfter(d, day)) {\n              return dayLabel(d, false);\n            }\n            if (isBefore(d, day)) {\n              return dayLabel(d, true);\n            }\n          } else {\n            if (isAfter(d, day)) {\n              return dayLabel(d, false);\n            }\n            if (isBefore(d, day)) {\n              return dayLabel(d, true);\n            }\n          }\n        } else {\n          return dayLabel(d, true);\n        }\n      } else {\n        return dayLabel(d, true);\n      }\n      return dayLabel(d);\n    }\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    return d.toLocaleDateString(locale, { dateStyle: 'full' });\n  };\n\n  const onMonthChange = (d: Date) => {\n    setMonth(d);\n  };\n\n  const onFocusedDayChange = (d: number, newD?: number, monthNumber?: number) => {\n    if (newD) {\n      setFocusedDay(newD);\n      const monthInFocus = monthNumber === 0 ? month : addMonths(month, 1);\n      if (!isSameMonth(monthInFocus, newD)) {\n        if (newD > d) {\n          if (monthNumber === 0 && !!month1Ref.current?.offsetParent) return;\n          onMonthChange(addMonths(month, 1));\n        }\n        if (newD < d && monthNumber === 0) {\n          onMonthChange(subMonths(month, 1));\n        }\n      }\n    }\n  };\n\n  React.useEffect(() => {\n    if (ref.current) {\n      requestAnimationFrame(() => {\n        const element = ref.current?.querySelector<HTMLButtonElement>(`#day-${focusedDay}`);\n        if (element) {\n          element.focus();\n        }\n      });\n    }\n  }, [focusedDay, ref]);\n\n  return (\n    <div ref={ref} className=\"w-full max-w-6xl\" data-testid=\"calendar-container\">\n      {!!day && (\n        <>\n          <input\n            type=\"hidden\"\n            name={dayId}\n            id={`${formId}-${dayId}`}\n            value={day && format(day, INPUT_FORMAT)}\n          />\n          <input\n            type=\"hidden\"\n            name={endDayId}\n            id={`${formId}-${endDayId}`}\n            value={\n              endDay ? format(endDay, INPUT_FORMAT) : day && format(addDays(day, 1), INPUT_FORMAT)\n            }\n          />\n        </>\n      )}\n      {MonthDateSelectorComponent ? (\n        <MonthDateSelectorComponent\n          selectedCalendarDate={selectedDateRef.current}\n          onMonthUpdate={onMonthChange}\n        />\n      ) : null}\n      <div\n        className={cx('flex justify-between', {\n          hidden: !!MonthDateSelectorComponent,\n        })}\n      >\n        <ControlBack\n          onClick={() => onMonthChange(subMonths(month, 1))}\n          ref={previousMonthRef}\n          disabled={prevDisabled}\n          label={t('previousMonth')}\n        />\n        <ControlNext\n          onClick={() => onMonthChange(addMonths(month, 1))}\n          ref={nextMonthRef}\n          label={t('nextMonth')}\n        />\n      </div>\n\n      {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n      <div className=\"max-w-6xl\" role=\"application\" aria-label={instructions} {...rest}>\n        <div aria-live=\"polite\" className=\"sr-only\">\n          {message}\n        </div>\n        <div className=\"flex w-full ltr:space-x-6\">\n          <CalendarMonth\n            ref={month0Ref}\n            onDayChange={onChangeDay}\n            locale={locale}\n            day={day}\n            endDay={endDay || nextDay}\n            month={month}\n            maxDays={maxDays}\n            focusedDay={focusedDay}\n            onFocusedDayChange={(d, newD) => onFocusedDayChange(d, newD, 0)}\n            isVisibleMonth\n            dayLabel={getDayLabel}\n            allowPrevious={allowPrevious}\n            today={today}\n            highlightedDates={highlightedDates}\n            enabledDates={enabledDates}\n          />\n          <CalendarMonth\n            ref={month1Ref}\n            onDayChange={onChangeDay}\n            locale={locale}\n            day={day}\n            endDay={endDay || nextDay}\n            maxDays={maxDays}\n            month={addMonths(month, 1)}\n            className=\"hidden md:block\"\n            focusedDay={focusedDay}\n            onFocusedDayChange={(d, newD) => onFocusedDayChange(d, newD, 1)}\n            dayLabel={getDayLabel}\n            allowPrevious={allowPrevious}\n            today={today}\n            highlightedDates={highlightedDates}\n            enabledDates={enabledDates}\n          />\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Calendar;\n","export * from './lib/calendar';\nexport * from './lib/calendar.day';\nexport * from './lib/calendar.month';\n","import type { Calendar as CalendarType } from '@dx-ui/osc-calendar';\nimport { Calendar } from '@dx-ui/osc-calendar';\nimport { useLocale } from '@dx-ui/utilities-dates';\nimport { isBefore, addDays } from 'date-fns';\nimport { useTranslation } from 'next-i18next';\nimport { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\n/**\n * Sub component containing calendar with shop form business logic applied\n * @returns JSX.Element\n */\n\nexport type DatePickerCalendarProps = {\n  day?: Date;\n  dayFieldName: string;\n  endDay?: Date;\n  endDayFieldName: string;\n  /**\n   * option to only search for single day stays\n   */\n  isDayUse?: boolean;\n  language: string;\n} & Pick<\n  CalendarType,\n  | 'allowSameDay'\n  | 'allowPrevious'\n  | 'dayLabel'\n  | 'maxDays'\n  | 'enabledDates'\n  | 'MonthDateSelectorComponent'\n>;\n\nexport const DatePickerCalendar = ({\n  allowPrevious,\n  allowSameDay,\n  day,\n  dayFieldName,\n  dayLabel,\n  isDayUse,\n  endDay,\n  endDayFieldName,\n  enabledDates,\n  language,\n  maxDays,\n  MonthDateSelectorComponent,\n}: DatePickerCalendarProps) => {\n  const { t } = useTranslation('osc-date-picker');\n  const [message, setMessage] = useState('');\n  const { setValue } = useFormContext();\n  const locale = useLocale({ language });\n  const onDayChange = (d?: Date) => {\n    if (d) {\n      setValue(dayFieldName, d, { shouldDirty: true, shouldValidate: true });\n      const departureDate = isDayUse ? d : endDay && isBefore(endDay, d) ? addDays(d, 1) : endDay;\n      setValue(endDayFieldName, departureDate, { shouldDirty: true, shouldValidate: true });\n      setMessage(\n        t(isDayUse ? 'selectedDayUseMessage' : 'selectedDateMessage', {\n          fromDate: d.toLocaleDateString(locale, { dateStyle: 'long' }),\n        })\n      );\n    }\n  };\n  const onEndDayChange = (d?: Date) => {\n    setValue(endDayFieldName, d, { shouldDirty: true, shouldValidate: true });\n    if (d) {\n      setMessage(\n        t('selectedEndDateMessage', {\n          fromDate: day?.toLocaleDateString(locale, {\n            dateStyle: 'long',\n          }),\n          toDate: d.toLocaleDateString(locale, { dateStyle: 'long' }),\n        })\n      );\n    }\n  };\n\n  return (\n    <Calendar\n      formId=\"date-picker-calendar\"\n      dayId=\"arrivalDate\"\n      endDayId=\"departureDate\"\n      allowPrevious={allowPrevious}\n      allowSameDay={allowSameDay}\n      maxDays={maxDays}\n      locale={locale}\n      day={day}\n      endDay={endDay}\n      onDayChange={onDayChange}\n      onEndDayChange={onEndDayChange}\n      instructions={t('instructions')}\n      message={message}\n      enabledDates={enabledDates}\n      dayLabel={dayLabel}\n      MonthDateSelectorComponent={MonthDateSelectorComponent}\n    />\n  );\n};\n","import * as React from 'react';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { FormInput, FormLabel } from '@dx-ui/osc-form';\nimport { ActionDialog } from '@dx-ui/osc-dialog-v2';\nimport type { DateFormat } from '@dx-ui/utilities-dates';\nimport { useLocale, useDateFormat } from '@dx-ui/utilities-dates';\nimport { addDays, startOfDay } from 'date-fns';\nimport { useTranslation } from 'next-i18next';\nimport DatePickerDatesButton from './date-picker.dates-button';\nimport type { DatePickerCalendarProps } from './date-picker.calendar';\nimport { DatePickerCalendar } from './date-picker.calendar';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { useIsClient } from 'usehooks-ts';\n\nexport type DatePickerProps = {\n  dateFieldNamePrefix?: string;\n  afterCalendarContent?: React.ReactNode;\n  SearchDatesIndicator?: ({ day, endDay }: { day: Date; endDay: Date }) => React.ReactNode;\n  /** Removes \"my dates are flexible\" input */\n  hideFlexDates?: boolean;\n  /** Options for \"When?\" and \"(Required)\" label */\n  labelOptions?: {\n    whenLabel: boolean;\n    requiredDates?: boolean;\n  };\n  hasFlexDatesDisabled?: boolean;\n  children?: (props: { day?: DateFormat; endDay?: DateFormat }) => React.ReactNode;\n  isOpen?: boolean;\n  /** Callback invoked on confirm/done */\n  onConfirm?: () => void;\n  /** Callback invoked on modal open */\n  onOpen?: () => void;\n  /** Callback invoked on cancel/dismiss */\n  onDismiss?: () => void;\n  /** Callback invoked on reset dates */\n  onResetDates?: () => void;\n  /**\n   * whether or not to set the default day of today. set to `false` if dates are optional\n   */\n  hasTodayAsDefault?: boolean;\n  /** Callback invoked on my flexible dates click */\n  onFlexibleDates?: () => void;\n  //NHCSEARCH-5363 Flex date verbiage MVT\n  flexDatesLabel?: string;\n} & Omit<DatePickerCalendarProps, 'day' | 'dayFieldName' | 'endDay' | 'endDayFieldName'>;\n\nexport type DatesData = {\n  flexDates: boolean;\n  day?: Date;\n  endDay?: Date;\n};\n\n/**\n * Use the `<DatePicker/>` component inside of the ShopForm in order to provide the OSC experience for\n * selecting arrival/departure dates. You can pass a custom button in as `children` and also use `renderProps`\n * to access the `day` and `endDay` for use in your custom button. The default button is `<DatePickerDatesButton/>`\n */\nexport const DatePicker = ({\n  afterCalendarContent,\n  MonthDateSelectorComponent,\n  SearchDatesIndicator,\n  allowPrevious,\n  allowSameDay = true,\n  hasFlexDatesDisabled = false,\n  isDayUse = false,\n  dateFieldNamePrefix = 'dates',\n  hideFlexDates,\n  labelOptions,\n  language,\n  maxDays = 730,\n  hasTodayAsDefault = true,\n  enabledDates = [],\n  children,\n  onConfirm,\n  onFlexibleDates,\n  onOpen,\n  onDismiss,\n  onResetDates,\n  isOpen: openProp,\n  //NHCSEARCH-5363 Flex date verbiage MVT\n  flexDatesLabel,\n}: DatePickerProps) => {\n  const { t } = useTranslation('osc-date-picker');\n  const locale = useLocale({ language });\n  const [open, setOpen] = React.useState(openProp);\n  const buttonRef = React.useRef<HTMLButtonElement>(null);\n  const { setValue, reset, getValues } = useFormContext();\n  const dayFieldName = `${dateFieldNamePrefix}.arrivalDate` as const;\n  const endDayFieldName = `${dateFieldNamePrefix}.departureDate` as const;\n\n  const day = useWatch({ name: dayFieldName }) as Date;\n  const endDay = useWatch({ name: endDayFieldName }) as Date;\n\n  const [initialValues, setInitialValues] = React.useState<{\n    arrivalDate: Date;\n    departureDate: Date;\n    datesFlex: boolean;\n  } | null>(null);\n\n  const isDateOptional = !hasTodayAsDefault && !(day && endDay);\n  React.useEffect(() => {\n    if (!day && hasTodayAsDefault) {\n      const dayDefault = startOfDay(new Date());\n      const endDayDefault = isDayUse ? dayDefault : addDays(dayDefault, 1);\n\n      setValue(dayFieldName, dayDefault, { shouldDirty: true });\n      setValue(endDayFieldName, endDayDefault, { shouldDirty: true });\n    }\n  }, [day, dayFieldName, isDayUse, endDayFieldName, setValue, hasTodayAsDefault]);\n\n  const dayLabel = day ? day.toLocaleDateString(locale, { dateStyle: 'long' }) : '';\n  const endDayLabel = isDayUse\n    ? dayLabel\n    : endDay\n    ? endDay.toLocaleDateString(locale, { dateStyle: 'long' })\n    : '';\n\n  const nextDay = day ? addDays(day, 1) : day;\n\n  const formatDay = useDateFormat({ date: day, locale });\n  const formatEndDay = useDateFormat({ date: endDay, locale });\n\n  const openModal = () => {\n    setOpen(true);\n    setInitialValues(cloneDeep(getValues().dates));\n    onOpen?.();\n  };\n\n  const dismissAndResetToOriginalDates = () => {\n    setOpen(false);\n    reset({ ...getValues(), dates: { ...initialValues } }, { keepDefaultValues: true });\n    onDismiss?.();\n  };\n  const confirmAndCloseModal = () => {\n    setOpen(false);\n    //if user selects an arrivalDate but not departure set departureDate to arrivalDate + 1 day. TODO Revisit this once we revise these elements to have update button (or apply btn)\n    if (day && !endDay) {\n      setValue(endDayFieldName, isDayUse ? day : addDays(day, 1), {\n        shouldDirty: true,\n        shouldValidate: true,\n      });\n    }\n    onConfirm?.();\n  };\n\n  // MVT - Display \"Reset Dates\" link\n  const [resetDateA11y, setResetDateA11y] = React.useState(false);\n  const resetDates = () => {\n    setResetDateA11y(true);\n    setValue('dates.arrivalDate', null, { shouldDirty: true });\n    setValue('dates.departureDate', null, { shouldDirty: true });\n    setValue('dates.datesFlex', false, { shouldDirty: true });\n    setTimeout(() => setResetDateA11y(false), 500);\n    if (onResetDates) onResetDates();\n  };\n  const resetButtonCTA = {\n    isEnabled: !hasTodayAsDefault,\n    label: t('resetDates'),\n    resetA11Y: resetDateA11y ? t('allSelectionsReset') : undefined,\n  };\n\n  const isClient = useIsClient();\n\n  return (\n    <div className=\"w-full sm:w-auto\">\n      {labelOptions?.whenLabel || isDateOptional ? (\n        <FormLabel\n          label={t('when')}\n          required={labelOptions?.requiredDates}\n          className=\"brand-ey:font-normal brand-lx:font-semibold flex pb-0.5 max-sm:w-1/4 max-sm:items-start max-sm:justify-start lg:pb-1.5\"\n          data-osc-product=\"search-dates-label\"\n        />\n      ) : null}\n      <ActionDialog\n        contentDataAttribute=\"data-osc-date-picker\"\n        className=\"h-auto\"\n        title={day ? t('header') : t('addDates')}\n        isOpen={open}\n        onDismiss={dismissAndResetToOriginalDates}\n        onCancel={dismissAndResetToOriginalDates}\n        size=\"2xl\"\n        onConfirm={confirmAndCloseModal}\n        onReset={resetDates}\n        buttonOptions={{ reset: resetButtonCTA }}\n        dialogTrigger={\n          <button\n            className=\"divide-border brand-lx:divide-primary flex w-full appearance-none justify-center divide-x rounded text-start sm:w-auto sm:gap-2 lg:gap-3 rtl:divide-x-reverse\"\n            data-osc-product=\"shop-form-dates\"\n            id=\"shop-form-dates\"\n            ref={buttonRef}\n            type=\"button\"\n            aria-label={`${t('checkin')} ${dayLabel ? dayLabel : t('addDates')}, ${t('checkout')} ${\n              endDayLabel ? endDayLabel : t('addDates')\n            }`}\n            onClick={openModal}\n            data-testid=\"search-dates-button\"\n            // This check is necessary to fix a hydration issue\n            // See for reference: https://gitlab.svc-m.hhc.hilton.com/pac/hiw/dx-ui/-/merge_requests/4994\n            disabled={!isClient}\n          >\n            {children ? (\n              children({ day: formatDay, endDay: formatEndDay })\n            ) : (\n              <>\n                <DatePickerDatesButton day={day} language={language}>\n                  <span className=\"brand-ou:text-primary block font-bold\">{t('checkin')}</span>\n                  <span className=\"brand-ou:text-primary block text-xs\">{t('addDates')}</span>\n                </DatePickerDatesButton>\n                {!isDayUse ? (\n                  <DatePickerDatesButton day={endDay || nextDay} language={language}>\n                    <span className=\"brand-ou:text-primary block font-bold\">{t('checkout')}</span>\n                    <span className=\"brand-ou:text-primary block text-xs\">{t('addDates')}</span>\n                  </DatePickerDatesButton>\n                ) : null}\n              </>\n            )}\n          </button>\n        }\n      >\n        <div\n          data-osc-product=\"search-dates\"\n          className=\"border-border mx-2 border-b border-solid py-2 \"\n        >\n          <DatePickerCalendar\n            allowPrevious={allowPrevious}\n            allowSameDay={allowSameDay}\n            day={day}\n            dayFieldName={dayFieldName}\n            isDayUse={isDayUse}\n            endDay={isDayUse ? day : endDay}\n            endDayFieldName={endDayFieldName}\n            maxDays={maxDays}\n            enabledDates={enabledDates}\n            dayLabel={(d, checkin) =>\n              t('dayLabel', {\n                date: d.toLocaleDateString(locale, { dateStyle: 'full' }),\n                type: t(checkin ? 'checkin' : 'checkout'),\n              })\n            }\n            language={language}\n            MonthDateSelectorComponent={MonthDateSelectorComponent}\n          />\n        </div>\n        {SearchDatesIndicator ? (\n          <div className=\"border-border-alt flex justify-center border-b p-4 md:hidden\">\n            <SearchDatesIndicator day={day} endDay={endDay} />\n          </div>\n        ) : null}\n        {!hideFlexDates || afterCalendarContent || SearchDatesIndicator ? (\n          <div className=\"flex justify-between pb-4 pt-3\">\n            {!hideFlexDates ? (\n              <FormInput\n                label={flexDatesLabel ?? t('flexibleDateLabel')}\n                type=\"checkbox\"\n                name=\"dates.datesFlex\"\n                disabled={hasFlexDatesDisabled}\n                onClick={onFlexibleDates}\n              />\n            ) : null}\n            {afterCalendarContent ? afterCalendarContent : null}\n            {SearchDatesIndicator ? (\n              <div className=\"hidden md:block\">\n                <SearchDatesIndicator day={day} endDay={endDay} />\n              </div>\n            ) : null}\n          </div>\n        ) : null}\n      </ActionDialog>\n    </div>\n  );\n};\n\nexport default DatePicker;\n","import { useLocale } from '@dx-ui/utilities-dates';\nimport { useTranslation } from 'next-i18next';\nimport { differenceInDays } from 'date-fns';\n\nexport function DateRangeScreenReaderText({\n  fromDate,\n  language,\n  toDate,\n}: {\n  fromDate: Date | null | undefined;\n  language: string;\n  toDate: Date | null | undefined;\n}) {\n  const { t } = useTranslation('osc-date-picker');\n  const locale = useLocale({ language });\n  const fromDateString = fromDate ? fromDate.toLocaleDateString(locale, { dateStyle: 'long' }) : '';\n  const toDateString = toDate ? toDate.toLocaleDateString(locale, { dateStyle: 'long' }) : '';\n  const nights = fromDate && toDate ? differenceInDays(toDate, fromDate) : 0;\n  return (\n    <span className=\"sr-only\">\n      {t('dateRange', { fromDate: fromDateString, toDate: toDateString, count: nights })}\n    </span>\n  );\n}\n","export * from './lib/date-picker';\nexport * from './lib/date-picker.calendar';\nexport * from './lib/date-picker.dates-button';\nexport * from './lib/date-picker.screenreader';\n","import type { DatePickerProps } from '@dx-ui/osc-date-picker';\nimport { DatePicker } from '@dx-ui/osc-date-picker';\n/**\n *\n * @param props\n * @returns Soft wrapper of <DatePicker /> component to maintain compatibility. Once all apps are in monorepo work to deprecate this.\n */\n\nexport type ShopFormDatesProps = {\n  arrivalDate: Date | null;\n  departureDate: Date | null;\n  datesFlex: boolean;\n};\n\nexport const ShopFormDates = (props: DatePickerProps) => <DatePicker {...props} />;\n","import type * as React from 'react';\n\n/**\n * @deprecated\n * The `<ShopFormInfoContainer/>` can be used for layout purposes, originally for use as a wrapper around `<ShopFormRooms/>` and `<ShopFormSpecialRates/>`\n */\nconst ShopFormInfoContainer = ({ children }: { children: React.ReactNode }) => children;\n\nShopFormInfoContainer.displayName = 'ShopFormInfoContainer';\n\nexport { ShopFormInfoContainer };\nexport default ShopFormInfoContainer;\n","import { useFormContext } from 'react-hook-form';\nimport type { FormDataValues } from './shop-form';\n\nexport const useShopFormContext = () => useFormContext<FormDataValues>();\n","import * as React from 'react';\nimport cx from 'classnames';\n\nconst InfoCircle: React.FC<{ error: boolean; info: string | null; 'data-testid'?: string }> = ({\n  error,\n  info,\n  ...rest\n}) => {\n  if (error || info !== null) {\n    return (\n      <div\n        className={cx(\n          'text-text-inverse absolute -top-2 inline-block size-5 rounded-full ltr:-right-2 rtl:-left-2',\n          {\n            'bg-danger': !!error,\n            'bg-primary': !!info && !error,\n          }\n        )}\n        {...(rest?.['data-testid'] && { 'data-testid': `${rest?.['data-testid']}-info` })}\n      >\n        <span aria-hidden=\"true\">{error ? '!' : info !== null ? info : null}</span>\n      </div>\n    );\n  }\n\n  return null;\n};\n\nexport type ShopFormButtonProps = React.ComponentProps<'button'> & {\n  label: string;\n  product: string;\n  hasError: boolean;\n  info?: string | null;\n  'data-testid'?: string;\n};\n\nexport const ShopFormButton = React.forwardRef<HTMLButtonElement, ShopFormButtonProps>(\n  ({ product, children, label, hasError, info = null, ...props }, ref) => {\n    return (\n      <div data-osc-product={product} className=\"flex flex-1\">\n        <button\n          data-osc-product=\"shop-form-selection-button\"\n          className={cx(\n            'shop-form-btn btn btn-lg relative w-full px-2 motion-safe:transition lg:px-4',\n            props.className\n          )}\n          ref={ref}\n          type=\"button\"\n          {...props}\n        >\n          <span>{label}</span>\n          <InfoCircle error={hasError} info={info} data-testid={props?.['data-testid']} />\n        </button>\n        {children}\n      </div>\n    );\n  }\n);\n\nShopFormButton.displayName = 'ShopFormButton';\n\nexport default ShopFormButton;\n","import { useRect } from '@dx-ui/utilities-use-rect';\nimport cx from 'classnames';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { getPopupStyles } from '@dx-ui/osc-popup';\n\nexport type Tooltip = {\n  message: React.ReactNode;\n  /** Used to apply custom styles to tooltip's popup */\n  popupClassName?: string;\n} & React.HTMLAttributes<HTMLButtonElement>;\n\nexport type TooltipCause = 'escape' | 'focus' | 'initial' | 'mouse';\n\nexport const Tooltip: React.FC<React.PropsWithChildren<Tooltip>> = ({\n  children,\n  className,\n  message,\n  popupClassName,\n  ...rest\n}) => {\n  const { t } = useTranslation('osc-tooltip');\n  const id = React.useId();\n  const tipId = `tooltip-${id}`;\n  const [currentCause, setCurrentCause] = React.useState<TooltipCause>('initial');\n  const [visible, setVisible] = React.useState(false);\n\n  const buttonRef = React.useRef(null);\n  const popoverRef = React.useRef(null);\n  const popoverRect = useRect({ ref: popoverRef });\n  const targetRect = useRect({ ref: buttonRef });\n  const styles = getPopupStyles(targetRect, popoverRect);\n\n  const hide = React.useCallback(\n    (cause: TooltipCause) => {\n      if (cause === 'escape' || currentCause === cause) {\n        setVisible(false);\n        setCurrentCause('initial');\n      }\n    },\n    [currentCause]\n  );\n  const show = (cause: TooltipCause) => {\n    if (currentCause === 'focus') return;\n    setVisible(true);\n    setCurrentCause(cause);\n  };\n\n  React.useEffect(() => {\n    const onKeyDown = (e: KeyboardEvent) => {\n      if (visible && e.key === 'Escape') {\n        hide('escape');\n      }\n    };\n    window.addEventListener('keydown', onKeyDown);\n    return () => {\n      window.removeEventListener('keydown', onKeyDown);\n    };\n  }, [hide, visible]);\n\n  return (\n    <span className=\"relative\">\n      <button\n        type=\"button\"\n        className={className}\n        ref={buttonRef}\n        aria-describedby={tipId}\n        onBlur={() => hide('focus')}\n        onFocus={() => show('focus')}\n        onMouseOver={() => show('mouse')}\n        onMouseOut={() => hide('mouse')}\n        {...rest}\n      >\n        {children}\n      </button>\n      <span\n        id={tipId}\n        ref={popoverRef}\n        role=\"tooltip\"\n        aria-hidden={!visible}\n        className={cx(\n          'bg-bg border-border fixed z-50 mt-1 whitespace-nowrap rounded border border-solid p-2 shadow-lg',\n          popupClassName,\n          { block: visible, hidden: !visible }\n        )}\n        style={styles}\n        aria-label={t('label')}\n      >\n        {message}\n      </span>\n    </span>\n  );\n};\n\nexport default Tooltip;\n","export * from './lib/tooltip';\n","import cx from 'classnames';\nimport type * as React from 'react';\nimport { useTranslation } from 'next-i18next';\n\nexport type StepperProps = {\n  /**\n   * when used in a form, this is the id of the hidden input. (must also include the `inputName` prop)\n   */\n  inputId?: HTMLInputElement['id'];\n  /**\n   * when used in a form, this will be the key for the form results. (must also include the `inputId` prop)\n   */\n  inputName?: HTMLInputElement['name'];\n  /**\n   * the current state of the Stepper\n   */\n  value?: number;\n  /**\n   * upper limit of the value\n   */\n  max?: number;\n  /**\n   * lower limit of the value\n   */\n  min?: number;\n  onMinusClick?: React.DOMAttributes<HTMLButtonElement>['onClick'];\n  onPlusClick?: React.DOMAttributes<HTMLButtonElement>['onClick'];\n  /**\n   * used for a11y to give a label to the value\n   */\n  valueLabel?: string;\n  /**\n   * used for a11y to label the minus button\n   */\n  minusLabel?: string;\n  minusTestId?: string;\n  /**\n   * used for a11y to label the plus button\n   */\n  plusLabel?: string;\n  plusTestId?: string;\n  /**\n   * Allows control of plus and minus icon colors\n   */\n  iconColor?: string;\n  iconColorDisabled?: string;\n};\n\ntype Stepper = StepperProps & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Used to increment/decrement a value\n *\n * Use `onPlusClick` and `onMinusClick` to change value one by one.\n */\nexport const Stepper: React.FC<React.PropsWithChildren<Stepper>> = ({\n  className,\n  inputId,\n  inputName,\n  max,\n  min,\n  onMinusClick,\n  onPlusClick,\n  value = 0,\n  valueLabel = '',\n  minusLabel,\n  minusTestId,\n  plusLabel,\n  plusTestId,\n  iconColor,\n  iconColorDisabled,\n  ...rest\n}) => {\n  const minusDisabled = value === min;\n  const plusDisabled = value === max;\n  const { t } = useTranslation('osc-stepper');\n  return (\n    <div className={cx('flex items-center justify-center', className)} {...rest}>\n      {!!inputId && !!inputName && (\n        <input id={inputId} type=\"hidden\" name={inputName} value={value} />\n      )}\n      <button\n        type=\"button\"\n        className=\"btn btn-primary-text btn-lg size-6 rounded-full\"\n        onClick={onMinusClick}\n        disabled={minusDisabled}\n        aria-label={minusLabel || t('minusLabel')}\n        data-testid={minusTestId}\n      >\n        <span className=\"sr-only\">{minusLabel || t('minusLabel')}</span>\n        <svg\n          role=\"img\"\n          aria-hidden\n          viewBox=\"0 0 27 27\"\n          className={cx('size-6', {\n            'stroke-text-disabled': minusDisabled,\n            'stroke-primary': !minusDisabled,\n          })}\n          style={{ stroke: minusDisabled ? iconColorDisabled : iconColor }}\n        >\n          <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(1 .68)\">\n            <ellipse cx=\"12.5\" cy=\"12.724\" rx=\"12.5\" ry=\"12.724\" />\n            <path strokeLinecap=\"square\" d=\"M6.5 12.724h12.042M12.5 18.574\" />\n          </g>\n        </svg>\n      </button>\n      <span className=\"block w-10 px-1 text-center tabular-nums\">\n        <span className=\"sr-only\" aria-live=\"polite\">\n          {valueLabel || value}\n        </span>\n        <span aria-hidden>{value}</span>\n      </span>\n      <button\n        type=\"button\"\n        className=\"btn btn-primary-text btn-lg size-6 rounded-full\"\n        onClick={onPlusClick}\n        disabled={plusDisabled}\n        aria-label={plusLabel || t('plusLabel')}\n        data-testid={plusTestId}\n      >\n        <span className=\"sr-only\">{plusLabel || t('plusLabel')}</span>\n        <svg\n          role=\"img\"\n          aria-hidden\n          viewBox=\"0 0 27 27\"\n          className={cx('size-6', {\n            'stroke-text-disabled': plusDisabled,\n            'stroke-primary': !plusDisabled,\n          })}\n          style={{ stroke: plusDisabled ? iconColorDisabled : iconColor }}\n        >\n          <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(1 .68)\">\n            <ellipse cx=\"12.5\" cy=\"12.724\" rx=\"12.5\" ry=\"12.724\" />\n            <path strokeLinecap=\"square\" d=\"M6.5 12.724h12.042M12.5 18.832V6.574\" />\n          </g>\n        </svg>\n      </button>\n    </div>\n  );\n};\n\nexport default Stepper;\n","export * from './stepper';\n","export * from './lib';\n","import { Tooltip } from '@dx-ui/osc-tooltip';\nimport { Stepper } from '@dx-ui/osc-stepper';\nimport { FormSelect } from '@dx-ui/osc-form';\nimport * as React from 'react';\nimport type { RegisterOptions } from 'react-hook-form';\nimport { useFormContext, useFieldArray } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport Icon from '@dx-ui/osc-icon';\nimport { logError } from '@dx-ui/framework-logger';\n\ntype RoomsRoom = {\n  adultAge?: number;\n  isAdultsOnly?: boolean;\n  /**\n   * if ageRange is provided, Age based pricing is in effect\n   * */\n  ageRange?: {\n    min: number;\n    max: number;\n  };\n  /**\n   * if ages are required to get the best rates, making `agesRequired` will show the age select elements for each child entered.\n   */\n  agesRequired?: boolean;\n  /**\n   * disables the add room button if number of rooms is greater than this value\n   */\n  maxRooms?: number;\n  /**\n   * the maximum number of collective occupants allowed per room\n   * be it adults or children with a min of one adult\n   */\n  maxOccupants?: number;\n  index: number;\n  onRemoveRoom: (val: number) => void;\n};\n\nconst RoomsRoom: React.FC<React.PropsWithChildren<RoomsRoom>> = ({\n  adultAge: adultAgeProp,\n  isAdultsOnly,\n  agesRequired,\n  ageRange,\n  index,\n  onRemoveRoom,\n  maxOccupants = 8,\n}) => {\n  const [t] = useTranslation('osc-rooms');\n  const { setValue, watch, control, trigger } = useFormContext();\n  const useAgeBasedPricing = Boolean(ageRange);\n  const adultsId = `rooms.${index}.adults` as const;\n  const childrenId = `rooms.${index}.children` as const;\n  const adultAge = adultAgeProp || ageRange?.max;\n  const adultAges = adultAge ? t('occupancy.adultAges', { adultAge }) : '';\n  const { fields, remove, append } = useFieldArray({\n    control,\n    name: childrenId,\n  });\n  const roomsValue = watch('rooms');\n  const numRooms = roomsValue?.length || 0;\n  const adults = watch(adultsId);\n  const children = watch(childrenId) || [];\n  const roomNum = index + 1;\n  const roomTestId = `rooms-room-${roomNum}`;\n\n  React.useEffect(() => {\n    const getChildAgesFieldsAndValidate = async () => {\n      if (fields.length > 0 && agesRequired) {\n        // get all the children age field names\n        const names = fields.map((field, i) => `${childrenId}.${i}.age` as const);\n        // validate immediately\n        await trigger(names);\n      }\n    };\n    getChildAgesFieldsAndValidate().catch((error) =>\n      logError('OSC_ROOMS', error, 'failed to validate children ages')\n    );\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [fields, agesRequired]);\n  return (\n    <div data-testid={roomTestId}>\n      <div className=\"sr-only\" aria-live=\"polite\">\n        <span>{`${numRooms > 1 ? `${t('occupancy.roomHas', { num: roomNum })} ` : ''} ${t(\n          'occupancy.adult',\n          {\n            count: adults,\n          }\n        )}, ${t('occupancy.child', { count: children.length })}`}</span>\n      </div>\n      <div className=\"flex items-center space-x-2\">\n        <div className=\"flex w-1/3 items-center\">\n          {numRooms > 1 && (\n            <button\n              data-testid={`${roomTestId}-remove`}\n              type=\"button\"\n              className=\"stroke-primary hover:stroke-primary-alt mr-2 appearance-none rounded-full hover:duration-100\"\n              onClick={() => onRemoveRoom(index)}\n            >\n              <span className=\"sr-only\">{t('occupancy.removeRoom', { num: roomNum })}</span>\n              <svg role=\"img\" aria-hidden viewBox=\"0 0 27 27\" className=\"stroke-primary size-6\">\n                <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-4.4 -4.4)\">\n                  <ellipse\n                    transform=\"rotate(45 17.836 17.836)\"\n                    cx=\"17.836\"\n                    cy=\"17.836\"\n                    rx=\"12.5\"\n                    ry=\"12.724\"\n                  />\n                  <path d=\"M13.585 13.572l8.515 8.515m-8.592.047l8.668-8.668\" />\n                </g>\n              </svg>\n            </button>\n          )}\n          <span>{t('occupancy.room', { num: roomNum })}</span>\n        </div>\n        <div className=\"w-1/3\">\n          <Stepper\n            onMinusClick={() => {\n              setValue(adultsId, adults - 1, { shouldDirty: true, shouldValidate: true });\n            }}\n            onPlusClick={() => {\n              setValue(adultsId, adults + 1, { shouldDirty: true, shouldValidate: true });\n            }}\n            min={1}\n            max={maxOccupants - children.length}\n            value={adults}\n            valueLabel={t('occupancy.adult', { count: adults })}\n            plusLabel={t('occupancy.addAdult', { num: roomNum, adultAges })}\n            minusLabel={t('occupancy.removeAdult', { num: roomNum, adultAges })}\n          />\n        </div>\n        <div className=\"w-1/3\">\n          <Stepper\n            onMinusClick={() => {\n              remove(fields.length - 1);\n            }}\n            onPlusClick={() => {\n              // NHCSEARCH-4849 - ShouldFocus false keeps focus on stepper button\n              append({ age: null }, { shouldFocus: false });\n            }}\n            min={0}\n            max={isAdultsOnly ? 0 : maxOccupants - adults}\n            value={children.length}\n            valueLabel={t('occupancy.child', { count: children.length })}\n            plusLabel={t('occupancy.addChild', { num: roomNum })}\n            minusLabel={t('occupancy.removeChild', { num: roomNum })}\n          />\n        </div>\n      </div>\n\n      {useAgeBasedPricing && children.length > 0 && (\n        <div className=\"pt-2\" data-testid=\"rooms-age-based\">\n          <h2 className=\"flex items-center space-x-2 pb-2 text-sm font-bold\">\n            <span>{t('occupancy.agesLabel')}</span>\n            <Tooltip message={t('occupancy.ageBasedHelp')} className=\"btn btn-primary-text btn-lg\">\n              <Icon name=\"info-circle\" variant=\"regular\" size=\"md\" />\n            </Tooltip>\n          </h2>\n          <div className=\"flex max-w-44 flex-col space-y-2 pl-4\">\n            {fields.map((field, i) => {\n              const fieldName = `${childrenId}.${i}.age` as const;\n              const ageId = i + 1;\n\n              const registerOptions: RegisterOptions = {\n                valueAsNumber: true,\n                onChange: async () => {\n                  await trigger(fieldName);\n                },\n              };\n              if (agesRequired) {\n                registerOptions.required = t('occupancy.ageBasedError');\n              }\n              return (\n                <FormSelect\n                  key={field.id}\n                  data-testid={`${roomTestId}-childage-${ageId}`}\n                  name={fieldName}\n                  labelClassName=\"label-inline !self-auto\"\n                  containerClassName=\"text-right\"\n                  label={t('occupancy.kidLabel', { num: ageId })}\n                  registerOptions={registerOptions}\n                >\n                  <option disabled value=\"\" />\n                  {Array.from({ length: ageRange!.max - ageRange!.min }).map((__, j) => {\n                    const value = j + ageRange!.min;\n                    return (\n                      <option key={value === 0 ? t('occupancy.underOne') : value} value={value}>\n                        {value === 0 ? t('occupancy.underOne') : value}\n                      </option>\n                    );\n                  })}\n                </FormSelect>\n              );\n            })}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { RoomsRoom };\nexport default RoomsRoom;\n","import * as React from 'react';\nimport { useFieldArray, useWatch } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport type { RoomsRoom as RoomsRoomType } from './rooms.room';\nimport { RoomsRoom } from './rooms.room';\nimport type { ShopFormRoom } from './types';\n\nexport type Rooms = Pick<\n  RoomsRoomType,\n  'ageRange' | 'agesRequired' | 'maxRooms' | 'maxOccupants' | 'isAdultsOnly' | 'adultAge'\n> & {\n  /**\n   * Required string for message value displayed when the max-occupancy of a room is reached.<br><br>\n   * Recommended values from 'osc-shop-form' resource bundle: <br>\n   * <code> const { t } = useTranslation('osc-rooms'); </code><br>\n   *  • base: <b>t('occupancy.occupancyLimitMessage') </b> <br>\n   * -returns: \"You've reached the maximum number of guests for a single room. Please add another room.\"<br>\n   *  • find nearby: <b>t('occupancy.findNearbyOccupancyLimitMessage') </b> <br>\n   * -returns: \"You've reached the maximum number of guests for a single room. Please add another room or adjust your search to find nearby hotels with larger room capacities.\"\n   * <br><br>\n   */\n  occupancyLimitMessage: React.ReactNode;\n};\n\nexport const newRoom = Object.freeze({ adults: 1, children: [] });\nexport const Rooms: React.FC<React.PropsWithChildren<Rooms>> = ({\n  adultAge: adultAgeProp,\n  agesRequired,\n  ageRange,\n  maxRooms = 9,\n  maxOccupants = 8,\n  occupancyLimitMessage,\n  isAdultsOnly,\n}) => {\n  const adultAge = adultAgeProp || ageRange?.max;\n  const [t] = useTranslation('osc-rooms');\n  const buttonRef = React.useRef<HTMLButtonElement>(null);\n  const { fields, append, remove } = useFieldArray({ name: 'rooms' });\n  const rooms: ShopFormRoom[] = useWatch({ name: 'rooms' });\n  const reachedMaxOccupants =\n    occupancyLimitMessage &&\n    rooms?.some((room) => room.adults + room.children.length === maxOccupants);\n  const canOnlyBookSingleRoom = maxRooms === 1;\n\n  const handleRemoveRoom = (val: number) => {\n    remove(val);\n    if (buttonRef.current) {\n      buttonRef.current.focus();\n    }\n  };\n\n  return (\n    <>\n      <div className=\"w-full\">\n        <div className=\"flex\" aria-hidden>\n          <span className=\"w-1/3 font-bold ltr:text-left rtl:text-right\">\n            {t('occupancy.roomHeader')}\n          </span>\n          <span className=\"w-1/3 text-center font-bold\">\n            {t('occupancy.adultHeader')}\n            {adultAge && <span className=\"pl-1 text-sm font-normal\">({adultAge}+)</span>}\n          </span>\n          <span className=\"w-1/3 text-center font-bold\">{t('occupancy.childHeader')}</span>\n        </div>\n      </div>\n      <div data-osc-product=\"rooms\" className=\"w-full space-y-4 py-3\" data-testid=\"rooms\">\n        {fields.map((field, index) => (\n          <RoomsRoom\n            key={field.id}\n            index={index}\n            ageRange={ageRange}\n            onRemoveRoom={handleRemoveRoom}\n            agesRequired={agesRequired}\n            maxOccupants={maxOccupants}\n            isAdultsOnly={isAdultsOnly}\n            adultAge={adultAge}\n          />\n        ))}\n      </div>\n      {isAdultsOnly && adultAge ? (\n        <p className=\"pb-3 text-xs\">{t('occupancy.adultsOnlyNote', { adultAge })}</p>\n      ) : null}\n      {reachedMaxOccupants ? (\n        <div className=\"flex w-full justify-start pb-3\">\n          <p className=\"break-words text-xs\" aria-live=\"assertive\" role=\"alert\">\n            {occupancyLimitMessage}\n          </p>\n        </div>\n      ) : null}\n      <div className=\"border-border space-y-2 border-t border-solid py-2\">\n        {canOnlyBookSingleRoom ? (\n          <p className=\"text-xs\">{t('occupancy.singleRoomOnly')}</p>\n        ) : (\n          <button\n            type=\"button\"\n            data-testid=\"rooms-add-room\"\n            ref={buttonRef}\n            className=\"stroke-primary hover:stroke-primary-alt disabled:text-text-disabled disabled:stroke-text-disabled flex appearance-none items-center font-bold hover:duration-100\"\n            onClick={() => {\n              append({ ...newRoom });\n            }}\n            disabled={fields.length >= maxRooms}\n          >\n            <svg role=\"img\" aria-hidden viewBox=\"0 0 27 27\" className=\"size-6 ltr:mr-2 rtl:ml-2\">\n              <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(1 .68)\">\n                <ellipse cx=\"12.5\" cy=\"12.724\" rx=\"12.5\" ry=\"12.724\" />\n                <path strokeLinecap=\"square\" d=\"M6.5 12.724h12.042M12.5 18.832V6.574\" />\n              </g>\n            </svg>\n            {t('occupancy.addRoom')}\n          </button>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport default Rooms;\n","import * as React from 'react';\nimport { type FieldValues, FormProvider, useForm } from 'react-hook-form';\nimport type { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { ActionDialog, DialogTitle } from '@dx-ui/osc-dialog-v2';\nimport type { FormDataStructure, FormProps } from '@dx-ui/osc-form';\nimport { useTranslation } from 'next-i18next';\nimport type { Rooms as RoomsType } from './rooms';\nimport { Rooms } from './rooms';\nimport type { ShopFormRoom } from './types';\n\ntype RoomsModal = Pick<FormProps, 'useFormProps'> &\n  RoomsType &\n  React.ComponentProps<typeof Dialog> & { onSubmit: (data: FieldValues) => void };\n\nconst RoomsModal: React.FC<React.PropsWithChildren<RoomsModal>> = ({\n  ageRange,\n  agesRequired,\n  useFormProps,\n  maxRooms,\n  occupancyLimitMessage,\n  onSubmit,\n  isOpen,\n}) => {\n  const [t] = useTranslation('osc-rooms');\n  const memoizedFormProps = React.useMemo(() => useFormProps, [useFormProps]);\n  const confirmButtonRef = React.useRef<HTMLButtonElement>(null);\n\n  const methods = useForm<FormDataStructure>({\n    mode: 'onTouched',\n    criteriaMode: 'all',\n    ...memoizedFormProps,\n  });\n  const { setValue, clearErrors, getValues } = methods;\n  const rooms: ShopFormRoom[] = getValues().rooms;\n  const isAnyRoomHaveChildrenOccupants = rooms?.some((room) => room?.children?.length);\n\n  const removeKids = () => {\n    clearErrors();\n    rooms?.forEach((_room, index) => {\n      setValue(`rooms.${index}.children`, []);\n    });\n    confirmButtonRef?.current?.focus();\n  };\n\n  return (\n    <FormProvider {...methods}>\n      <ActionDialog\n        isOpen={isOpen}\n        size=\"xl\"\n        hasChildrenWithTitle\n        data-testid=\"rooms-modal\"\n        onCancel={removeKids}\n        onConfirm={() => onSubmit?.(getValues())}\n        buttonOptions={{\n          cancel: {\n            label: t('occupancy.ageBasedRemove'),\n            disabled: !isAnyRoomHaveChildrenOccupants,\n          },\n          confirm: { ref: confirmButtonRef },\n        }}\n      >\n        <div className=\"mb-6 mt-3 text-center\">\n          <DialogTitle className=\"text-lg font-bold\">{t('occupancy.ageBasedTitle')}</DialogTitle>\n          <p>{t('occupancy.ageBasedDescription')}</p>\n        </div>\n\n        <Rooms\n          ageRange={ageRange}\n          maxRooms={maxRooms}\n          agesRequired={agesRequired}\n          occupancyLimitMessage={occupancyLimitMessage}\n        />\n      </ActionDialog>\n    </FormProvider>\n  );\n};\n\nexport { RoomsModal };\nexport default RoomsModal;\n","export * from './lib/rooms';\nexport * from './lib/rooms.modal';\nexport * from './lib/rooms.room';\nexport * from './lib/types';\n","import * as React from 'react';\nimport { useFieldArray, useWatch } from 'react-hook-form';\nimport { ActionDialog } from '@dx-ui/osc-dialog-v2';\nimport { Link } from '@dx-ui/osc-link';\nimport type { FormDefaultValues } from './shop-form';\nimport { useShopFormContext } from './use-shop-form-context';\nimport { useTranslation } from 'next-i18next';\nimport type { Person, BrandCode } from '@dx-ui/framework-uri-builder';\nimport { searchUriBuilder } from '@dx-ui/framework-uri-builder';\nimport SearchButton from './shop-form.button';\nimport omit from 'lodash/omit';\nimport type { Rooms as RoomsType, ShopFormRoom } from '@dx-ui/osc-rooms';\nimport { Rooms, newRoom } from '@dx-ui/osc-rooms';\nimport cloneDeep from 'lodash/cloneDeep';\n\ntype ShopFormRooms = {\n  'data-testid'?: string;\n  /**\n   * if `true` the group link will not be shown\n   */\n  hideGroupLink?: boolean;\n  open?: boolean;\n  tenPlusLinkProps?: React.ComponentProps<typeof Link>;\n  /** Callback invoked on confirm/done */\n  onConfirm?: () => void;\n  /** Callback invoked on modal open */\n  onOpen?: () => void;\n  /** Callback invoked on cancel/dismiss */\n  onDismiss?: () => void;\n} & RoomsType;\n\n/**\n * Use the `<ShopFormRooms/>` component inside of the ShopForm in order to provide the OSC experience\n * for noting the number of rooms and their occupancy.\n */\nexport const ShopFormRooms: React.FC<React.PropsWithChildren<ShopFormRooms>> = ({\n  hideGroupLink,\n  onConfirm,\n  open: openProp,\n  tenPlusLinkProps,\n  onOpen,\n  onDismiss,\n  ...rest\n}) => {\n  const { t } = useTranslation(['osc-rooms', 'osc-shop-form']);\n  const [open, setOpen] = React.useState(false);\n  const {\n    formState: { errors },\n    getValues,\n    reset,\n  } = useShopFormContext();\n  const { append } = useFieldArray({ name: 'rooms' });\n  const hasError = Boolean(errors.rooms);\n  const roomsValue = useWatch({ name: 'rooms' });\n  const numRooms = roomsValue?.length || 0;\n\n  const numGuests = (roomsValue || []).reduce(\n    (count: number, { adults, children }: { adults: number; children: Person[] }) =>\n      count + adults + children.length,\n    0\n  );\n  const [initialValues, setInitialValues] = React.useState<ShopFormRoom[]>([\n    {\n      adults: 1,\n      children: [],\n    },\n  ]);\n\n  React.useEffect(() => {\n    if (roomsValue && roomsValue.length === 0) {\n      append({ ...newRoom });\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [roomsValue]);\n\n  React.useEffect(() => {\n    if (openProp) {\n      setInitialValues(cloneDeep(roomsValue));\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [openProp]);\n\n  const openModal = () => {\n    setInitialValues(cloneDeep(roomsValue));\n    setOpen(true);\n    onOpen?.();\n  };\n\n  const confirmAndCloseModal = () => {\n    setOpen(false);\n    onConfirm?.();\n  };\n  const dismissAndResetToOriginalFormRooms = () => {\n    if (initialValues) {\n      reset({ ...getValues(), rooms: [...initialValues] }, { keepDefaultValues: true });\n    }\n    setOpen(false);\n    onDismiss?.();\n  };\n\n  //grab these values from shop form context in order for use in uri generator\n  const brandCode = useWatch<FormDefaultValues, 'brandCode'>({ name: 'brandCode' });\n  const arrivalDate = useWatch<FormDefaultValues, 'dates.arrivalDate'>({\n    name: 'dates.arrivalDate',\n  });\n  const departureDate = useWatch<FormDefaultValues, 'dates.departureDate'>({\n    name: 'dates.departureDate',\n  });\n  const placeId = useWatch<FormDefaultValues, 'placeId'>({ name: 'placeId' });\n  const query = useWatch<FormDefaultValues, 'query'>({ name: 'query' });\n  const attendeeCount = useWatch<FormDefaultValues, 'attendee_count'>({ name: 'attendee_count' });\n\n  const tenPlusUrl = searchUriBuilder({\n    brandCode: brandCode as keyof BrandCode,\n    locale: 'en',\n    urlParams: {\n      dates: {\n        arrivalDate,\n        departureDate,\n      },\n      numAttendees: attendeeCount,\n      placeId,\n      query,\n      numRooms: 10,\n    },\n    relative: false,\n  });\n\n  const label = `${t('occupancy.numRooms', { count: numRooms })}, ${t('occupancy.numGuests', {\n    count: numGuests,\n  })}`;\n  const ariaLabel = `${t('occupancy.numRooms', { count: numRooms })}, ${t('occupancy.numGuests', {\n    count: numGuests,\n  })}. ${t('occupancy.buttonLabel')} ${\n    hasError ? t('osc-shop-form:errorHeader', { count: 1 }) : ''\n  }`;\n\n  return (\n    <ActionDialog\n      className=\"h-auto\"\n      title={t('occupancy.title')}\n      isOpen={openProp || open}\n      onDismiss={dismissAndResetToOriginalFormRooms}\n      onCancel={dismissAndResetToOriginalFormRooms}\n      onConfirm={confirmAndCloseModal}\n      size=\"md\"\n      buttonOptions={{\n        confirm: {\n          disabled: hasError,\n        },\n      }}\n      contentDataAttribute=\"data-osc-shop-form-rooms\"\n      dialogTrigger={\n        <SearchButton\n          product=\"search-rooms-button\"\n          onClick={openModal}\n          hasError={hasError}\n          label={label}\n          aria-label={ariaLabel}\n          data-testid=\"search-rooms-button\"\n        />\n      }\n    >\n      <Rooms {...omit(rest, 'data-testid')} />\n      {hideGroupLink ? null : (\n        <div className=\"border-border border-t border-solid pb-2.5 pt-2\">\n          <Link\n            url={tenPlusUrl}\n            className=\"text-primary hover:text-primary-alt mb-2 text-sm\"\n            {...tenPlusLinkProps}\n          >\n            {t('occupancy.bookEvent')}\n          </Link>\n        </div>\n      )}\n    </ActionDialog>\n  );\n};\n\nexport default ShopFormRooms;\n","import type { Side } from '@dx-ui/osc-popup';\nimport { PopupButton, PopupContent, Popup, usePopup } from '@dx-ui/osc-popup';\nimport { ControlClose } from '@dx-ui/osc-controls';\nimport { useTranslation } from 'next-i18next';\nimport { useRef } from 'react';\nimport { Icon } from '@dx-ui/osc-icon';\n\nexport type InfoPopup = {\n  label?: string;\n  testId?: string;\n  onClick?: () => void;\n  side?: Side;\n  isOpen?: boolean;\n};\n\nexport const InfoPopupContent: React.FC<React.PropsWithChildren<InfoPopup>> = ({\n  children,\n  testId,\n  label: labelProp,\n  onClick,\n  side,\n}) => {\n  const { closePopup } = usePopup();\n  const { t } = useTranslation('osc-info-popup');\n  const infoIconRef = useRef<HTMLButtonElement>(null);\n  const label = labelProp || t('moreInfo');\n\n  return (\n    <>\n      <PopupButton\n        className=\"btn btn-primary-text group\"\n        data-testid={`popup-button${testId ? `-${testId}` : ''}`}\n        ref={infoIconRef}\n        onClick={onClick}\n      >\n        <span className=\"sr-only\">{label}</span>\n        <Icon\n          name=\"info-circle\"\n          variant=\"regular\"\n          size=\"md\"\n          className=\"size-6 group-focus-within:hidden group-hover:hidden\"\n        />\n        <Icon\n          name=\"info-circle\"\n          variant=\"solid\"\n          size=\"md\"\n          className=\"hidden size-6 group-focus-within:block group-hover:block\"\n        />\n      </PopupButton>\n      <PopupContent\n        className=\"w-fit max-w-prose\"\n        data-testid={`popup-content${testId ? `-${testId}` : ''}`}\n        side={side}\n      >\n        <div className=\"flex justify-end\">\n          <ControlClose label={t('close', { label })} onClick={closePopup} size=\"sm\" />\n        </div>\n        <div className=\"text-text mt-1 text-left text-sm font-normal\">{children}</div>\n      </PopupContent>\n    </>\n  );\n};\n\nexport const InfoPopup: React.FC<React.PropsWithChildren<InfoPopup>> = ({\n  testId,\n  children,\n  label,\n  onClick,\n  side,\n  ...rest\n}) => (\n  <Popup {...rest}>\n    <InfoPopupContent label={label} testId={testId} onClick={onClick} side={side}>\n      {children}\n    </InfoPopupContent>\n  </Popup>\n);\n\nexport default InfoPopup;\n","export * from './lib/info-popup';\n","import type * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { useFormContext, useWatch, type FieldError } from 'react-hook-form';\n\nimport { FormError } from '@dx-ui/osc-form';\nimport { InfoPopup } from '@dx-ui/osc-info-popup';\n\nconst GROUP_LIMIT = 10;\n\nconst InputGroup: React.FC<{\n  id: string;\n  label?: string;\n  info?: React.ReactNode;\n  isCentered?: boolean;\n  error: Partial<FieldError> | undefined;\n  children: React.ReactNode;\n}> = ({ id, label, info, error, isCentered, children }) => {\n  return (\n    <div className=\"flex-1\">\n      <div\n        className={cx('label flex flex-1 items-start md:grow-0', {\n          'items-start': !isCentered,\n          'sm:items-center': isCentered,\n          'text-danger': error,\n          'flex-col': !!label,\n          'flex-row gap-2': !label,\n        })}\n      >\n        <div className=\"flex items-center\">\n          {label ? (\n            <label\n              data-osc-product=\"shop-input-label\"\n              htmlFor={id}\n              className=\"whitespace-nowrap pr-1\"\n            >\n              {label}\n            </label>\n          ) : null}\n          {info ? <InfoPopup>{info}</InfoPopup> : null}\n        </div>\n        {children}\n      </div>\n    </div>\n  );\n};\n\nexport type ShopFormGroupProps = {\n  showNumAttendees?: boolean;\n};\nexport const ShopFormGroup = (props: ShopFormGroupProps) => {\n  const { t } = useTranslation('osc-rooms');\n  const {\n    register,\n    setValue,\n    formState: { errors },\n    trigger,\n    setError,\n    clearErrors,\n  } = useFormContext();\n  const numRooms = useWatch({ name: 'numRooms' });\n  const numAttendees = useWatch({ name: 'numAttendees' });\n  const shouldFocusRoomsInput = useWatch({ name: 'shouldFocusRoomsInput' });\n  const roomsInputRef = useRef<HTMLInputElement | null>(null);\n\n  useEffect(() => {\n    if (shouldFocusRoomsInput && roomsInputRef.current) roomsInputRef.current.focus();\n  }, [shouldFocusRoomsInput]);\n\n  const getNumRoomsAttendeesValidation = (numAttendees: string, numRooms: string) => {\n    const isNumRoomsAndNumAttendeesFalsey =\n      ((parseInt(numAttendees) === 0 || isNaN(parseInt(numAttendees))) &&\n        parseInt(numRooms) === 0) ||\n      isNaN(parseInt(numRooms));\n    if (isNumRoomsAndNumAttendeesFalsey) {\n      setError('shop-form-numRooms', {\n        type: 'manual',\n        message: t('roomsAttendees.numRoomsAttendeeValueError'),\n      });\n      setError('shop-form-numAttendees', {\n        type: 'manual',\n        message: t('roomsAttendees.numRoomsAttendeeValueError'),\n      });\n      return t('roomsAttendees.numRoomsAttendeeValueError');\n    }\n    const isFormInErrorStateAndNumAttendeesOrNumRoomsGreaterThanZero =\n      (errors?.numAttendees || errors?.numRooms) &&\n      (!!parseInt(numAttendees) || !!parseInt(numRooms));\n\n    if (isFormInErrorStateAndNumAttendeesOrNumRoomsGreaterThanZero) {\n      clearErrors(['numRooms', 'numAttendees', 'shop-form-numRooms', 'shop-form-numAttendees']);\n    }\n    return true;\n  };\n\n  return (\n    <div>\n      <div className=\"flex flex-auto flex-col gap-2 sm:flex-row lg:gap-3\">\n        <InputGroup\n          id=\"shop-form-numRooms\"\n          label={t('roomsAttendees.numRooms')}\n          error={errors?.numRooms || errors?.numAttendees}\n        >\n          <input\n            id=\"shop-form-numRooms\"\n            type=\"number\"\n            min={0}\n            className={cx('form-input w-full flex-1', {\n              'form-error': errors?.numRooms || errors?.numAttendees,\n            })}\n            {...register('numRooms', {\n              value: GROUP_LIMIT,\n              onChange: () => trigger('numRooms'),\n              validate: {\n                numRoomsValidation: (numRooms) =>\n                  getNumRoomsAttendeesValidation(numAttendees, numRooms),\n              },\n              valueAsNumber: true,\n            })}\n            ref={(e) => {\n              register('numRooms').ref(e);\n              roomsInputRef.current = e;\n            }}\n            onFocus={() => {\n              if (shouldFocusRoomsInput) setValue('shouldFocusRoomsInput', false);\n            }}\n          />\n        </InputGroup>\n        {props.showNumAttendees ? (\n          <InputGroup\n            id=\"shop-form-numAttendees\"\n            error={errors?.numAttendees || errors?.numRooms}\n            label={t('roomsAttendees.numAttendees')}\n          >\n            <input\n              id=\"shop-form-numAttendees\"\n              type=\"number\"\n              className={cx('form-input w-full flex-1', {\n                'form-error': errors?.numAttendees || errors?.numRooms,\n              })}\n              min={0}\n              {...register('numAttendees', {\n                onChange: () => trigger('numAttendees'),\n                validate: {\n                  numAttendeesValidation: (numAttendees) =>\n                    getNumRoomsAttendeesValidation(numAttendees, numRooms),\n                },\n              })}\n            />\n          </InputGroup>\n        ) : null}\n      </div>\n      <FormError error={errors?.numRooms || errors?.numAttendees} className=\" lg:absolute\" />\n    </div>\n  );\n};\n","import * as React from 'react';\nimport { useWatch } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport { ActionDialog } from '@dx-ui/osc-dialog-v2';\nimport SearchButton from './shop-form.button';\nimport { SpecialRates } from '@dx-ui/osc-special-rates';\nimport { useShopFormContext } from './use-shop-form-context';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { useAarpToggle } from './hooks/use-aarp-toggle';\n\n/**\n * Use the `<ShopFormSpecialRates/>` component inside of the ShopForm in order to provide the OSC experience\n * for selecting special rates to enhance the search.\n */\nexport type ShopFormSpecialRatesProps = {\n  /** Option to disable use points checkbox */\n  shouldDisablePoints?: boolean;\n  /** Option to enable when used outside of the shop form */\n  isIndependent?: boolean;\n  /** Option to control the modal open state */\n  open?: boolean;\n  /** Callback invoked on confirm/done */\n  onConfirm?: () => void;\n  /** Callback invoked on modal open */\n  onOpen?: () => void;\n  /** Callback invoked on cancel/dismiss */\n  onDismiss?: () => void;\n  /** Make smbRates SMB Context Aware */\n  shouldEnableSMBContextAwareRates?: boolean;\n};\n\nexport const ShopFormSpecialRates: React.FC<React.PropsWithChildren<ShopFormSpecialRatesProps>> = ({\n  shouldEnableSMBContextAwareRates,\n  isIndependent,\n  open: openProp,\n  onConfirm,\n  onOpen,\n  onDismiss,\n  shouldDisablePoints,\n}) => {\n  const [t] = useTranslation(['osc-shop-form', 'osc-special-rates']);\n  const [open, setOpen] = React.useState(false);\n  const buttonRef = React.useRef<HTMLButtonElement>(null);\n  const {\n    formState: { errors },\n    reset,\n    getValues,\n  } = useShopFormContext();\n  const { disableAARPSpecialRates } = useAarpToggle();\n  const hasError = !!errors.specialRates;\n  const ratesValue = useWatch({ name: 'specialRates' });\n  const isOfferIdSelected = useWatch({ name: 'specialRates.useOfferId' });\n  const isPndSelected = useWatch({ name: 'specialRates.usePnd' });\n  const isSMBSelected = useWatch({ name: 'specialRates.smbRate' });\n  const isSMBMember = useWatch({ name: 'hhonors.isSMBMember' });\n  const offerId = useWatch({ name: 'specialRates.offerId' });\n  const pnd = useWatch({ name: 'specialRates.pnd' });\n  const corporateCode = useWatch({ name: 'specialRates.corporateCode' });\n  const [initialValues, setInitialValues] = React.useState<SpecialRates>();\n  const selectedRates = Object.keys(ratesValue || {}).reduce((count, key) => {\n    const excludedKeys = [\n      'pnd',\n      'usePnd',\n      'offerId',\n      'useOfferId',\n      'requestedRatesOnly',\n      'searchedRatePlanDescription',\n      'travelAgentId',\n    ];\n    if (\n      (!excludedKeys.includes(key) && Boolean(ratesValue[key as keyof typeof ratesValue])) ||\n      (key === 'usePnd' && Boolean(ratesValue[key]) && ratesValue?.pnd?.name) ||\n      (key === 'useOfferId' && Boolean(ratesValue[key]) && ratesValue?.offerId?.name)\n    ) {\n      return count + 1;\n    }\n    return count;\n  }, 0);\n\n  const openModal = () => {\n    setInitialValues(cloneDeep(ratesValue));\n    setOpen(true);\n    onOpen?.();\n  };\n\n  const confirmAndCloseModal = () => {\n    setOpen(false);\n    onConfirm?.();\n  };\n\n  const resetRatesToOriginalFormRates = () => {\n    if (initialValues) {\n      reset({ ...getValues(), specialRates: { ...initialValues } }, { keepDefaultValues: true });\n    }\n    onDismiss?.();\n    setOpen(false);\n  };\n\n  React.useEffect(() => {\n    if (isPndSelected && !pnd?.name) {\n      reset({ ...getValues(), specialRates: { ...getValues().specialRates, usePnd: false } });\n    }\n    if (isOfferIdSelected && !offerId?.name) {\n      reset({ ...getValues(), specialRates: { ...getValues().specialRates, useOfferId: false } });\n    }\n    if (isSMBSelected && !isSMBMember) {\n      reset({ ...getValues(), specialRates: { ...getValues().specialRates, smbRate: false } });\n    }\n    if (isSMBSelected && corporateCode) {\n      reset({ ...getValues(), specialRates: { ...getValues().specialRates, corporateCode: '' } });\n    }\n  }, [\n    corporateCode,\n    getValues,\n    isOfferIdSelected,\n    isPndSelected,\n    isSMBMember,\n    isSMBSelected,\n    offerId?.name,\n    pnd?.name,\n    reset,\n  ]);\n\n  return (\n    <ActionDialog\n      className=\"h-auto\"\n      title={t('osc-special-rates:header')}\n      isOpen={openProp || open}\n      onDismiss={resetRatesToOriginalFormRates}\n      onCancel={resetRatesToOriginalFormRates}\n      onConfirm={confirmAndCloseModal}\n      size=\"xl\"\n      buttonOptions={{\n        confirm: {\n          disabled: !!isIndependent && hasError,\n        },\n      }}\n      contentDataAttribute=\"data-osc-shop-form-special-rates\"\n      dialogTrigger={\n        <SearchButton\n          product=\"search-rates-button\"\n          ref={buttonRef}\n          onClick={openModal}\n          hasError={hasError}\n          info={selectedRates === 0 ? null : selectedRates + ''}\n          label={t('osc-special-rates:header')}\n          aria-label={`${t('osc-special-rates:buttonLabel')} ${\n            errors.specialRates\n              ? t('osc-shop-form:errorHeader', { count: 1 })\n              : selectedRates > 0\n              ? t('osc-special-rates:buttonLabelCount', { count: selectedRates })\n              : ''\n          }`}\n          data-testid=\"search-rates-button\"\n        />\n      }\n    >\n      <SpecialRates\n        shouldEnableSMBContextAwareRates={shouldEnableSMBContextAwareRates}\n        shouldDisablePoints={shouldDisablePoints}\n        shouldDisableAARP={disableAARPSpecialRates}\n      />\n    </ActionDialog>\n  );\n};\n","import * as React from 'react';\nimport { useWatch } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport SearchButton from './shop-form.button';\nimport { ActionDialog } from '@dx-ui/osc-dialog-v2';\nimport { Stepper } from '@dx-ui/osc-stepper';\nimport type { FormDataValues } from '..';\nimport { addDays, subDays } from 'date-fns';\nimport { useShopFormContext } from './use-shop-form-context';\n\ntype ShopFormNightsProps = {\n  min?: number;\n  max?: number;\n};\n\n/**\n * Use the `<ShopFormNights/>` component inside of the ShopForm in order to provide the OSC experience\n * for selecting the number of nights to enhance the search.\n */\nconst ShopFormNights: React.FC<React.PropsWithChildren<ShopFormNightsProps>> = ({\n  min = 0,\n  max = 30,\n}) => {\n  const [t] = useTranslation('osc-rooms');\n  const [open, setOpen] = React.useState(false);\n  const buttonRef = React.useRef<HTMLButtonElement>(null);\n  const {\n    formState: { errors },\n    setValue,\n    getValues,\n    reset,\n  } = useShopFormContext();\n  const numNights = useWatch<FormDataValues, 'numNights'>({ name: 'numNights' });\n  const departureDate = useWatch<FormDataValues, 'dates.departureDate'>({\n    name: 'dates.departureDate',\n  });\n  const [initialNumNights, setInitialNumNights] = React.useState<FormDataValues['numNights']>();\n  const [initialDepartureDate, setInitialDepartureDate] =\n    React.useState<FormDataValues['dates']['departureDate']>();\n  const openModal = () => {\n    setInitialNumNights(numNights);\n    setInitialDepartureDate(departureDate);\n    setOpen(true);\n  };\n\n  const confirmAndCloseModal = () => {\n    setOpen(false);\n  };\n  const dismissModal = () => {\n    setOpen(false);\n    if (initialNumNights && initialDepartureDate) {\n      const formData = getValues();\n      reset(\n        {\n          ...formData,\n          numNights: initialNumNights,\n          dates: { ...formData.dates, departureDate: initialDepartureDate },\n        },\n        { keepDefaultValues: true }\n      );\n    }\n  };\n\n  if (numNights === null || !departureDate) {\n    return null;\n  }\n\n  const label =\n    numNights === 0\n      ? t('nights.dayCount', { count: 1 })\n      : t('nights.nightsCount', { count: numNights });\n  const dialogTitle = t('nights.howManyNights');\n\n  return (\n    <ActionDialog\n      className=\"h-auto\"\n      title={dialogTitle}\n      isOpen={open}\n      onDismiss={dismissModal}\n      onCancel={dismissModal}\n      onConfirm={confirmAndCloseModal}\n      size=\"sm\"\n      dialogTrigger={\n        <SearchButton\n          product=\"search-nights-button\"\n          ref={buttonRef}\n          onClick={openModal}\n          hasError={Boolean(errors.numNights)}\n          label={label}\n          aria-label={label}\n          data-testid=\"search-nights-button\"\n        />\n      }\n    >\n      <Stepper\n        onMinusClick={() => {\n          setValue('numNights', numNights - 1, { shouldDirty: true });\n          setValue('dates.departureDate', subDays(departureDate, 1), {\n            shouldDirty: true,\n          });\n        }}\n        onPlusClick={() => {\n          setValue('numNights', numNights + 1, { shouldDirty: true });\n          setValue('dates.departureDate', addDays(departureDate, 1), {\n            shouldDirty: true,\n          });\n        }}\n        min={min}\n        max={max}\n        value={numNights}\n        valueLabel={label}\n        plusLabel={t('nights.addNight')}\n        plusTestId=\"search-add-night\"\n        minusLabel={t('nights.removeNight')}\n        minusTestId=\"search-remove-night\"\n        className=\"pb-2.5\"\n      />\n    </ActionDialog>\n  );\n};\n\nexport { ShopFormNights };\nexport default ShopFormNights;\n","export * from './lib/shop-form';\nexport * from './lib/shop-form.provider';\nexport * from './lib/shop-form.utils';\nexport * from './lib/shop-form.location';\nexport * from './lib/shop-form.dates';\nexport * from './lib/shop-form.info-container';\nexport * from './lib/shop-form.rooms';\nexport * from './lib/shop-form.group';\nexport * from './lib/shop-form.special-rates';\nexport * from './lib/shop-form.summary';\nexport * from './lib/shop-form.nights';\nexport * from './lib/shop-form.constants';\nexport * from './lib/use-shop-form-context';\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 TogglesDocument = {\n  operationName: 'featureConfigs_featureToggles',\n  operationString: `query featureConfigs_featureToggles($features: [String]!, $configs: [String!]!) {\n  featureToggles: featureToggles(names: $features) {\n    name\n    enabled\n    cacheable\n  }\n  configToggles: featureConfigs(names: $configs) {\n    config\n    name\n  }\n}`,\n  originalOpName: 'Toggles',\n};\nexport function useTogglesQuery<TData = Types.TogglesQuery, TError = DXError>(\n  variables: Types.TogglesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.TogglesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.TogglesQuery, TError, TData>({\n    queryKey: [TogglesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideTogglesQuery(\n  queryClient: QueryClient,\n  variables: Types.TogglesQueryVariables,\n  options?: FetchQueryOptions<Types.TogglesQuery>\n) {\n  return queryClient.fetchQuery<Types.TogglesQuery>({\n    queryKey: [TogglesDocument, variables],\n    ...options,\n  });\n}\n","import type { PlacesAutocompleteSuggestion } from '@dx-ui/framework-places-autocomplete';\nimport { useIsClient } from 'usehooks-ts';\n\nimport { useMemo } from 'react';\nimport { useTogglesQuery } from '../generated/queries';\n\nexport type PopularDestinationSuggestion = PlacesAutocompleteSuggestion[] | undefined;\n\nexport const SEARCH_DRAW_BRIDGE = 'SearchDrawbridge';\nexport const CONFIG_POPULAR_DESTINATION = 'config-popular-destinations';\n\ntype RecentSearchesPopularDestinationConfigProp = {\n  isPopularDestinations?: boolean;\n  isRecentSearches?: boolean;\n  country?: string;\n  languageCode?: string;\n};\n\nexport function useRecentSearchPopularDestinationData({\n  isPopularDestinations = true,\n  isRecentSearches = true,\n  country,\n  languageCode,\n}: RecentSearchesPopularDestinationConfigProp) {\n  const isClient = useIsClient();\n  const { data, isLoading } = useTogglesQuery(\n    {\n      configs: [CONFIG_POPULAR_DESTINATION],\n      features: [CONFIG_POPULAR_DESTINATION, SEARCH_DRAW_BRIDGE],\n    },\n    { enabled: (isPopularDestinations || isRecentSearches) && isClient }\n  );\n\n  const recentSearchAndPopularDestinationData = useMemo(() => {\n    if (isLoading) {\n      return { showRecentSearches: false };\n    }\n    const isDrawbridgeEnabled = !!data?.featureToggles?.find(\n      (toggle) => toggle.name === SEARCH_DRAW_BRIDGE\n    )?.enabled;\n    const isPopularDestinationEnabled = data?.featureToggles?.find(\n      (toggle) => toggle.name === CONFIG_POPULAR_DESTINATION\n    )?.enabled;\n    const popularDestination =\n      isPopularDestinationEnabled && languageCode === 'en'\n        ? !!country\n          ? COUNTRY_BASED_POPULAR_DESTINATIONS[country]\n          : data?.configToggles?.find((config) => config.name === CONFIG_POPULAR_DESTINATION)\n              ?.config\n        : null;\n\n    return {\n      showRecentSearches: !isDrawbridgeEnabled,\n      popularDestinationOptions: popularDestination as PopularDestinationSuggestion,\n    };\n  }, [isLoading, data?.featureToggles, data?.configToggles, languageCode, country]);\n\n  return recentSearchAndPopularDestinationData;\n}\n\n/********** NHCSEARCH-5194 A/B Test - popular destinations based on user location Data ********/\n\nconst US_POPULAR_DESTINATIONS = [\n  {\n    description: 'Las Vegas, Nevada, US',\n    placeId: 'dx-location::locality::us::nv::las-vegas',\n    formattedSuggestion: {\n      mainText: 'Las Vegas',\n      secondaryText: 'Nevada, US',\n    },\n  },\n  {\n    description: 'New York, New York, US',\n    placeId: 'dx-location::locality::us::ny::new-york-city',\n    formattedSuggestion: {\n      mainText: 'New York',\n      secondaryText: 'New York, US',\n    },\n  },\n  {\n    description: 'Orlando, Florida, US',\n    placeId: 'dx-location::locality::us::fl::orlando',\n    formattedSuggestion: {\n      mainText: 'Orlando',\n      secondaryText: 'Florida, US',\n    },\n  },\n  {\n    description: 'Chicago, Illinois, US',\n    placeId: 'dx-location::locality::us::il::chicago',\n    formattedSuggestion: {\n      mainText: 'Chicago',\n      secondaryText: 'Illinois, US',\n    },\n  },\n  {\n    description: 'Miami, Florida, US',\n    placeId: 'dx-location::locality::us::fl::miami',\n    formattedSuggestion: {\n      mainText: 'Miami',\n      secondaryText: 'Florida, US',\n    },\n  },\n];\n\nconst CA_POPULAR_DESTINATIONS = [\n  {\n    description: 'Toronto, Ontario, CA',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Toronto',\n      secondaryText: 'Ontario, CA',\n    },\n  },\n  {\n    description: 'Niagara Falls, Ontario, CA',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Niagara Falls',\n      secondaryText: 'Ontario, CA',\n    },\n  },\n  {\n    description: 'Montreal, Quebec, CA',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Montreal',\n      secondaryText: 'Quebec, CA',\n    },\n  },\n  {\n    description: 'Vancouver, British Columbia, CA',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Vancouver',\n      secondaryText: 'British Columbia, CA',\n    },\n  },\n  {\n    description: 'Ottawa, Ontario, CA',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Ottawa',\n      secondaryText: 'Ontario, CA',\n    },\n  },\n];\n\nconst UK_POPULAR_DESTINATIONS = [\n  {\n    description: 'London, England, GB',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'London',\n      secondaryText: 'England, GB',\n    },\n  },\n  {\n    description: 'Edinburgh Scotland, GB',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Edinburgh',\n      secondaryText: 'Scotland, GB',\n    },\n  },\n  {\n    description: 'Glasgow, Scotland, GB',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Glasgow',\n      secondaryText: 'Scotland, GB',\n    },\n  },\n  {\n    description: 'Birmingham, England, GB',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Birmingham',\n      secondaryText: 'England, GB',\n    },\n  },\n  {\n    description: 'Dubai, United Arab Emirates',\n    placeId: '',\n    formattedSuggestion: {\n      mainText: 'Dubai',\n      secondaryText: 'United Arab Emirates',\n    },\n  },\n];\n\ntype CountryBasedPopularDestinationsSuggestions =\n  | Pick<PlacesAutocompleteSuggestion, 'description' | 'placeId' | 'formattedSuggestion'>[]\n  | undefined;\n\nconst COUNTRY_BASED_POPULAR_DESTINATIONS: Record<\n  string,\n  CountryBasedPopularDestinationsSuggestions\n> = {\n  CA: CA_POPULAR_DESTINATIONS,\n  GB: UK_POPULAR_DESTINATIONS,\n  US: US_POPULAR_DESTINATIONS,\n};\n","import { Status, useConductricsSelection } from '@dx-ui/framework-conductrics';\nimport { useMemo } from 'react';\n\nexport type MVTAgentStatusProp = {\n  [key: string]: boolean;\n};\n\nexport const REMOVE_FLEXIBLE_DATES_AGENT_ID = 'a-88XVLKrnNI';\nexport const MY_FLEXIBLE_DATES_CLICK_GOAL = 'g-lNDlYVzRu9';\nexport const RESET_DATES = 'g-gjmxUjWSsN';\nexport const COUNTRY_BASED_POPULAR_DESTINATIONS_AGENT_ID = 'a-5CpNdJOJ7T'; //NHCSEARCH-5194\n\nexport const useGetMVTSelections = (agentStatus: MVTAgentStatusProp) => {\n  //NHCSEARCH-5088 Remove Flexible dates when reset date is present\n  const removeFlexibleDatesTestStatus = agentStatus.REMOVE_FLEXIBLE_DATES_AGENT_ID\n    ? Status.OK\n    : Status.PENDING;\n  const { isLoaded: isRemoveFlexibleDatesTestLoaded, selection: removeFlexibleDatesSelection } =\n    useConductricsSelection(REMOVE_FLEXIBLE_DATES_AGENT_ID, removeFlexibleDatesTestStatus);\n\n  const { isRemoveFlexibleDatesDefault, isRemoveFlexibleDatesVariant } = useMemo(() => {\n    const removeFlexibleDatSelections =\n      isRemoveFlexibleDatesTestLoaded && removeFlexibleDatesTestStatus === Status.OK\n        ? removeFlexibleDatesSelection?.choice?.toLowerCase()\n        : '';\n    return {\n      isRemoveFlexibleDatesDefault: removeFlexibleDatSelections === 'a',\n      isRemoveFlexibleDatesVariant: removeFlexibleDatSelections === 'b',\n    };\n  }, [\n    isRemoveFlexibleDatesTestLoaded,\n    removeFlexibleDatesSelection?.choice,\n    removeFlexibleDatesTestStatus,\n  ]);\n\n  //NHCSEARCH-5194\n  const countryBasedPopularDestinationsTestStatus =\n    agentStatus.COUNTRY_BASED_POPULAR_DESTINATIONS_AGENT_ID ? Status.OK : Status.PENDING;\n  const {\n    isLoaded: isCountryBasedPopularDestinationsTestLoaded,\n    selection: countryBasedPopularDestinationsSelection,\n  } = useConductricsSelection(\n    COUNTRY_BASED_POPULAR_DESTINATIONS_AGENT_ID,\n    countryBasedPopularDestinationsTestStatus\n  );\n\n  const { isCountryPopularDestinationDefault, isCountryPopularDestinationVariant } = useMemo(() => {\n    const countryBasedPopularDestinationsSelections =\n      isCountryBasedPopularDestinationsTestLoaded &&\n      countryBasedPopularDestinationsTestStatus === Status.OK\n        ? countryBasedPopularDestinationsSelection?.choice?.toLowerCase()\n        : '';\n    return {\n      isCountryPopularDestinationDefault: countryBasedPopularDestinationsSelections === 'a',\n      isCountryPopularDestinationVariant: countryBasedPopularDestinationsSelections === 'b',\n    };\n  }, [\n    countryBasedPopularDestinationsSelection?.choice,\n    countryBasedPopularDestinationsTestStatus,\n    isCountryBasedPopularDestinationsTestLoaded,\n  ]);\n\n  return {\n    isRemoveFlexibleDatesTestLoaded,\n    isRemoveFlexibleDatesDefault,\n    isRemoveFlexibleDatesVariant,\n    isCountryBasedPopularDestinationsTestLoaded,\n    isCountryPopularDestinationDefault,\n    isCountryPopularDestinationVariant,\n  };\n};\n","import { useState, useEffect, useMemo, useRef } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { addDays } from 'date-fns';\nimport { useRouter } from 'next/router';\nimport type { AdditionalQSParameters, FormDataValues } from '@dx-ui/osc-shop-form';\nimport {\n  ShopFormDates,\n  ShopFormGroup,\n  ShopForm,\n  ShopFormLocation,\n  ShopFormRooms,\n  ShopFormSpecialRates,\n  wrapperClassNameDefaultWithLocation,\n} from '@dx-ui/osc-shop-form';\nimport { useFormContext } from 'react-hook-form';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport { useLocation } from '@dx-ui/framework-location-provider';\nimport type { TBrandLayout, TLayout } from '@dx-ui/osc-marketing';\nimport type { SpecialRates } from '@dx-ui/osc-special-rates';\nimport { sendReward } from '@dx-ui/framework-conductrics';\n\nimport { useRecentSearchPopularDestinationData } from './use-location-options-data';\nimport {\n  MY_FLEXIBLE_DATES_CLICK_GOAL,\n  RESET_DATES,\n  useGetMVTSelections,\n} from './use-get-mvt-selections';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nexport const CONDUCTRICS_EDIT_BRAND_SEARCH_WIDGET = 'g-C6bnRUoR2d';\n\nexport const getAddress = (\n  defaultLanguage: string,\n  languageCode: string,\n  query: string,\n  location: { description: string } | null\n) => (languageCode !== defaultLanguage ? location?.description || query : query) || '';\n\nexport type FormData = FormDataValues;\nexport type SearchData = {\n  formData: FormData;\n  url?: string | null;\n};\n\ninterface SearchProps extends TLayout, TBrandLayout {\n  additionalQSParameters: AdditionalQSParameters;\n  autocompleteUri: string;\n  defaultLanguage: string;\n  languageCode: string;\n  onSearchSubmit: (formData: FormData, url: string) => void;\n  sessionId: string;\n  specialRates: Partial<SpecialRates>;\n  isDayUse: boolean;\n  baseAppUrl: string;\n  isPartnerBrand: boolean;\n  maxNumRooms?: number;\n  shouldOpenNewTabOnSubmit?: boolean;\n}\n\nconst isPortfolioPage = (baseAppUrl: string, shouldDisableOptionalDates: boolean) => {\n  return (\n    !shouldDisableOptionalDates &&\n    !(baseAppUrl.includes('/brands/') || baseAppUrl.includes('/events/'))\n  );\n};\n\n/**\n * BrandsSearch composes the ShopFrom components together into the brands-specific layout\n * used on all brands pages\n */\nexport const BrandsSearch: React.FC<SearchProps> = ({\n  onSearchSubmit,\n  autocompleteUri,\n  additionalQSParameters,\n  sessionId,\n  languageCode,\n  brandCode,\n  isGroupSearch = false,\n  specialRates,\n  isDayUse,\n  baseAppUrl,\n  isPartnerBrand,\n  maxNumRooms,\n  shouldOpenNewTabOnSubmit,\n}) => {\n  const { guestInfo } = useAuth();\n\n  const { asPath, isReady } = useRouter();\n  const [smbRate, setSmbRate] = useState(false);\n  const isSmbMember = !!guestInfo?.hhonors?.isSMBMember;\n\n  useEffect(() => {\n    if (isReady) {\n      const searchParams = new URLSearchParams(asPath.split('?')[1]);\n      const nextSmbRate = searchParams.get('smbRate') === 'true' && isSmbMember;\n      if (nextSmbRate !== smbRate) {\n        setSmbRate(nextSmbRate);\n      }\n    }\n  }, [asPath, isReady, smbRate, isSmbMember]);\n\n  const now = useMemo(() => new Date(Date.now()), []);\n  const startdate = useMemo(() => (isGroupSearch ? addDays(now, 7) : now), [isGroupSearch, now]);\n  const enddate = useMemo(\n    () => (isGroupSearch ? addDays(startdate, 2) : addDays(startdate, 1)),\n    [isGroupSearch, startdate]\n  );\n\n  //Disable optional dates for '/portal/travel-agents', '/p/luxury', '/preferred-rates', and events\n  //todayAsDefault=true in SearchDates will disable optional dates\n  const shouldDisableOptionalDates =\n    baseAppUrl.includes('/portal/travel-agents') ||\n    baseAppUrl.includes('/p/luxury') ||\n    baseAppUrl.includes('/preferred-rates') ||\n    isGroupSearch;\n\n  const defaultValues = {\n    brandCode,\n    specialRates: smbRate ? { ...specialRates, smbRate } : specialRates,\n    hhonors: guestInfo?.hhonors,\n    dates: shouldDisableOptionalDates\n      ? {\n          arrivalDate: startdate,\n          departureDate: enddate,\n          datesFlex: false,\n        }\n      : {},\n    sessionToken: sessionId,\n\n    ...(isGroupSearch ? { numRooms: 10, numAttendees: 0 } : {}),\n  };\n\n  const onFormSubmitHandler = (ShopFormdata: SearchData) => {\n    const { formData, url } = ShopFormdata;\n    const redirectSearchUrl = url || '';\n\n    onSearchSubmit(formData, redirectSearchUrl);\n  };\n\n  const searchFormKey = encodeURI(JSON.stringify(defaultValues));\n  const validateFormOnSubmit = isPortfolioPage(baseAppUrl, shouldDisableOptionalDates);\n  return (\n    <div className=\"searchWidgetBrand brand-lx:bg-bg-light\" data-testid=\"searchWidgetBrand\">\n      <div className=\"container mx-auto my-0 py-4\">\n        <ShopForm\n          language={languageCode}\n          onSubmit={onFormSubmitHandler}\n          defaultValues={defaultValues}\n          additionalQSParameters={additionalQSParameters}\n          targetOHWPage=\"search\"\n          key={searchFormKey}\n          wrapperClassName={cx([...wrapperClassNameDefaultWithLocation.slice(1), 'gap-3'])}\n          canAlwaysSubmit={true}\n          enableDatesFlexDreamRouting={true}\n          shouldDisplayGeocodeErrorModal={true}\n          hasErrorBanner={false}\n          submitOpensNewTab={shouldOpenNewTabOnSubmit}\n          {...(validateFormOnSubmit ? { useFormProps: { mode: 'onSubmit' } } : {})}\n        >\n          <SearchWidgetForm\n            languageCode={languageCode}\n            sessionId={sessionId}\n            autocompleteUri={autocompleteUri}\n            isGroupSearch={isGroupSearch}\n            isDayUse={isDayUse}\n            shouldDisableOptionalDates={shouldDisableOptionalDates}\n            baseAppUrl={baseAppUrl}\n            isPartnerBrand={isPartnerBrand}\n            maxNumRooms={maxNumRooms}\n          />\n        </ShopForm>\n      </div>\n    </div>\n  );\n};\n\nfunction SearchWidgetForm({\n  languageCode,\n  sessionId,\n  autocompleteUri,\n  isGroupSearch,\n  isDayUse,\n  shouldDisableOptionalDates,\n  baseAppUrl,\n  isPartnerBrand,\n  maxNumRooms,\n}: Pick<\n  SearchProps,\n  | 'languageCode'\n  | 'sessionId'\n  | 'autocompleteUri'\n  | 'isDayUse'\n  | 'baseAppUrl'\n  | 'isGroupSearch'\n  | 'isPartnerBrand'\n  | 'maxNumRooms'\n> & { shouldDisableOptionalDates: boolean }) {\n  const { coordinate, country } = useLocation();\n\n  const { t } = useTranslation(['osc-rooms', 'osc-location']);\n  const { asPath } = useRouter();\n  const isDatesRequired = asPath.includes('/preferred-rates/') || asPath.includes('/events/');\n  const canBookSingleRoomOnly = isPartnerBrand && maxNumRooms === 1;\n\n  //NHCSEARCH-5088 Remove Flexible dates when reset date is present\n  const [enableRemoveFlexibleDatesTest, setEnableRemoveFlexibleDatesTest] = useState(false);\n\n  //NHCSEARCH-5194 enable test for country = CA or GB or US\n  const [enableCountryPopularDestinationTest, setEnableCountryPopularDestinationTest] =\n    useState(false);\n  const abTestCountry = useMemo(() => {\n    const userCountry = !!country && ['CA', 'GB', 'US'].includes(country) ? country : undefined;\n    if (userCountry) window.sessionStorage.setItem('user-location', userCountry);\n    else if (isBrowser) window.sessionStorage.removeItem('user-location');\n    return userCountry;\n  }, [country]);\n\n  const {\n    isRemoveFlexibleDatesTestLoaded,\n    isRemoveFlexibleDatesDefault,\n    isRemoveFlexibleDatesVariant,\n    isCountryBasedPopularDestinationsTestLoaded,\n    isCountryPopularDestinationVariant,\n  } = useGetMVTSelections({\n    REMOVE_FLEXIBLE_DATES_AGENT_ID: enableRemoveFlexibleDatesTest,\n    COUNTRY_BASED_POPULAR_DESTINATIONS_AGENT_ID: enableCountryPopularDestinationTest,\n  });\n\n  //Popular Destinations and Recent Searches applies to portofolio page only\n  const enablePopularDestinationsAndRecentSearches = isPortfolioPage(\n    baseAppUrl,\n    shouldDisableOptionalDates\n  );\n\n  const { showRecentSearches: enableRecentSearches, popularDestinationOptions } =\n    useRecentSearchPopularDestinationData({\n      isPopularDestinations: enablePopularDestinationsAndRecentSearches,\n      isRecentSearches: enablePopularDestinationsAndRecentSearches,\n      country: isCountryPopularDestinationVariant ? abTestCountry : undefined,\n      languageCode,\n    });\n\n  const {\n    formState: { touchedFields },\n  } = useFormContext();\n\n  const isTouched = Object.keys(touchedFields).length !== 0;\n\n  const isSearchRewardSent = useRef(false);\n\n  const sendSearchReward = () => {\n    if (!isSearchRewardSent.current) {\n      isSearchRewardSent.current = true;\n      sendReward(CONDUCTRICS_EDIT_BRAND_SEARCH_WIDGET);\n    }\n  };\n\n  useEffect(() => {\n    if (isTouched) {\n      sendSearchReward();\n    }\n  }, [isTouched]);\n\n  return (\n    <>\n      <ShopFormLocation\n        language={languageCode}\n        coordinate={coordinate}\n        sessionId={sessionId}\n        required={true}\n        autocompleteUri={autocompleteUri}\n        enableRecentSearches={enableRecentSearches}\n        popularDestinationOptions={popularDestinationOptions || []}\n        registerOptions={{\n          validate: () => true,\n        }}\n        onClick={() => {\n          //NHCSEARCH-5194 enable test\n          if (\n            !enableCountryPopularDestinationTest &&\n            !!abTestCountry &&\n            isCountryBasedPopularDestinationsTestLoaded\n          ) {\n            setEnableCountryPopularDestinationTest(true);\n          }\n        }}\n      />\n      <ShopFormDates\n        isDayUse={isDayUse}\n        language={languageCode}\n        hasTodayAsDefault={shouldDisableOptionalDates}\n        labelOptions={{ whenLabel: true, requiredDates: isDatesRequired }}\n        onOpen={() => {\n          sendSearchReward();\n          //NHCSEARCH-5088\n          const isEventsPage = asPath.includes('/events/');\n          if (isRemoveFlexibleDatesTestLoaded && !shouldDisableOptionalDates && !isEventsPage)\n            setEnableRemoveFlexibleDatesTest(true);\n        }}\n        {...(isRemoveFlexibleDatesVariant ? { hideFlexDates: true } : {})}\n        onFlexibleDates={() => {\n          //NHCSEARCH-5088\n          if (isRemoveFlexibleDatesDefault) sendReward(MY_FLEXIBLE_DATES_CLICK_GOAL);\n        }}\n        onResetDates={() => {\n          //NHCSEARCH-5088\n          if (isRemoveFlexibleDatesDefault || isRemoveFlexibleDatesVariant) sendReward(RESET_DATES);\n        }}\n      />\n      {isGroupSearch ? (\n        <ShopFormGroup showNumAttendees={true} />\n      ) : (\n        <>\n          <ShopFormRooms\n            occupancyLimitMessage={\n              canBookSingleRoomOnly\n                ? t('osc-rooms:occupancy.occupancySingleRoomLimitMessage')\n                : t('osc-rooms:occupancy.occupancyLimitMessage')\n            }\n            hideGroupLink={!!isPartnerBrand}\n            onOpen={() => {\n              sendSearchReward();\n            }}\n            maxRooms={maxNumRooms}\n          />\n          <ShopFormSpecialRates\n            onOpen={() => {\n              sendSearchReward();\n            }}\n          />\n        </>\n      )}\n    </>\n  );\n}\n","import { env } from '@dx-ui/framework-env';\nimport { type BrandCode, searchUriBuilder } from '@dx-ui/framework-uri-builder';\nimport type { FormData } from './brands-search';\nimport { getVisitorId } from '@dx-ui/framework-react-query';\n\nconst getBaseUrl = (slug?: string) =>\n  slug ? new URL(slug, env('OHW_BASE_URL'))?.href : new URL(env('OHW_BASE_URL')).origin;\n\nexport type SearchUrlParameters = {\n  languageCode: string;\n  awc: string;\n  cid: string;\n  dclid: string;\n  formData: FormData;\n  gclid: string;\n  isGroupSearch: boolean;\n  baseAppUrl: string;\n  url: string;\n  wtmcid: string;\n  brandCode: string;\n};\n\nexport const GROUP_LIMIT = 10;\nfunction generateGroupSearchUrl({\n  formData,\n  isGroupSearch,\n  brandCode,\n  languageCode,\n}: SearchUrlParameters) {\n  const { numRooms, numAttendees, dates, query } = formData;\n  const { arrivalDate, departureDate } = dates;\n  const queryVal = query;\n\n  // if numAttendees isn't defined, make sure that we are requesting at least 10 rooms\n  const numRoomsVal = Number(numAttendees)\n    ? Number(numRooms)\n    : Math.max(Number(numRooms), GROUP_LIMIT);\n\n  const groupUrl = searchUriBuilder({\n    brandCode: brandCode as keyof BrandCode,\n    locale: languageCode,\n    urlParams: {\n      dates: {\n        arrivalDate: arrivalDate ?? undefined,\n        departureDate: departureDate ?? undefined,\n      },\n      placeId: formData.placeId,\n      query: queryVal,\n      numRooms: numRoomsVal,\n      numAttendees: isGroupSearch ? Number(numAttendees) : 0,\n      sessionToken: getVisitorId() ?? undefined,\n    },\n    baseUrl: getBaseUrl(),\n    relative: false,\n  });\n\n  return groupUrl;\n}\nfunction generateNormalSearchUrl({ url, baseAppUrl }: SearchUrlParameters) {\n  const origin = baseAppUrl ? new URL(baseAppUrl).origin : null;\n\n  return origin ? `${origin}${url}` : url;\n}\n\nexport function generateUrl(searchUrlParameters: SearchUrlParameters) {\n  // For less than 10 rooms and no attendees, use transient search\n  const isGroupSearchAndMoreThan10Rooms =\n    searchUrlParameters.isGroupSearch && (searchUrlParameters?.formData?.numRooms || 10) >= 10;\n  const hasAtLeastOneAttendee =\n    searchUrlParameters?.formData?.numAttendees && searchUrlParameters?.formData?.numAttendees > 0;\n\n  if (isGroupSearchAndMoreThan10Rooms || hasAtLeastOneAttendee) {\n    return generateGroupSearchUrl(searchUrlParameters);\n  }\n\n  if (\n    (!searchUrlParameters.formData?.dates?.arrivalDate &&\n      !searchUrlParameters.formData?.dates?.departureDate) ||\n    //dreamURIBuilder previously generates valid URI\n    (searchUrlParameters.formData?.dates?.datesFlex &&\n      searchUrlParameters?.url?.includes('/locations/'))\n  ) {\n    return new URL(searchUrlParameters.url, searchUrlParameters.baseAppUrl).toString();\n  }\n  return generateNormalSearchUrl(searchUrlParameters);\n}\n","import type { ComponentParamsProperty, mappingSchema } from '@dx-ui/cpm-sdk';\nimport type { GetCompanyByAccountIdQuery } from '@dx-ui/cpm-mapping-shared';\nimport type { SpecialRates, SpecialRatesKey } from '@dx-ui/osc-special-rates';\nimport { isSpecialRatesKey } from '@dx-ui/osc-special-rates';\nimport type { AdditionalQSParameters } from '@dx-ui/osc-shop-form';\nimport { isAdditionalQsParameterKey } from '@dx-ui/osc-shop-form';\n\nimport type { SortByValues, TripAdvisorRatings } from '@dx-ui/framework-uri-builder';\nimport { isSortByValue, isTripAdvisorRating } from '@dx-ui/framework-uri-builder';\n\ntype AdditionalQSKey = keyof AdditionalQSParameters;\ntype AdditionalQSValue = AdditionalQSParameters[AdditionalQSKey];\n\nfunction normalizeQSKey(key: string): AdditionalQSKey | null {\n  switch (key) {\n    case 'f-amenityIds':\n    case 'f_amenityIds':\n      return 'f_amenityIds';\n    case 'f-attributeIds':\n    case 'f_attributeIds':\n      return 'f_attributeIds';\n    case 'f-brandCodes':\n    case 'f_brandCodes':\n      return 'f_brandCodes';\n    case 'f-price':\n    case 'f_price':\n      return 'f_price';\n    case 'f-tripAdvisorRatings':\n    case 'f_tripAdvisorRatings':\n      return 'f_tripAdvisorRatings';\n    case 'spec_plan':\n    case 'specPlan':\n      return 'specPlan';\n    default:\n      if (isAdditionalQsParameterKey(key)) {\n        return key;\n      } else {\n        return null;\n      }\n  }\n}\n\nfunction makeIfQSKeyMatches<Key extends AdditionalQSKey, Value>(\n  key: string,\n  value: string,\n  keyMatch: Key,\n  makeValue: (v: string) => Value\n): Partial<Record<Key, Value>> {\n  if (key === keyMatch) {\n    const val = makeValue(value);\n    if (val !== undefined) {\n      return { [keyMatch]: val } as Record<Key, Value>;\n    }\n  }\n  return {};\n}\n\nfunction makeIfSpecialRatesKeyMatches<Key extends SpecialRatesKey, Value>(\n  key: string,\n  value: string,\n  keyMatch: Key,\n  makeValue: (v: string) => Value\n): Partial<Record<Key, Value>> {\n  if (key === keyMatch) {\n    const val = makeValue(value);\n    if (val !== undefined) {\n      return { [keyMatch]: val } as Record<Key, Value>;\n    }\n  }\n  return {};\n}\n\nfunction makeBool(value: string): boolean | undefined {\n  return value !== null && value !== undefined ? Boolean(value) : undefined;\n}\n\nfunction makeString(value: string): string | undefined {\n  return value;\n}\n\nfunction makeNumber(value: string): number | undefined {\n  const parsed = Number(value);\n  if (Number.isNaN(parsed)) {\n    return undefined;\n  } else {\n    return parsed;\n  }\n}\n\nfunction makeStringArray(value: string): Array<string> | undefined {\n  return value?.split(',');\n}\n\nfunction makeSpecPlan(value: string | null | undefined): string[] | undefined {\n  if (typeof value === 'string') {\n    return value.split(',');\n  } else {\n    return undefined;\n  }\n}\n\nfunction makeFPrice(value: string): [number, number] | undefined {\n  function isFPrice(\n    value: AdditionalQSValue | number[]\n  ): value is AdditionalQSParameters['f_price'] {\n    return (\n      Array.isArray(value) &&\n      value.length === 2 &&\n      typeof value[0] === 'number' &&\n      typeof value[1] === 'number'\n    );\n  }\n\n  const parsed = value.split(',').map(Number);\n  if (isFPrice(parsed)) {\n    return parsed;\n  } else {\n    return undefined;\n  }\n}\n\nfunction makeTripAdvisorRatings(value: string): TripAdvisorRatings | undefined {\n  if (isTripAdvisorRating(value)) {\n    return value;\n  } else {\n    return undefined;\n  }\n}\n\nfunction makeSortByValues(value: string): SortByValues | undefined {\n  if (isSortByValue(value)) {\n    return value;\n  } else {\n    return undefined;\n  }\n}\n\nfunction injectQSVal<Key extends AdditionalQSKey>(\n  key: Key,\n  val: string,\n  additionalQSParameters: AdditionalQSParameters\n): AdditionalQSParameters {\n  return {\n    ...additionalQSParameters,\n    ...makeIfQSKeyMatches(key, val, 'adjoiningRoomStay', makeBool),\n    ...makeIfQSKeyMatches(key, val, 'availableHotelsOnly', makeBool),\n    ...makeIfQSKeyMatches(key, val, 'brandCode', makeString),\n    ...makeIfQSKeyMatches(key, val, 'cid', makeString),\n    ...makeIfQSKeyMatches(key, val, 'content', makeString),\n    ...makeIfQSKeyMatches(key, val, 'displayCurrency', makeString),\n    ...makeIfQSKeyMatches(key, val, 'f_amenityIds', makeStringArray),\n    ...makeIfQSKeyMatches(key, val, 'f_attributeIds', makeStringArray),\n    ...makeIfQSKeyMatches(key, val, 'f_brandCodes', makeStringArray),\n    ...makeIfQSKeyMatches(key, val, 'f_price', makeFPrice),\n    ...makeIfQSKeyMatches(key, val, 'f_tripAdvisorRatings', makeTripAdvisorRatings),\n    ...makeIfQSKeyMatches(key, val, 'fromId', makeString),\n    ...makeIfQSKeyMatches(key, val, 'maxPoints', makeNumber),\n    ...makeIfQSKeyMatches(key, val, 'redeemPts', makeBool),\n    ...makeIfQSKeyMatches(key, val, 'requestedRatesOnly', makeBool),\n    ...makeIfQSKeyMatches(key, val, 'sortBy', makeSortByValues),\n    ...makeIfQSKeyMatches(key, val, 'specPlan', makeSpecPlan),\n    ...makeIfQSKeyMatches(key, val, 'specialRatesTokens', makeString),\n    ...makeIfQSKeyMatches(key, val, 'token', makeStringArray),\n  };\n}\n\nfunction injectSpecialRatesValue<Key extends SpecialRatesKey>(\n  key: Key,\n  val: string,\n  specialRates: Partial<SpecialRates>\n): Partial<SpecialRates> {\n  return {\n    ...specialRates,\n    ...makeIfSpecialRatesKeyMatches(key, val, 'aaaRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'aarpRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'corporateCode', makeString),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'employeeRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'friendsAndFamilyRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'governmentOrMilitaryRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'groupCode', makeString),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'ownerHGVRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'ownerVIPRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'promoCode', makeString),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'redeemPts', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'requestedRatesOnly', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'searchedRatePlanDescription', makeString),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'seniorRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'smbRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'travelAgentId', makeString),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'travelAgentRate', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'useOfferId', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'usePnd', makeBool),\n    ...makeIfSpecialRatesKeyMatches(key, val, 'useRequestedRatesOnly', makeBool),\n  };\n}\n\nexport function mapDataToSpecialRates(\n  componentParams: ComponentParamsProperty<(typeof mappingSchema)['Search Widget']>,\n  corporateAccount?: GetCompanyByAccountIdQuery | null\n) {\n  const {\n    deeplinkParameter1,\n    deeplinkParameterValue1,\n    deeplinkParameter2,\n    deeplinkParameterValue2,\n    deeplinkParameter3,\n    deeplinkParameterValue3,\n    aaaRate,\n    aarpRate,\n    governmentOrMilitaryRate,\n    redeemPts,\n    seniorRate,\n    travelAgentRate,\n  } = componentParams;\n  const corpAccount = corporateAccount?.altCorporateAccount;\n\n  let additionalQS: AdditionalQSParameters = {};\n  let specialRates: Partial<SpecialRates> = {\n    aaaRate,\n    aarpRate,\n    governmentOrMilitaryRate,\n    redeemPts,\n    seniorRate,\n    travelAgentRate,\n  };\n\n  const deepLinkParams = {\n    [deeplinkParameter1]: deeplinkParameterValue1,\n    [deeplinkParameter2]: deeplinkParameterValue2,\n    [deeplinkParameter3]: deeplinkParameterValue3,\n  };\n\n  if (corpAccount) {\n    const corporateId = corpAccount.partner?.corporateId;\n    const pnd = corpAccount.pnd;\n\n    if (corporateId && pnd) {\n      specialRates.usePnd = true;\n      specialRates.pnd = {\n        name: corporateId,\n        pnd,\n      };\n    }\n\n    // `f-amenityIds` param is returned in `corporateAccount.queryParams` from\n    // the GraphQL response for gated pages. The CMS can override this value via\n    // deeplink params below.\n    if (corpAccount.queryParams) {\n      const params = new URLSearchParams(corpAccount.queryParams);\n      for (const [rawKey, rawVal] of params.entries()) {\n        if (isSpecialRatesKey(rawKey)) {\n          specialRates = injectSpecialRatesValue(rawKey, rawVal, specialRates);\n        }\n\n        const qsKey = normalizeQSKey(rawKey);\n        if (qsKey) {\n          additionalQS = injectQSVal(qsKey, rawVal, additionalQS);\n        }\n      }\n    }\n  }\n\n  for (const [rawKey, rawVal] of Object.entries(deepLinkParams)) {\n    const key = normalizeQSKey(rawKey);\n    if (key) {\n      additionalQS = injectQSVal(key, rawVal, additionalQS);\n    }\n  }\n\n  return {\n    additionalQS,\n    specialRates,\n  };\n}\n","export * from './brands-search';\nexport * from './generate-url';\nexport * from './map-data-to-special-rates';\n","export * from './lib';\n","import { Parallax } from 'react-scroll-parallax';\n\nexport type IllustrationVariant = (typeof illustrationVariants)[number];\nexport const illustrationVariants = [\n  'es-line-illustration',\n  'hx-hexagon',\n  'none',\n  'wa-cocktail',\n  'wa-feather',\n  'wa-plate',\n  'wa-stairwell',\n  'ww-filigree',\n] as const;\n\nexport const BackgroundIllustration = ({\n  variant,\n  isParallax,\n}: {\n  variant: IllustrationVariant;\n  isParallax?: boolean;\n}) => {\n  switch (variant) {\n    case 'wa-stairwell':\n      return <StairwellIllustration isParallax={isParallax} />;\n    case 'wa-feather':\n      return <FeatherIllustration isParallax={isParallax} />;\n    case 'wa-plate':\n      return <PlateIllustration isParallax={isParallax} />;\n    case 'ww-filigree':\n      return <Filigree />;\n    case 'wa-cocktail':\n      return;\n    case 'es-line-illustration':\n      return <LineIllustration />;\n    case 'none':\n      return;\n  }\n};\n\nexport const Filigree = () => {\n  return (\n    <div className=\"pointer-events-none absolute bottom-0 h-1/2 w-full overflow-hidden\">\n      <div className=\"size-full scale-[2.0] bg-[url('/modules/assets/img/brand/WW/backgrounds/filigree.svg')] opacity-35 sm:scale-[none]\" />\n    </div>\n  );\n};\n\nexport const LineIllustration = () => {\n  return (\n    <div className=\"bg-tertiary pointer-events-none absolute top-0 size-full overflow-hidden\">\n      <div\n        className=\"absolute start-[50%] size-[150%] -translate-x-1/2 translate-y-[-160px] bg-[url('/modules/assets/img/brand/ES/backgrounds/embassy-suites-lines-background.svg')] bg-cover bg-top \n      bg-no-repeat lg:size-[125%] lg:translate-y-0  lg:bg-[bottom_20%_right_50%] xl:bg-[bottom_20%_right_50%]\"\n      />\n    </div>\n  );\n};\n\nexport const StairwellIllustration = ({ isParallax }: { isParallax?: boolean }) => {\n  return (\n    <div className=\"container pointer-events-none absolute bottom-0 start-[50%] aspect-[100/91] h-[500px] w-screen -translate-x-1/2 translate-y-[400px] overflow-visible rtl:translate-x-1/2\">\n      <Parallax className=\"size-full\" speed={isParallax ? 10 : 0}>\n        <div className=\"ms-auto size-full md:w-[70%] lg:w-1/2\">\n          <div\n            className=\"relative h-full\n          bg-[url('/modules/assets/img/brand/WA/backgrounds/WA_stairwell_for_light_background.png')]\n          bg-cover bg-no-repeat ltr:bg-right rtl:bg-left\"\n          />\n        </div>\n      </Parallax>\n    </div>\n  );\n};\n\nexport const FeatherIllustration = ({ isParallax }: { isParallax?: boolean }) => {\n  return (\n    <div className=\"container pointer-events-none absolute bottom-0 start-[50%] aspect-[542/349] h-[600px] w-screen -translate-x-1/2 translate-y-[400px] overflow-visible rtl:translate-x-1/2\">\n      <Parallax className=\"size-full\" speed={isParallax ? 10 : 0}>\n        <div className=\"ms-auto size-full md:w-[90%] lg:w-4/5\">\n          <div\n            className=\"relative h-full\n          bg-[url('/modules/assets/img/brand/WA/backgrounds/WA_feather_for_light_background.png')]\n          bg-contain bg-no-repeat ltr:bg-right rtl:bg-left\"\n          />\n        </div>\n      </Parallax>\n    </div>\n  );\n};\n\nexport const PlateIllustration = ({ isParallax }: { isParallax?: boolean }) => {\n  return (\n    <div className=\"container pointer-events-none absolute bottom-0 start-[50%] aspect-[250/109] h-[400px] w-screen -translate-x-1/2 translate-y-[300px] overflow-visible rtl:translate-x-1/2\">\n      <Parallax className=\"size-full\" speed={isParallax ? 10 : 0}>\n        <div className=\"ms-auto size-full md:w-4/5 lg:w-[70%]\">\n          <div\n            className=\"relative h-full\n          bg-[url('/modules/assets/img/brand/WA/backgrounds/WA_plate_setting_for_light_background.png')]\n          bg-contain bg-no-repeat ltr:bg-right rtl:bg-left\"\n          />\n        </div>\n      </Parallax>\n    </div>\n  );\n};\n","import type * as React from 'react';\nimport cx from 'classnames';\n\nimport { BackgroundIllustration } from './parallax-illustrations';\n\ninterface Effects {\n  animation?: boolean;\n  backgroundImage?: boolean;\n}\n\nexport const getEffectClassNames = (effects: Effects) =>\n  cx({\n    // Only background image effect\n    'bg-img-overlay': effects.backgroundImage,\n  });\n\n/**\n * Themes a component by wrapping it in a div containing custom classes that override CSS props.\n *\n * Reimplementation of dx-hotels-ui BrandComponentThemeWrapper\n */\nexport const BrandComponentThemeInline: React.FC<{\n  componentParams: Record<string, unknown>;\n  componentClassName?: string;\n  brandCode: string;\n  children: React.ReactNode;\n  backgroundIllustration?: React.ComponentProps<typeof BackgroundIllustration>;\n}> = ({\n  children,\n  componentClassName = '',\n  brandCode,\n  backgroundIllustration,\n  componentParams: { theme = '', backgroundImage, anchorId, topPadding, bottomPadding },\n}) => {\n  const effectClassNames = getEffectClassNames({\n    backgroundImage: typeof backgroundImage === 'boolean' ? backgroundImage : false,\n  });\n\n  const id = typeof anchorId === 'string' && anchorId !== '' ? anchorId : undefined;\n  const isLight = theme === 'light';\n  const isDark = theme === 'dark';\n\n  return (\n    <div\n      id={id}\n      data-testid=\"BrandComponentThemeInline\"\n      className={cx(\n        {\n          'bg-transparent': componentClassName === 'header',\n          'bg-bg-dark': brandCode && isDark,\n          'bg-bg-light': brandCode !== 'WA' && isLight,\n          'brand-lx:bg-bg': brandCode === 'LX' && isLight && componentClassName === 'hero-image',\n          'brand-ou:bg-secondary brand-gu:bg-quarternary': !isDark && !isLight,\n          'pt-8 xl:pt-12': topPadding === 'small',\n          'pt-12 xl:pt-16': topPadding === 'medium',\n          'pt-16 xl:pt-24': topPadding === 'large',\n          'pb-8 xl:pb-12': bottomPadding === 'small',\n          'pb-12 xl:pb-16': bottomPadding === 'medium',\n          'pb-16 xl:pb-24': bottomPadding === 'large',\n          'brand-wa:bg-transparent': componentClassName !== 'search-widget-cpm',\n          'bg-bg': componentClassName === 'search-widget-cpm',\n          'brand-wa:bg-bg-light':\n            componentClassName === 'header' || componentClassName === 'search-widget-cpm',\n        },\n        'relative',\n        componentClassName,\n        componentClassName === 'collage'\n          ? 'brand-ol:bg-bg brand-qq:overflow-hidden brand-qq:py-6 brand-qq:md:py-8 brand-qq:lg:py-20'\n          : null\n      )}\n    >\n      {backgroundIllustration ? (\n        <BackgroundIllustration\n          isParallax={backgroundIllustration.isParallax}\n          variant={backgroundIllustration.variant}\n        />\n      ) : null}\n      {effectClassNames ? <div className={effectClassNames} /> : null}\n      <div className=\"relative\">{children}</div>\n    </div>\n  );\n};\n","import type { ReactNode } from 'react';\n\n/**\n * Wrap components with a CSS class to stop OneLink translating the content\n */\nexport const OneLinkWrapper = ({\n  children,\n  componentParams,\n}: {\n  children: ReactNode;\n  componentParams?: Record<string, unknown>;\n}) => {\n  const { oneLinkNoTx } = componentParams || {};\n\n  if (!oneLinkNoTx) {\n    return children;\n  }\n\n  return (\n    <div data-testid=\"OneLinkWrapper\" className=\"OneLinkNoTx\">\n      {children}\n    </div>\n  );\n};\n","import { useRef, useEffect } from 'react';\nimport { useInitConductrics } from '@dx-ui/framework-conductrics';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport Cookies from 'universal-cookie';\n\nexport const useInitializeConductrics = (traitsList: string[] = []) => {\n  const isConductricsInit = useRef(false);\n  const { guestInfo, isLoading, isAuthenticated } = useAuth();\n  const initConductrics = useInitConductrics();\n\n  useEffect(() => {\n    if (!isLoading && !isConductricsInit.current) {\n      isConductricsInit.current = true;\n\n      const tms = new Cookies()\n        .get('TMS')\n        ?.split(',')\n        .filter((entry: string) => (entry.toLowerCase() || '').startsWith('web'))\n        .map((entry: string) => entry.split('=')[1] || '');\n\n      let view = 'app-only-view';\n\n      const isNotHonorsMember = !!tms?.includes('15300019');\n      const isHonorsMember = !!tms?.includes('15217574');\n\n      if (isNotHonorsMember) {\n        view = 'join-view';\n      }\n\n      if (isHonorsMember) {\n        view = 'sign-in-view';\n      }\n\n      const traits = [\n        ...traitsList,\n        `login:${isAuthenticated ? 'yes' : 'no'}`,\n        `component-view:${view}`,\n      ];\n      const { hhonors } = guestInfo || {};\n\n      if (hhonors?.summary?.tier) {\n        traits.push(`tier:${hhonors.summary.tier.toLowerCase()}`);\n      }\n\n      const teamMember =\n        hhonors?.isOwner ||\n        hhonors?.isTeamMember ||\n        hhonors?.isOwnerHGV ||\n        hhonors?.isLongTenure10 ||\n        hhonors?.isLongTenure20;\n\n      traits.push(`teamMember:${teamMember ? 'yes' : 'no'}`);\n      initConductrics({ traits });\n    }\n  }, [isAuthenticated, isLoading, guestInfo, initConductrics, traitsList]);\n};\n","export * from './brand-component-theme-inline';\nexport * from './OneLinkWrapper';\nexport * from './parallax-illustrations';\nexport * from './use-initialize-conductrics';\n","export * from './lib';\n","import type * as React from 'react';\nimport cx from 'classnames';\n\nexport type CaptionProps = {\n  /**\n   * Optional, provides the text content for the caption\n   */\n  caption?: string;\n  /**\n   * Optional link url\n   */\n  captionLink?: string;\n  /**\n   * Optional link target\n   */\n  captionLinkTarget?: string;\n  /**\n   * Optional metrics data\n   */\n  metricsOnClick?: () => void;\n  /*\n   * Optional alignment, default is end\n   */\n  align?: 'start' | 'end';\n};\n\n/**\n * Image caption is an optional prop that is consumed by other components, this cheese does not stand alone. Can be text only or a clickable link.\n */\nexport const Caption: React.FC<CaptionProps> = ({\n  caption,\n  captionLink,\n  captionLinkTarget,\n  align = 'end',\n  metricsOnClick,\n}) => {\n  const captionClasses =\n    'flex absolute top-0 items-center justify-center flex-auto text-xs mx-4 mt-4 mb-0 py-2 px-4 bg-bg-inverse text-text-overlay opacity-80 p-2 no-underline caption-main-text';\n\n  if (!caption && !captionLink) {\n    return null;\n  }\n\n  return (\n    <figcaption data-testid=\"caption-container\">\n      {captionLink ? (\n        <a\n          data-e2e=\"linkedCaption\"\n          data-testid=\"img-caption-link\"\n          className={cx(captionClasses, 'cursor-pointer', {\n            'end-0': align === 'end',\n            'start-0': align === 'start',\n          })}\n          href={captionLink}\n          onClick={() => metricsOnClick?.()}\n          target={captionLinkTarget}\n        >\n          {caption}\n        </a>\n      ) : (\n        <div\n          data-osc-product=\"osc-caption\"\n          className={cx(captionClasses, 'pointer-events-none cursor-default', {\n            'end-0': align === 'end',\n            'start-0': align === 'start',\n          })}\n        >\n          {caption}\n        </div>\n      )}\n    </figcaption>\n  );\n};\n","export * from './caption';\n","export * from './lib';\n","import cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\n\nexport const CarouselNoImage = ({\n  className,\n  isFullSize = false,\n}: {\n  className?: string;\n  isFullSize?: boolean;\n}) => {\n  const { t } = useTranslation('osc-carousel');\n\n  return (\n    <div\n      className={cx(\n        '@container/no-image bg-bg-alt flex items-center justify-center',\n        { 'h-full w-full': isFullSize, 'aspect-[3/2]': !isFullSize },\n        className\n      )}\n    >\n      <span className=\"@[256px]/no-image:text-2xl @[150px]/no-image:text-base text-text-alt text-xs\">\n        {t('noPhotoAvailable')}\n      </span>\n    </div>\n  );\n};\n","import { useState } from 'react';\nimport type { ImageProps } from 'next/legacy/image';\nimport Image from 'next/legacy/image';\nimport { CarouselNoImage } from './carousel-no-image';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport classnames from 'classnames';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport type { CarouselSingleMetrics } from './types/carousel-analytics';\n\nexport type CarouselImageProps = {\n  /** Image alt text. Defaults to \"Image showcasing selected Hotel\" */\n  alt?: string | null;\n  /** Pass in overrides for next/image component */\n  imageProps?: Omit<ImageProps, 'src'>;\n  /** source of image */\n  url: string;\n  captionData?: CaptionProps;\n  /** Whether it is the currently active image */\n  isActive?: boolean;\n  /** Analytics data */\n  metrics?: CarouselSingleMetrics;\n};\n\n/**\n * Component to render the carousel image. Includes error handling that will return a \"no photo available\" placeholder\n * in case of image error.\n * @returns JSX.Element\n */\nexport const CarouselImage = ({\n  alt,\n  imageProps,\n  url,\n  captionData,\n  isActive,\n  metrics,\n}: CarouselImageProps) => {\n  const [isImageError, setIsImageError] = useState(false);\n  const [isImageLoaded, setIsImageLoaded] = useState(false);\n\n  return (\n    <>\n      <div\n        className={classnames('bg-text/10 absolute inset-0 size-full shrink-0', {\n          'animate-pulse': !isImageLoaded,\n        })}\n      />\n      {isImageError ? (\n        <CarouselNoImage isFullSize />\n      ) : (\n        <figure className=\"relative size-full\">\n          <Image\n            alt={alt || ''}\n            className={classnames('absolute inset-0 size-full object-cover duration-500', {\n              'opacity-0': !isImageLoaded,\n              'opacity-100': isImageLoaded,\n            })}\n            layout=\"fill\"\n            onError={() => {\n              setIsImageError(true);\n            }}\n            onLoadingComplete={() => {\n              setIsImageLoaded(true);\n            }}\n            src={url}\n            unoptimized={true}\n            data-testid=\"carousel-image\"\n            aria-hidden={isActive ? 'false' : 'true'}\n            {...imageProps}\n          />\n          {captionData && isActive ? (\n            <Caption\n              caption={captionData?.caption}\n              captionLink={captionData?.captionLink}\n              metricsOnClick={() => metrics && trackEvent(ANALYTICS_GLOBAL_CLICK_EVENT, metrics)}\n            />\n          ) : null}\n        </figure>\n      )}\n    </>\n  );\n};\n","import {\n  ANALYTICS_NO_VALUE,\n  type BaseImageMetrics,\n  ImageClickID,\n  type ImageClickIDType,\n  ImageFunction,\n  ImageType,\n} from '@dx-ui/config-metrics';\nimport type { CarouselSingleMetrics } from '../types/carousel-analytics';\n\ntype GenerateCarouselSingleMetricsParams = {\n  metrics?: Partial<BaseImageMetrics>;\n  position?: number;\n  images?: { alt: string }[];\n  itemTitle?: string;\n  clickID: ImageClickIDType;\n  imageFunction?: (typeof ImageFunction)['Link'];\n};\n\n/**\n * Utility function to generate carousel metrics\n */\nexport function generateCarouselSingleMetrics({\n  metrics,\n  position,\n  images,\n  itemTitle = ANALYTICS_NO_VALUE,\n  clickID = ImageClickID.Scroll,\n  imageFunction,\n}: GenerateCarouselSingleMetricsParams): CarouselSingleMetrics {\n  const carouselMetrics = {\n    click: {\n      ...metrics?.click,\n      clickID,\n    },\n    osc: {\n      ...metrics?.osc,\n      image: {\n        ...metrics?.osc?.image,\n        headline: metrics?.osc?.image?.headline || ANALYTICS_NO_VALUE,\n        count: images?.length || 0,\n        position: position || 0,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        type: ImageType.Carousel,\n      },\n    },\n  };\n\n  if (imageFunction === ImageFunction.Link) {\n    carouselMetrics.osc.image = {\n      ...carouselMetrics.osc.image,\n      function: ImageFunction.Link,\n    };\n  }\n\n  return carouselMetrics;\n}\n\n/**\n * Utility function to generate CPM carousel metrics\n * The returned object will serve as a partial image metric object to be extended within the CarouselSingle component\n */\nexport function generateCpmCarouselMetrics(\n  headline: string | null | undefined,\n  clickID?: ImageClickIDType\n): Partial<BaseImageMetrics> {\n  return {\n    click: {\n      clickID: clickID ?? ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        // All the other CarouselSingleMetrics attributes will be set in CarouselSingle\n        headline: headline || ANALYTICS_NO_VALUE,\n        type: ImageType.Carousel,\n      },\n    },\n  };\n}\n","/* eslint-disable react/display-name */\nimport cx from 'classnames';\nimport type * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { Icon } from '@dx-ui/osc-icon';\nimport type { TFunction } from 'i18next';\nimport { CarouselImage } from './carousel-image';\nimport { CarouselNoImage } from './carousel-no-image';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { isRtl as isRtlLanguage } from '@dx-ui/utilities-get-language-direction';\nimport { useRouter } from 'next/router';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ANALYTICS_NO_VALUE,\n  type BaseImageMetrics,\n  ImageClickID,\n  ImageFunction,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateCarouselSingleMetrics } from './utils/carousel-analytics';\n\nexport type CarouselImages = {\n  alt: string;\n  url: string;\n  captionData?: CaptionProps;\n  children?: React.ReactNode;\n};\n\nexport type CarouselSinglePropsBase = {\n  images?: CarouselImages[];\n  startingIndex?: number;\n  isLoading?: boolean;\n  onArrowClick?: (index: number) => void;\n  showAlternateControls?: boolean;\n  isTailored?: boolean;\n  metrics?: Partial<BaseImageMetrics>;\n};\n\nexport type CarouselSingleProps = CarouselSinglePropsBase & React.HTMLAttributes<HTMLDivElement>;\n\nconst CarouselNavigationButton = ({\n  children,\n  direction,\n  isTailored,\n  ...rest\n}: {\n  children: React.ReactNode;\n  direction: 'left' | 'right';\n  isTailored?: CarouselSinglePropsBase['isTailored'];\n} & React.HTMLAttributes<HTMLButtonElement>) => (\n  <button\n    className=\"relative flex appearance-none items-center overflow-hidden\"\n    type=\"button\"\n    {...rest}\n  >\n    {children}\n    <span\n      className={cx({\n        '@[256px]/carousel:px-2 py-2 px-1 bg-bg-inverse opacity-90': !isTailored,\n        'bg-[rgb(var(--color-background))] p-2 md:p-3': isTailored,\n      })}\n    >\n      <Icon\n        name=\"arrowhead-left\"\n        className={cx('@[256px]/carousel:size-7 @[448px]/carousel:size-8 h-3 w-5', {\n          '-scale-x-100': direction === 'right',\n          'fill-text': isTailored,\n          'fill-text-inverse': !isTailored,\n        })}\n      />\n    </span>\n  </button>\n);\n\nconst CarouselControls = ({\n  showAlternateControls,\n  activeIndex,\n  count,\n  isRtl = false,\n  isTailored = false,\n  handlePreviousButtonClick,\n  handleNextButtonClick,\n  t,\n}: {\n  isRtl: boolean;\n  isTailored?: CarouselSinglePropsBase['isTailored'];\n  showAlternateControls?: boolean;\n  count: number;\n  activeIndex: number;\n  handlePreviousButtonClick: () => void;\n  handleNextButtonClick: () => void;\n  t: TFunction<'osc-carousel'>;\n}) => {\n  const leftNav = (\n    <CarouselNavigationButton\n      data-testid=\"previousCarouselImage\"\n      direction={isRtl ? 'right' : 'left'}\n      onClick={handlePreviousButtonClick}\n      isTailored={isTailored}\n    >\n      <span className=\"sr-only\">{t('previousImage')}</span>\n    </CarouselNavigationButton>\n  );\n\n  const rightNav = (\n    <CarouselNavigationButton\n      data-testid=\"nextCarouselImage\"\n      direction={isRtl ? 'left' : 'right'}\n      onClick={handleNextButtonClick}\n      isTailored={isTailored}\n    >\n      <span className=\"sr-only\">{t('nextImage')}</span>\n    </CarouselNavigationButton>\n  );\n\n  const paginationCounter = showAlternateControls ? (\n    <>\n      <p\n        aria-hidden\n        className={cx('@[256px]/carousel:text-base select-none overflow-hidden text-xs', {\n          'bg-[rgb(var(--color-background))] p-2.5 md:p-4 text-xs tracking-wide font-semibold':\n            isTailored,\n          'text-text-inverse': !isTailored,\n        })}\n      >\n        {activeIndex + 1} / {count}\n      </p>\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {t('imageCount', { activeIndex: activeIndex + 1, imageCount: count })}\n      </span>\n    </>\n  ) : (\n    <>\n      <p\n        data-osc-product=\"carousel-label\"\n        aria-hidden\n        className=\"bg-bg-inverse text-text-inverse @[256px]/carousel:text-sm @[448px]/carousel:text-base absolute bottom-0 right-0 flex select-none items-center overflow-hidden px-2 py-1 text-xs opacity-90 rtl:left-0 rtl:right-auto\"\n      >\n        {activeIndex + 1} / {count}\n      </p>\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {t('imageCount', { activeIndex: activeIndex + 1, imageCount: count })}\n      </span>\n    </>\n  );\n\n  return showAlternateControls ? (\n    <div\n      data-testid=\"testAlternateControlClassName\"\n      className={cx('absolute flex', {\n        'bottom-0 right-10 opacity-90 bg-bg-inverse items-center': !isTailored,\n        'bottom-1 right-1 md:bottom-4 md:right-4 gap-0.5 justify-evenly items-stretch': isTailored,\n      })}\n    >\n      {isTailored ? (\n        <>\n          {leftNav}\n          {rightNav}\n          {paginationCounter}\n        </>\n      ) : (\n        <>\n          {leftNav}\n          {paginationCounter}\n          {rightNav}\n        </>\n      )}\n    </div>\n  ) : (\n    <>\n      {paginationCounter}\n      <div className=\"absolute inset-y-1/2 flex w-full items-center justify-between\">\n        {leftNav}\n        {rightNav}\n      </div>\n    </>\n  );\n};\n\n/**\n *\n * A carousel that displays a single image at a time. Includes a built in loading (shimmer) and error handling state\n * @returns JSX.element\n */\nexport const CarouselSingle = ({\n  className,\n  images,\n  startingIndex = 0,\n  onArrowClick,\n  isLoading = false,\n  showAlternateControls,\n  isTailored = false,\n  metrics,\n  ...rest\n}: CarouselSingleProps) => {\n  const { t } = useTranslation('osc-carousel');\n  const { locale = 'en' } = useRouter();\n  const isRtl = isRtlLanguage(locale);\n  const [activeIndex, setActiveIndex] = useState(startingIndex);\n  const [touchStart, setTouchStart] = useState(0);\n  const [touchEnd, setTouchEnd] = useState(0);\n  const ref = useRef<HTMLDivElement | null>(null);\n\n  const count = images?.length ?? 0;\n\n  const rect = useRect({ ref: count > 0 ? ref : { current: null } });\n\n  const width = rect?.width ?? 0;\n  const height = rect?.height ?? 0;\n  const imageTranslateX = `${!isRtl ? '-' : ''}${\n    activeIndex === 0 ? 0 : 100 / (count / activeIndex)\n  }%`;\n\n  const handleNextButtonClick = () => {\n    const newIndex = images && activeIndex === images.length - 1 ? 0 : activeIndex + 1;\n    if (onArrowClick) onArrowClick(newIndex);\n    setActiveIndex(newIndex);\n\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateCarouselSingleMetrics({\n        metrics,\n        images,\n        clickID: ImageClickID.Scroll,\n        itemTitle:\n          images?.[activeIndex]?.captionData?.caption ||\n          images?.[activeIndex]?.alt ||\n          ANALYTICS_NO_VALUE,\n        position: activeIndex + 1, // 1-based index\n      })\n    );\n  };\n  const handlePreviousButtonClick = () => {\n    const newIndex = images && activeIndex === 0 ? images.length - 1 : activeIndex - 1;\n    if (onArrowClick) onArrowClick(newIndex);\n    setActiveIndex(newIndex);\n\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateCarouselSingleMetrics({\n        metrics,\n        images,\n        clickID: ImageClickID.Scroll,\n        itemTitle:\n          images?.[activeIndex]?.captionData?.caption ||\n          images?.[activeIndex]?.alt ||\n          ANALYTICS_NO_VALUE,\n        position: activeIndex + 1, // 1-based index\n      })\n    );\n  };\n\n  const handleTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n    e.stopPropagation();\n    setTouchStart(e.targetTouches[0]?.clientX ?? 0);\n  };\n  const handleTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n    setTouchEnd(e.targetTouches[0]?.clientX ?? 0);\n  };\n  const handleTouchEnd = () => {\n    //swipe sensitivity can be adjusted - travel distance in [number] pixels of user swipe event\n    const SWIPE_SENSITIVITY = 50;\n    //swipe left\n    if (touchStart - touchEnd > SWIPE_SENSITIVITY && touchEnd > 0) handleNextButtonClick();\n    //swipe right\n    if (touchStart - touchEnd < -SWIPE_SENSITIVITY && touchEnd > 0) handlePreviousButtonClick();\n\n    setTouchStart(0);\n    setTouchEnd(0);\n  };\n\n  /** If content of gallery is loading present shimmer state to prevent CLS */\n  if (isLoading)\n    return (\n      <div\n        className={cx(\n          'bg-bg-alt relative aspect-[3/2] w-full animate-pulse overflow-hidden',\n          className\n        )}\n        data-testid=\"singleImageCarouselLoading\"\n        ref={ref}\n        {...rest}\n      />\n    );\n\n  /** No images are available return placeholder with message */\n  if (!images || !count) {\n    return <CarouselNoImage className={className} />;\n  }\n\n  return (\n    <div\n      className={cx('@container/carousel relative aspect-[3/2] w-full overflow-hidden', className)}\n      onTouchEnd={handleTouchEnd}\n      onTouchMove={handleTouchMove}\n      onTouchStart={handleTouchStart}\n      ref={ref}\n      {...rest}\n    >\n      <div\n        className=\"ease-out-quint relative flex select-none overflow-hidden transition duration-500\"\n        data-testid=\"singleImageCarousel\"\n        style={{\n          height,\n          width: `${count * 100}%`,\n          transform: `translate3d(${imageTranslateX}, 0, 0)`,\n        }}\n      >\n        {images?.map((imageProps, index) => (\n          <div\n            className=\"bg-bg-alt relative size-full overflow-hidden\"\n            key={`carousel-image-${imageProps.url}`}\n            style={{ width }}\n            data-testid={`image-carousel-wrap-${index + 1}`}\n          >\n            <CarouselImage\n              isActive={index === activeIndex}\n              {...imageProps}\n              imageProps={{ priority: index === 0 }}\n              metrics={generateCarouselSingleMetrics({\n                metrics,\n                position: index + 1, // 1-based index\n                images,\n                itemTitle: imageProps?.captionData?.caption || ANALYTICS_NO_VALUE,\n                clickID: ImageClickID.Img,\n                imageFunction: ImageFunction.Link,\n              })}\n            />\n            {imageProps.children ? <div>{imageProps.children}</div> : null}\n          </div>\n        ))}\n      </div>\n      {/* Only show carousel controls/count if we have more than 1 image passed in */}\n      {count > 1 ? (\n        <CarouselControls\n          handleNextButtonClick={handleNextButtonClick}\n          handlePreviousButtonClick={handlePreviousButtonClick}\n          count={count}\n          t={t}\n          activeIndex={activeIndex}\n          showAlternateControls={showAlternateControls}\n          isTailored={isTailored}\n          isRtl={isRtl}\n        />\n      ) : null}\n    </div>\n  );\n};\n\nexport default CarouselSingle;\n","export * from './lib/carousel-single';\nexport * from './lib/carousel-no-image';\nexport * from './lib/carousel-image';\nexport * from './lib/utils/carousel-analytics';\nexport * from './lib/types/carousel-analytics';\n","import * as React from 'react';\nimport cx from 'classnames';\nimport Icon from '@dx-ui/osc-icon';\n\nexport type ControlBackProps = {\n  /** used for screen readers and other assistive devices */\n  label: string;\n  /** the size of the control */\n  size?: React.ComponentProps<typeof Icon>['size'];\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * A simple button to be used any time you need an interaction to go back. like for pagination.\n */\nexport const ControlBack = React.forwardRef<HTMLButtonElement, ControlBackProps>(\n  ({ className, disabled, label, size = 'md', ...rest }, forwardedRef) => {\n    return (\n      <button\n        ref={forwardedRef}\n        type=\"button\"\n        className={cx('btn btn-primary-text btn-lg text-current rtl:-scale-x-100', className)}\n        disabled={disabled}\n        {...rest}\n      >\n        <span className=\"sr-only\">{label}</span>\n        <Icon name=\"arrowhead-left\" size={size} />\n      </button>\n    );\n  }\n);\n\nControlBack.displayName = 'ControlBack';\n\nexport default ControlBack;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport Icon from '@dx-ui/osc-icon';\n\nexport type ControlCloseProps = {\n  /** used for screen readers and other assistive devices */\n  label: string;\n  /** the size of the control */\n  size?: React.ComponentProps<typeof Icon>['size'];\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * A simple button to be used any time you need an interaction to close something. like a popup.\n */\nexport const ControlClose = React.forwardRef<HTMLButtonElement, ControlCloseProps>(\n  ({ className, label, disabled, size = 'md', ...rest }, forwardedRef) => (\n    <button\n      ref={forwardedRef}\n      type=\"button\"\n      className={cx('btn btn-primary-text btn-lg', className)}\n      disabled={disabled}\n      {...rest}\n    >\n      <span className=\"sr-only\">{label}</span>\n      <Icon name=\"close\" size={size} />\n    </button>\n  )\n);\n\nControlClose.displayName = 'ControlClose';\n\nexport default ControlClose;\n","import * as React from 'react';\nimport cx from 'classnames';\nimport Icon from '@dx-ui/osc-icon';\n\nexport type ControlNextProps = {\n  /** used for screen readers and other assistive devices */\n  label: string;\n  /** the size of the control */\n  size?: React.ComponentProps<typeof Icon>['size'];\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * A simple button to be used any time you need an interaction to go forward. like for pagination.\n */\nexport const ControlNext = React.forwardRef<HTMLButtonElement, ControlNextProps>(\n  ({ className, disabled, label, size = 'md', ...rest }, forwardedRef) => {\n    return (\n      <button\n        ref={forwardedRef}\n        type=\"button\"\n        className={cx('btn btn-primary-text btn-lg text-current rtl:-scale-x-100', className)}\n        disabled={disabled}\n        {...rest}\n      >\n        <span className=\"sr-only\">{label}</span>\n        <Icon name=\"arrowhead-right\" size={size} />\n      </button>\n    );\n  }\n);\n\nControlNext.displayName = 'ControlNext';\n\nexport default ControlNext;\n","export * from './lib/control-back';\nexport * from './lib/control-close';\nexport * from './lib/control-next';\n","// Note: See old file history at https://gitlab.svc-m.hhc.hilton.com/pac/hiw/dx-hotels-ui/-/blob/17b699b0671894da33c7751415283f954ef01838/src/components/custom-markdown/index.tsx\nimport Markdown from 'markdown-to-jsx';\nimport cx from 'classnames';\nimport merge from 'lodash/merge';\n\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nimport type { MarkdownToJSX } from 'markdown-to-jsx';\nimport { Children, type ReactNode } from 'react';\n\nexport type TagRendererProps = {\n  tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'table' | 'th' | 'td' | 'b' | 'p';\n  children: ReactNode;\n};\n\nconst targetOpensInNewWindow = (href: string) => (href ? href.endsWith('target_blank') : false);\n\nconst TagRenderer = ({ tag: Tag, children, ...props }: TagRendererProps) => (\n  <Tag {...props}>{children}</Tag>\n);\n\nexport type LinkRendererProps = {\n  href: string;\n  children: ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nconst MarkdownLinkRenderer = (props: LinkRendererProps) => {\n  let { href } = props;\n  const { children } = props;\n\n  if (!href) {\n    return null;\n  }\n\n  if (Children.count(props.children) === 0) {\n    return null;\n  }\n\n  if (targetOpensInNewWindow(href)) {\n    href = href.replace('/target_blank', '');\n    return (\n      <a\n        href={href}\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        className={cx('underline', {\n          'text-text-inverse': props.brandComponentTheme === 'dark',\n          'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n            props.brandComponentTheme === 'light',\n          'text-primary hover:text-primary-alt ':\n            props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n        })}\n      >\n        {children}\n      </a>\n    );\n  }\n  if (href.endsWith('_backToTop')) {\n    href = href.replace('_backToTop', '');\n    return (\n      <>\n        <a\n          href={href}\n          className={cx('underline', {\n            'text-text-inverse': props.brandComponentTheme === 'dark',\n            'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n              props.brandComponentTheme === 'light',\n            'text-primary hover:text-primary-alt ':\n              props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n          })}\n        >\n          {children}\n        </a>\n        <div />\n      </>\n    );\n  }\n  if (href.endsWith('Join_US')) {\n    href = href.replace('Join_US', '');\n    return (\n      <a\n        href={href}\n        className={cx('join-us-link underline', {\n          'text-text-inverse': props.brandComponentTheme === 'dark',\n          'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n            props.brandComponentTheme === 'light',\n          'text-primary hover:text-primary-alt ':\n            props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n        })}\n      >\n        {children}\n      </a>\n    );\n  }\n\n  if (href === 'teconsent') {\n    //`trustarc` is for analytics tracking (cookie preferences page) from GDPR countries\n    if (isBrowser && window?.location?.href?.includes('?trustarc')) {\n      return (\n        // eslint-disable-next-line jsx-a11y/anchor-is-valid\n        <a\n          id={href}\n          className={cx('join-us-link underline', {\n            'text-text-inverse': props.brandComponentTheme === 'dark',\n            'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n              props.brandComponentTheme === 'light',\n            'text-primary hover:text-primary-alt ':\n              props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n          })}\n        >\n          {}\n        </a>\n      );\n    }\n    return (\n      // eslint-disable-next-line jsx-a11y/anchor-is-valid\n      <a\n        id={href}\n        className={cx('join-us-link underline', {\n          'text-text-inverse': props.brandComponentTheme === 'dark',\n          'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n            props.brandComponentTheme === 'light',\n          'text-primary hover:text-primary-alt ':\n            props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n        })}\n      >\n        {children}\n      </a>\n    );\n  }\n\n  if (href.startsWith('#') && Array.isArray(children) && children.length === 0) {\n    return <span id={href.replace('#', '')} />;\n  }\n  return (\n    <a\n      href={href}\n      className={cx('join-us-link break-words underline', {\n        'text-text-inverse': props.brandComponentTheme === 'dark',\n        'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n          props.brandComponentTheme === 'light',\n        'text-primary hover:text-primary-alt ':\n          props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n      })}\n    >\n      {children}\n    </a>\n  );\n};\n\nexport type CustomMarkdownProps = {\n  children: string;\n  options?: MarkdownToJSX.Options;\n  isStaticContentPage?: boolean;\n  id?: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\n/**\n * CustomMarkdown renders a markdown string to the DOM using React components.\n * It wraps the NPM package `markdown-to-jsx`, and provides renderers for many common markdown elements with specific styling classes\n */\nexport const CustomMarkdown = ({\n  isStaticContentPage,\n  children,\n  options,\n  id,\n  brandComponentTheme,\n}: CustomMarkdownProps) => {\n  const baseClass = cx('font-headline', {\n    'text-text-inverse': brandComponentTheme === 'dark',\n    'brand-ht:text-text-inverse': brandComponentTheme === 'light',\n  });\n\n  const defaultOptions = {\n    overrides: {\n      a: {\n        component: MarkdownLinkRenderer,\n        props: {\n          brandComponentTheme,\n        },\n      },\n      h1: {\n        component: TagRenderer,\n        props: {\n          tag: 'h1',\n          tabIndex: '-1',\n          className: cx(baseClass, 'heading-2xl lg:heading-4xl focus:ring lg:mb-2'),\n          ...(id ? { id } : {}),\n        },\n      },\n      h2: {\n        component: TagRenderer,\n        props: {\n          tag: 'h2',\n          ...(id ? { id } : {}),\n          className: cx(\n            baseClass,\n            'heading-xl lg:heading-2xl',\n            isStaticContentPage ? 'lg:mb-2' : 'lg:mb-1'\n          ), // segregating styles for static pages in Brand & Brand pages,\n        },\n      },\n      h3: {\n        component: TagRenderer,\n        props: {\n          tag: 'h3',\n          ...(id ? { id } : {}),\n          className: cx(baseClass, 'heading-lg lg:heading-xl lg:mb-1'),\n        },\n      },\n      table: {\n        component: TagRenderer,\n        props: {\n          tag: 'table',\n          className: 'table-auto -ml-2',\n        },\n      },\n      thead: {\n        component: TagRenderer,\n        props: {\n          tag: 'thead',\n          className: 'border border-border-alt sm:overflow-hidden',\n        },\n      },\n      th: {\n        component: TagRenderer,\n        props: {\n          tag: 'th',\n          className: 'bg-border-alt pt-3 pb-3 px-2',\n        },\n      },\n      td: {\n        component: TagRenderer,\n        props: {\n          tag: 'td',\n          className: 'px-2 py-1 h-4',\n        },\n      },\n      b: { component: TagRenderer, props: { tag: 'b' } },\n      p: { component: TagRenderer, props: { tag: 'p' } },\n      ul: {\n        component: TagRenderer,\n        props: {\n          tag: 'ul',\n          className: 'list-disc ps-8 my-4',\n        },\n      },\n      ol: {\n        component: TagRenderer,\n        props: {\n          tag: 'ol',\n          className: 'list-decimal ps-8 my-4',\n        },\n      },\n      li: {\n        component: TagRenderer,\n        props: {\n          tag: 'li',\n          className: 'my-2',\n        },\n      },\n    },\n  };\n\n  const mergedOpts = merge(defaultOptions, options);\n  let markdownArray: string[];\n  let updatedChildren: string;\n\n  //checking if the block of markdown is a table\n  if (children[0] === '|' && children.slice(-1) === '|') {\n    updatedChildren = children;\n  }\n\n  //if the block of markdown is not a table, then making the line breaks of a markdown block as '<div class=\"p-2\"></div>'\n  else {\n    markdownArray = children.split(/\\r\\n|\\n/);\n    updatedChildren = markdownArray\n      .map((markdown, index) => {\n        if (markdown === '') {\n          if (markdownArray[index + 1] === undefined || markdownArray[index + 1] === null)\n            return '';\n          return '<div class=\"p-2\"></div>\\n';\n        }\n        return `${markdown} \\n\\n`;\n      })\n      .join('');\n  }\n\n  return <Markdown options={mergedOpts}>{updatedChildren}</Markdown>;\n};\n","export * from './lib/custom-markdown';\n","import { createContext, useContext } from 'react';\n\ntype CycleContext = {\n  active: number;\n  cycleId: string;\n  total: number;\n  hasSlides: boolean;\n  onPreviousClick: () => void;\n  onNextClick: () => void;\n  setActive: (value: number) => void;\n};\nconst CycleContext = createContext<CycleContext>({} as CycleContext);\n\nexport const useCycle = () => {\n  const context = useContext(CycleContext);\n  if (context === undefined) {\n    throw new Error('useCycle must be used within a Cycle Component parent');\n  }\n  return context;\n};\n\nexport { CycleContext };\nexport default CycleContext;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { CycleContext } from './cycle.context';\n\nexport type CycleProps = {\n  total: number;\n  onChangeIndex?: (newIndex: number, method?: 'previous' | 'next') => void;\n  current?: number;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Adds controls for multiple slide items and `useCycle()` for all logic\n */\nexport const Cycle: React.FC<React.PropsWithChildren<CycleProps>> = ({\n  current = 0,\n  total,\n  children,\n  className,\n  onChangeIndex,\n  id,\n  ...rest\n}) => {\n  const fallbackId = React.useId();\n  const cycleId = id ?? `cycle-${fallbackId}`;\n  const [active, setActive] = React.useState(current);\n  const hasSlides = total > 1;\n  const onPreviousClick = React.useCallback(() => {\n    const index = active - 1 < 0 ? total - 1 : active - 1;\n    setActive(index);\n    onChangeIndex && onChangeIndex(index, 'previous');\n  }, [active, total, onChangeIndex]);\n\n  const onNextClick = React.useCallback(() => {\n    const index = active + 1 >= total ? 0 : active + 1;\n    setActive(index);\n    onChangeIndex && onChangeIndex(index, 'next');\n  }, [setActive, onChangeIndex, active, total]);\n\n  const onSetActive = React.useCallback(\n    (index: number) => {\n      setActive(index);\n      onChangeIndex && onChangeIndex(index);\n    },\n    [setActive, onChangeIndex]\n  );\n\n  return (\n    <CycleContext.Provider\n      value={{\n        active,\n        cycleId,\n        hasSlides,\n        total,\n        onNextClick,\n        onPreviousClick,\n        setActive: onSetActive,\n      }}\n    >\n      <section className={cx('relative w-full overflow-hidden', className)} {...rest}>\n        {children}\n      </section>\n    </CycleContext.Provider>\n  );\n};\n\nexport default Cycle;\n","export * from './lib/cycle';\nexport * from './lib/cycle.context';\n","\"use client\";\n\n// packages/react/dialog/src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n  const {\n    __scopeDialog,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const triggerRef = React.useRef(null);\n  const contentRef = React.useRef(null);\n  const [open = false, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen,\n    onChange: onOpenChange\n  });\n  return /* @__PURE__ */ jsx(\n    DialogProvider,\n    {\n      scope: __scopeDialog,\n      triggerRef,\n      contentRef,\n      contentId: useId(),\n      titleId: useId(),\n      descriptionId: useId(),\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      children\n    }\n  );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...triggerProps } = props;\n    const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.contentId,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar DialogPortal = (props) => {\n  const { __scopeDialog, forceMount, children, container } = props;\n  const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n    return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n  }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar DialogOverlayImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n    return (\n      // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n      // ie. when `Overlay` and `Content` are siblings\n      /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          \"data-state\": getState(context.open),\n          ...overlayProps,\n          ref: forwardedRef,\n          style: { pointerEvents: \"auto\", ...overlayProps.style }\n        }\n      ) })\n    );\n  }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n    React.useEffect(() => {\n      const content = contentRef.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: true,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          event.preventDefault();\n          context.triggerRef.current?.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (isRightClick) event.preventDefault();\n        }),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault()\n        )\n      }\n    );\n  }\n);\nvar DialogContentNonModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const hasInteractedOutsideRef = React.useRef(false);\n    const hasPointerDownOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          props.onCloseAutoFocus?.(event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          props.onInteractOutside?.(event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = context.triggerRef.current?.contains(target);\n          if (targetIsTrigger) event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }\n);\nvar DialogContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    useFocusGuards();\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(\n        FocusScope,\n        {\n          asChild: true,\n          loop: true,\n          trapped: trapFocus,\n          onMountAutoFocus: onOpenAutoFocus,\n          onUnmountAutoFocus: onCloseAutoFocus,\n          children: /* @__PURE__ */ jsx(\n            DismissableLayer,\n            {\n              role: \"dialog\",\n              id: context.contentId,\n              \"aria-describedby\": context.descriptionId,\n              \"aria-labelledby\": context.titleId,\n              \"data-state\": getState(context.open),\n              ...contentProps,\n              ref: composedRefs,\n              onDismiss: () => context.onOpenChange(false)\n            }\n          )\n        }\n      ),\n      /* @__PURE__ */ jsxs(Fragment, { children: [\n        /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n        /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n      ] })\n    ] });\n  }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...titleProps } = props;\n    const context = useDialogContext(TITLE_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n  }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...descriptionProps } = props;\n    const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n  }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...closeProps } = props;\n    const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n  contentName: CONTENT_NAME,\n  titleName: TITLE_NAME,\n  docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n  const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n  const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n  React.useEffect(() => {\n    if (titleId) {\n      const hasTitle = document.getElementById(titleId);\n      if (!hasTitle) console.error(MESSAGE);\n    }\n  }, [MESSAGE, titleId]);\n  return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n  const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n  const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n  React.useEffect(() => {\n    const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n    if (descriptionId && describedById) {\n      const hasDescription = document.getElementById(descriptionId);\n      if (!hasDescription) console.warn(MESSAGE);\n    }\n  }, [MESSAGE, contentRef, descriptionId]);\n  return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n  Close,\n  Content,\n  Description,\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n  Overlay,\n  Portal,\n  Root,\n  Title,\n  Trigger,\n  WarningProvider,\n  createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { useTranslation } from 'next-i18next';\nimport { ControlClose } from '@dx-ui/osc-controls';\nimport cx from 'classnames';\n\nexport type DialogSizes =\n  | 'xs'\n  | 'sm'\n  | 'md'\n  | 'lg'\n  | 'xl'\n  | '2xl'\n  | '3xl'\n  | '4xl'\n  | '5xl'\n  | '6xl'\n  | 'full'\n  | 'container';\n\nexport type DialogBaseProps = {\n  /** The className for the CloseButton to support custom curated sites */\n  closeButtonClassName?: string;\n  /** The className for the dialog tag */\n  dialogClassName?: string;\n  /** The className for the dialog overlay tag */\n  dialogOverlayClassName?: string;\n  /** The className for the dialog title tag */\n  dialogTitleClassName?: string;\n  /** The element that opens the dialog that focus should return to */\n  dialogTrigger?: React.ReactNode;\n  /** The size of the modal. */\n  size?: DialogSizes;\n  /** Allows passing of additional JSX to dialog. */\n  bottomContent?: React.ReactNode;\n  /** Whether the overlay is open by default (controlled). */\n  isOpen?: boolean;\n  /** Handler that is called when the overlay is dismissed. */\n  onDismiss?: () => void;\n  /** Sets whether header should be sticky in overflow scroll situations when a title is passed. Defaults to false */\n  stickyHeader?: boolean;\n  /** Optional data attribute to apply to the outer content wrapper */\n  contentDataAttribute?: string;\n} & React.ComponentProps<'div'>;\n\nexport type DialogOptionalProps =\n  | { ariaLabel?: never; title: string; hasChildrenWithTitle?: never }\n  | { ariaLabel: string; title?: never; hasChildrenWithTitle?: never }\n  | { ariaLabel?: never; title?: never; hasChildrenWithTitle: boolean };\n\nexport const DialogTitle = Dialog.Title;\n\nexport const DialogBase = React.forwardRef<\n  HTMLDivElement,\n  React.PropsWithChildren<DialogBaseProps & DialogOptionalProps>\n>(\n  (\n    {\n      ariaLabel,\n      children,\n      className,\n      closeButtonClassName,\n      dialogClassName,\n      dialogOverlayClassName,\n      dialogTitleClassName,\n      dialogTrigger,\n      isOpen,\n      title,\n      size = 'md',\n      bottomContent,\n      onDismiss,\n      hasChildrenWithTitle,\n      stickyHeader = false,\n      contentDataAttribute,\n    },\n    forwardedRef\n  ) => {\n    const innerRef = React.useRef<React.ElementRef<'div'>>(null);\n    const dialogRef = React.useRef<React.ElementRef<'div'>>(null);\n\n    React.useImperativeHandle(forwardedRef, () => dialogRef.current as HTMLDivElement);\n\n    return (\n      <Dialog.Root open={isOpen}>\n        {dialogTrigger ? <Dialog.Trigger asChild>{dialogTrigger}</Dialog.Trigger> : null}\n        <Dialog.Portal>\n          <Dialog.Overlay className={cx('dialog-overlay sm:py-4 lg:py-12', dialogOverlayClassName)}>\n            <Dialog.Content\n              /* This is disabled on purpose because we don't use radix-ui/dialog description. See https://www.radix-ui.com/primitives/docs/components/dialog#description */\n              aria-describedby={undefined}\n              className={cx(\n                'dialog-content-v2 max-h-full rounded-lg sm:max-h-[95vh] md:max-h-[90vh]',\n                {\n                  'max-w-xs': size === 'xs',\n                  'max-w-sm': size === 'sm',\n                  'max-w-md': size === 'md',\n                  'max-w-lg': size === 'lg',\n                  'max-w-xl': size === 'xl',\n                  'max-w-2xl': size === '2xl',\n                  'max-w-3xl': size === '3xl',\n                  'max-w-4xl': size === '4xl',\n                  'max-w-5xl': size === '5xl',\n                  'max-w-6xl': size === '6xl',\n                  'max-w-full': size === 'full',\n                  'w-full lg:max-w-[min(90%,calc(1440px-5rem))]': size === 'container',\n                  'pt-0': stickyHeader,\n                  'pb-0': bottomContent,\n                },\n                dialogClassName\n              )}\n              onInteractOutside={onDismiss}\n              onEscapeKeyDown={onDismiss}\n              {...(contentDataAttribute ? { [contentDataAttribute]: true } : null)}\n            >\n              <div className=\"h-full\" ref={innerRef}>\n                {hasChildrenWithTitle ? null : title ? (\n                  <div\n                    className={cx('border-border relative mb-2 border-b pb-3.5', {\n                      'sticky top-0 bg-bg z-10 pt-4': stickyHeader,\n                    })}\n                  >\n                    <Dialog.Title\n                      className={cx(\n                        'brand-wa:font-light brand-wa:text-text brand-wa:text-xl brand-wa:md:text-2xl brand-ou:text-primary mx-4 text-center font-bold',\n                        dialogTitleClassName\n                      )}\n                      data-osc-product=\"osc-dialog-title\"\n                    >\n                      {title}\n                    </Dialog.Title>\n                    {onDismiss && (\n                      <CloseButton\n                        className={closeButtonClassName}\n                        onDismiss={onDismiss}\n                        stickyHeader={stickyHeader}\n                      />\n                    )}\n                  </div>\n                ) : (\n                  <Dialog.Title aria-label={ariaLabel} className=\"hidden\" />\n                )}\n                {!title && onDismiss ? (\n                  <div className=\"relative py-1\">\n                    <CloseButton onDismiss={onDismiss} stickyHeader={stickyHeader} />\n                  </div>\n                ) : null}\n                <div className={cx('p-1', className)}>{children}</div>\n                {bottomContent}\n              </div>\n            </Dialog.Content>\n          </Dialog.Overlay>\n        </Dialog.Portal>\n      </Dialog.Root>\n    );\n  }\n);\n\nDialogBase.displayName = 'DialogBase';\n\nfunction CloseButton({\n  onDismiss,\n  stickyHeader,\n  className,\n}: Pick<DialogBaseProps, 'onDismiss' | 'stickyHeader'> & { className?: string }) {\n  const { t } = useTranslation('osc-dialog');\n  return (\n    <Dialog.Close asChild>\n      <ControlClose\n        onClick={onDismiss}\n        className={cx(\n          'absolute -end-2',\n          {\n            '-top-0.5': !stickyHeader,\n            'top-3': stickyHeader,\n          },\n          className\n        )}\n        label={t('close')}\n      />\n    </Dialog.Close>\n  );\n}\n","import * as React from 'react';\nimport type { DialogBaseProps, DialogOptionalProps } from './dialog.base';\nimport { DialogBase } from './dialog.base';\n\n/**\n * A modal is an overlay element which blocks interaction with elements outside it.\n *\n * Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface. Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.\n *\n * [Radix <Dialog /> Primitive](https://www.radix-ui.com/primitives/docs/components/dialog)\n */\nexport const Dialog: React.FC<React.PropsWithChildren<DialogBaseProps & DialogOptionalProps>> = (\n  props\n) => {\n  const dialogRef = React.useRef<React.ElementRef<'div'>>(null);\n  return <DialogBase {...props} ref={dialogRef} />;\n};\n\nexport default Dialog;\n","import * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport * as AlertDialog from '@radix-ui/react-alert-dialog';\nimport type { DialogBaseProps, DialogOptionalProps } from './dialog.base';\n\nexport type DialogAlertProps = Omit<DialogBaseProps, 'onDismiss' | 'onCancel'> & {\n  /**\n   * The text of the cancel button\n   */\n  cancel?: string | null;\n  /**\n   * The text of the confirm button\n   */\n  confirm?: string | null;\n  /** The element that opens the dialog that focus should return to */\n  dialogTrigger?: React.ReactNode;\n  /**\n   * Callback for when the cancel button is clicked.\n   * If this is not provided, the cancel button will not show.\n   */\n  onCancel?: (event: React.SyntheticEvent<HTMLButtonElement>) => void;\n  /**\n   * Callback for when the confirm button is clicked.\n   */\n  onConfirm: (event: React.SyntheticEvent<HTMLButtonElement>) => void;\n  /**\n   * Whether or not to stack the buttons vertically\n   */\n  stackedButtons?: boolean;\n} & DialogOptionalProps;\n\n/**\n * A dialog meant for a user to confirm an action. Escape will not close this dialog.\n */\nconst DialogAlert: React.FC<React.PropsWithChildren<DialogAlertProps>> = ({\n  ariaLabel,\n  children,\n  cancel,\n  confirm,\n  dialogTrigger,\n  isOpen,\n  onCancel,\n  onConfirm,\n  stackedButtons = true,\n  title,\n  ...rest\n}) => {\n  const { t } = useTranslation('osc-dialog');\n  const dialogRef = React.useRef<React.ElementRef<'div'>>(null);\n  const cancelText = cancel ?? t('cancel');\n  const confirmText = confirm ?? t('ok');\n\n  const handleCancel = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n    onCancel?.(event);\n  };\n\n  const handleConfirm = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n    onConfirm(event);\n  };\n\n  return (\n    <AlertDialog.Root open={isOpen}>\n      {dialogTrigger ? <AlertDialog.Trigger asChild>{dialogTrigger}</AlertDialog.Trigger> : null}\n      <AlertDialog.Portal>\n        <AlertDialog.Overlay className=\"dialog-overlay sm:py-4 lg:py-12\">\n          <AlertDialog.Content\n            className={cx('dialog-content-v2 max-w-sm rounded-lg md:max-h-[90vh]', {\n              'flex flex-col': isOpen,\n            })}\n            {...rest}\n            onEscapeKeyDown={(event) => event.preventDefault()}\n            ref={dialogRef}\n          >\n            <div className=\"text-center\">\n              {title ? (\n                <AlertDialog.Title className=\"mb-3 text-xl font-bold leading-tight\">\n                  {title}\n                </AlertDialog.Title>\n              ) : (\n                <AlertDialog.Title aria-label={ariaLabel} className=\"hidden\" />\n              )}\n              <AlertDialog.Description>{children}</AlertDialog.Description>\n            </div>\n            <div\n              className={cx('flex items-center justify-center gap-2 pt-4', {\n                'flex-col': stackedButtons,\n              })}\n            >\n              {!onCancel ? (\n                <AlertDialog.Cancel asChild>\n                  <button\n                    type=\"button\"\n                    className=\"btn btn-primary btn-lg w-full\"\n                    onClick={handleConfirm}\n                  >\n                    {confirmText}\n                  </button>\n                </AlertDialog.Cancel>\n              ) : (\n                <AlertDialog.Action asChild>\n                  <button\n                    type=\"button\"\n                    className=\"btn btn-primary btn-lg w-full\"\n                    onClick={handleConfirm}\n                  >\n                    {confirmText}\n                  </button>\n                </AlertDialog.Action>\n              )}\n              {onCancel ? (\n                <AlertDialog.Cancel asChild>\n                  <button\n                    type=\"button\"\n                    className=\"btn btn-primary-outline btn-lg w-full\"\n                    onClick={handleCancel}\n                  >\n                    {cancelText}\n                  </button>\n                </AlertDialog.Cancel>\n              ) : null}\n            </div>\n          </AlertDialog.Content>\n        </AlertDialog.Overlay>\n      </AlertDialog.Portal>\n    </AlertDialog.Root>\n  );\n};\n\nexport { DialogAlert };\nexport default DialogAlert;\n","import { forwardRef } from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\n\ntype ActionButton = {\n  adaDescription?: string;\n  label?: string;\n} & React.ComponentPropsWithRef<'button'>;\n\ntype ShouldEnableActionButton = ActionButton & { isEnabled?: boolean };\n\nexport type ActionButtonProps = {\n  /** Props passed to each button type. */\n  buttonOptions?: {\n    cancel?: ActionButton;\n    confirm?: ActionButton;\n    reset?: ShouldEnableActionButton;\n  };\n  /** Hander called when cancel button is blurred */\n  onCancel?: (event: React.SyntheticEvent<HTMLButtonElement>) => void;\n  /** Handler called when done button is blurred. */\n  onConfirm?: (event: React.SyntheticEvent<HTMLButtonElement>) => void;\n  /** Handler called when reset is activated */\n  onReset?: () => void;\n  /** stacks action buttons in viewport widths md and up */\n  shouldStackButtons?: boolean;\n};\n\nconst Button = forwardRef<HTMLButtonElement, ActionButton>(\n  ({ label, adaDescription, className, ...rest }, forwardedRef) => {\n    return (\n      <button {...rest} className={cx('btn btn-lg', className)} ref={forwardedRef} type=\"button\">\n        {label}\n        {adaDescription ? <span className=\"sr-only\">{adaDescription}</span> : null}\n      </button>\n    );\n  }\n);\n\nButton.displayName = 'Button';\n\nexport function ActionButtons({\n  buttonOptions = {},\n  onReset,\n  onConfirm,\n  onCancel,\n  shouldStackButtons = false,\n}: ActionButtonProps) {\n  const { t } = useTranslation('osc-dialog');\n  const { cancel, confirm, reset } = buttonOptions;\n  const resetBtnEnabled = reset?.isEnabled && reset?.label;\n\n  const buttons = [\n    {\n      ...confirm,\n      onClick: onConfirm,\n      label: confirm?.label ?? t('done'),\n      className: 'btn-primary',\n      'data-testid': 'shop-modal-done-cta',\n      ref: confirm?.ref,\n    },\n    {\n      ...cancel,\n      onClick: onCancel,\n      label: cancel?.label ?? t('cancel'),\n      className: 'btn-primary-outline',\n      ref: cancel?.ref,\n    },\n  ].map((props) => (\n    <Dialog.Close key={props.label} asChild>\n      <Button {...props} key={props.label} />\n    </Dialog.Close>\n  ));\n\n  return (\n    <div\n      className={cx('bg-bg sticky bottom-0 flex flex-col gap-4 px-1 pb-4 pt-2', {\n        'md:justify-between': resetBtnEnabled,\n        'md:justify-end': !resetBtnEnabled,\n        'md:flex-row': !shouldStackButtons,\n      })}\n    >\n      {resetBtnEnabled ? (\n        <div className=\"md:self-center\">\n          <button\n            className=\"btn-xl btn btn-primary-link w-full rounded-none\"\n            data-testid=\"shop-modal-reset-cta\"\n            onClick={() => onReset?.()}\n            ref={reset?.ref}\n            type=\"button\"\n          >\n            {reset?.label}\n            {reset?.adaDescription ? (\n              <span className=\"sr-only\" aria-live=\"assertive\" role=\"alert\">\n                {reset?.adaDescription}\n              </span>\n            ) : null}\n          </button>\n        </div>\n      ) : null}\n      <div\n        className={cx('flex flex-col gap-3', {\n          'md:flex-row': !shouldStackButtons,\n        })}\n      >\n        {buttons}\n      </div>\n    </div>\n  );\n}\n","import * as React from 'react';\nimport { ActionButtons, type ActionButtonProps } from './dialog-action-buttons';\nimport { DialogBase, type DialogBaseProps, type DialogOptionalProps } from './dialog.base';\n\nexport type ActionDialogProps = React.PropsWithChildren<\n  DialogBaseProps & ActionButtonProps & DialogOptionalProps\n>;\n\n/**\n * A dialog with two buttons for the user to take an action to cancel or accept.\n */\nexport function ActionDialog({\n  buttonOptions,\n  onCancel,\n  onConfirm,\n  onDismiss,\n  onReset,\n  shouldStackButtons,\n  ...dialogProps\n}: ActionDialogProps) {\n  const dialogRef = React.useRef<React.ElementRef<'div'>>(null);\n\n  const handleCancel = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n    onCancel?.(event);\n  };\n\n  const handleConfirm = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n    onConfirm?.(event);\n  };\n\n  const bottomContent = (\n    <ActionButtons\n      buttonOptions={buttonOptions}\n      onReset={onReset}\n      onCancel={handleCancel}\n      onConfirm={handleConfirm}\n      shouldStackButtons={shouldStackButtons}\n    />\n  );\n  return (\n    <DialogBase\n      {...dialogProps}\n      onDismiss={onDismiss}\n      bottomContent={bottomContent}\n      ref={dialogRef}\n    />\n  );\n}\n","export * from './dialog';\nexport * from './dialog-alert';\nexport * from './dialog-action';\nexport * from './dialog-action-buttons';\nexport * from './dialog.base';\n","export * from './lib';\n","import { ResponsiveImage, ResponsivePicture } from '@dx-ui/osc-responsive-image';\nimport type { TResponsiveImage, TResponsivePicture } from '@dx-ui/osc-responsive-image';\n\nexport type DynamicImageProps = Pick<\n  TResponsiveImage,\n  'id' | 'imageUrl' | 'altText' | 'aspectRatio' | 'width' | 'captionData' | 'className'\n> &\n  Pick<\n    TResponsivePicture,\n    'tabletAspectRatio' | 'mobileAspectRatio' | 'tabletImageUrl' | 'mobileImageUrl'\n  >;\n\nexport const DynamicImage: React.FC<DynamicImageProps> = ({\n  id,\n  imageUrl,\n  altText,\n  aspectRatio,\n  tabletAspectRatio,\n  mobileAspectRatio,\n  tabletImageUrl,\n  mobileImageUrl,\n  width,\n  captionData,\n  className,\n}) => {\n  const sharedProps = {\n    id: `dynamic-grid-wom-item-img-${id}`,\n    aspectRatio,\n    imageUrl,\n    altText,\n    width,\n    captionData,\n    className,\n  };\n\n  return tabletImageUrl || mobileImageUrl ? (\n    <ResponsivePicture\n      {...sharedProps}\n      tabletAspectRatio={tabletAspectRatio}\n      mobileAspectRatio={mobileAspectRatio}\n      tabletImageUrl={tabletImageUrl}\n      mobileImageUrl={mobileImageUrl}\n    />\n  ) : (\n    <ResponsiveImage {...sharedProps} />\n  );\n};\n","import {\n  type ImageFunctionType,\n  ANALYTICS_NO_VALUE,\n  type BaseImageMetrics,\n  ImageClickID,\n  ImageFunction,\n  ImageType,\n} from '@dx-ui/config-metrics';\nimport type { DynamicGridMetrics } from '../types/dynamic-grid-analytics';\n\ntype GenerateDynamicGridMetricsParams = {\n  metrics?: Partial<BaseImageMetrics>;\n  position: number;\n  count?: number;\n  itemTitle?: string;\n  headline?: string;\n  imageType?: (typeof ImageType)['Dynamic'];\n  imageFunction?: ImageFunctionType;\n};\n\n/**\n * Utility function to generate dynamic Grid metrics\n */\nexport function generateDynamicGridMetrics({\n  metrics,\n  position,\n  count = 0,\n  itemTitle = ANALYTICS_NO_VALUE,\n  headline = ANALYTICS_NO_VALUE,\n  imageFunction = ImageFunction.Modal, // 'Modal' for Dynamic Grid, 'Link' for Dynamic Grid WOM\n}: GenerateDynamicGridMetricsParams): DynamicGridMetrics {\n  const DynamicGridMetrics = {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      ...metrics?.osc,\n      image: {\n        ...metrics?.osc?.image,\n        count,\n        itemTitle,\n        type: ImageType.Dynamic,\n        headline: metrics?.osc?.image?.headline || headline,\n        position,\n        function: imageFunction,\n      },\n    },\n  };\n\n  return DynamicGridMetrics;\n}\n\n/**\n * Utility function to generate Dynamic Grid metrics\n * The returned object will serve as a partial image metric object to be extended within the Dynamic Grid component\n */\nexport function generatePartialDynamicGridMetrics(\n  headline: string | null | undefined\n): Partial<BaseImageMetrics> {\n  return {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        // All the other DynamicGridMetrics attributes will be set in DynamicGridItem\n        headline: headline || ANALYTICS_NO_VALUE,\n        type: ImageType.Dynamic,\n      },\n    },\n  };\n}\n","import { useRef } from 'react';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { DynamicImage } from './dynamic-grid-image';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport type { Link } from '@dx-ui/osc-link';\nimport type { VariantTypes } from './dynamic-grid';\nimport {\n  trackEvent,\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  type BaseImageMetrics,\n} from '@dx-ui/config-metrics';\nimport { generateDynamicGridMetrics } from './utils/dynamic-grid-analytics';\n\nexport type TDynamicGridItem = {\n  /** Dynamic Grid item id */\n  id: string;\n  /** Image for Dynamic Grid Item */\n  imageUrl: string;\n  tabletImageUrl?: string;\n  mobileImageUrl?: string;\n  /** Alt Text for Dynamic Grid Item Image */\n  imageAltTxt: string;\n  /** Image for Displaying in Modal */\n  modalImageUrl?: string;\n  /** Alt text for Modal Image */\n  modalImageAltText?: string;\n  /** Text overlaid on Dynamic Grid Item */\n  itemTitle?: string;\n  /** Headline for Dynamic Grid Item Modal/dialog */\n  headline?: string;\n  /** Content such as Markdown, or text in Modal/dialog */\n  shortDescription?: JSX.Element | string;\n  /** Link following the item headline & content in Modal/dialog */\n  link?: React.ComponentProps<typeof Link> & {\n    experimentationConfiguration?: CmsExperimentationConfiguration;\n  };\n  /** Callback handler for grid item click event  */\n  onItemClick?: (id: string, el: HTMLButtonElement | null) => void;\n  /** Callback handler for link click event  */\n  onClickLink?: (id?: string) => void;\n  /** Add Tailwind classes to root element */\n  className?: string;\n  /** Caption link and text */\n  captionData?: CaptionProps;\n  /** List of Audience Ids */\n  segmentIds: string[];\n  /** CMS document editor button **/\n  cmsDocumentControl?: React.ReactNode;\n  /* Translation CSS classes to add to each item */\n  cmsTranslationClasses?: string;\n  /* CPM controlled brand color themes */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** New card variant added for Enterprise refresh */\n  variant?: VariantTypes;\n  /** Headline for Dynamic Grid */\n  listHeadline?: string;\n  /** Position of the Dynamic Grid Item */\n  position?: number;\n  /** Number of Dynamic Grid Items */\n  count?: number;\n  /** Metrics object for analytics */\n  metrics?: Partial<BaseImageMetrics>;\n};\n\nexport type TDynamicGridItemAndAspectRatios = TDynamicGridItem & {\n  /** The aspect ratio for the grid item images */\n  imageAspectRatio: AspectRatio;\n  tabletImageAspectRatio?: AspectRatio;\n  mobileImageAspectRatio?: AspectRatio;\n};\n\nexport const DocsTDynamicGridItem: React.FC<\n  React.PropsWithChildren<TDynamicGridItemAndAspectRatios>\n> = () => null;\n\nconst DynamicGridItem: React.FC<TDynamicGridItemAndAspectRatios> = (item) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const rect = useRect({ ref });\n  const [t] = useTranslation('osc-dynamic-grids');\n\n  const {\n    id,\n    captionData,\n    itemTitle,\n    imageUrl,\n    tabletImageUrl,\n    mobileImageUrl,\n    onItemClick,\n    className,\n    variant,\n    brandComponentTheme,\n    position,\n    count,\n    listHeadline,\n    headline,\n    metrics,\n  } = item;\n  const aspectRatio = item?.imageAspectRatio;\n  const tabletAspectRatio = item?.tabletImageAspectRatio;\n  const mobileAspectRatio = item?.mobileImageAspectRatio;\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const isCardLayout = variant === 'card';\n\n  const onClickGridItem = () => {\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateDynamicGridMetrics({\n        metrics,\n        position: position || 0,\n        count,\n        itemTitle,\n        headline: listHeadline || headline,\n      })\n    );\n    onItemClick?.(id, buttonRef.current);\n  };\n  // TODO: NHCBP-3494 - Tailwind utitilies for grid-* classes (see grid.css)\n  // TODO: NHCBP-3494 - Tailwind focus:ring utility not working - classNames on \"button\":\n  // focus:ring-2 focus:ring-primary focus:ring-opacity-50\n\n  const handleOnFocus = () => {\n    // Scroll to the element when focused\n    // The setTimeout is needed for this to work in Safari browser\n    setTimeout(() => {\n      buttonRef.current?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n    }, 10);\n  };\n\n  if (item) {\n    return (\n      <button\n        ref={buttonRef}\n        type=\"button\"\n        data-testid={`dynamicgrid-item-${id}`}\n        id={id}\n        onClick={onClickGridItem}\n        className={cx(\n          'group overflow-y-hidden sm:w-auto',\n          'focus:ring-primary/50 focus:ring-2',\n          'snap snap-start',\n          'relative',\n          item.cmsTranslationClasses,\n          className\n        )}\n        onFocus={handleOnFocus}\n      >\n        <div\n          className=\"bg-bg-alt brand-hi-refresh:rounded-lg relative overflow-hidden\"\n          data-testid={`layout-${isCardLayout ? 'card' : 'default'}`}\n        >\n          {isCardLayout ? (\n            <div className=\"bg-bg-inverse absolute inset-0 z-10 opacity-0 transition-opacity duration-300 group-hover:opacity-15 group-focus:opacity-15\" />\n          ) : null}\n          <div className={cx('absolute z-10 flex size-full items-end')}>\n            <div\n              className={cx('from-bg-inverse size-full to-transparent', {\n                'bg-gradient-to-t': !isCardLayout,\n              })}\n            >\n              <div\n                className={cx('flex size-full items-end duration-200 ease-in-out', {\n                  'group-hover:-translate-y-1/3': !isCardLayout,\n                })}\n              >\n                {!isCardLayout && (\n                  <div\n                    className={cx(\n                      'dynamic-grid-item-header mx-auto w-full px-3 leading-tight sm:py-4 lg:py-6 xl:text-3xl'\n                    )}\n                    data-testid=\"dynamicgrid-item-btnText\"\n                  >\n                    {itemTitle}\n                  </div>\n                )}\n                <span className=\"sr-only\">{t('openModal')}</span>\n              </div>\n            </div>\n          </div>\n          <div ref={ref} className=\"relative\">\n            <DynamicImage\n              id={id}\n              imageUrl={imageUrl}\n              altText=\"\"\n              aspectRatio={aspectRatio}\n              tabletAspectRatio={tabletAspectRatio}\n              mobileAspectRatio={mobileAspectRatio}\n              tabletImageUrl={tabletImageUrl}\n              mobileImageUrl={mobileImageUrl}\n              width={rect?.width ?? 0}\n              captionData={captionData}\n              className=\"brand-gu:group-hover:scale-110 brand-gu:group-hover:opacity-80 duration-300 ease-in-out\"\n            />\n            {isCardLayout && aspectRatio === '3:4' ? (\n              <DynamicGridCardHeader\n                ar={aspectRatio}\n                isDark={isDark}\n                isLight={isLight}\n                itemTitle={itemTitle}\n              />\n            ) : null}\n          </div>\n          {isCardLayout && aspectRatio !== '3:4' ? (\n            <DynamicGridCardHeader\n              ar={aspectRatio}\n              isDark={isDark}\n              isLight={isLight}\n              itemTitle={itemTitle}\n            />\n          ) : null}\n        </div>\n        {item.cmsDocumentControl}\n      </button>\n    );\n  }\n\n  return null;\n};\n\ntype DynamicGridCardHeaderProps = {\n  ar: AspectRatio;\n  isDark: boolean;\n  isLight: boolean;\n  itemTitle: string | undefined;\n};\n\nconst DynamicGridCardHeader = ({ ar, isDark, isLight, itemTitle }: DynamicGridCardHeaderProps) => {\n  const baseClasses =\n    'mx-auto w-full px-3 py-0 min-h-20 flex items-center justify-center xl:text-xl leading-tight dynamic-grid-item-header';\n  const positionClasses = ar === '3:4' ? 'absolute inset-x-0 bottom-0' : '';\n\n  return (\n    <div\n      className={cx(baseClasses, positionClasses, {\n        'dynamic-grid-item-header-light': isLight,\n        'dynamic-grid-item-header-dark': isDark,\n        'bg-primary': !isDark && !isLight,\n      })}\n      data-testid=\"dynamicgrid-item-btnText\"\n    >\n      <span className=\"relative z-10\">{itemTitle}</span>\n    </div>\n  );\n};\n\nexport { DynamicGridItem };\nexport default DynamicGridItem;\n","export const getDynamicGridColumnCount = (columnCount: string | number, count: number) => {\n  let is369 = false,\n    is4x = false,\n    is2x = false,\n    isOther = false;\n\n  if (columnCount === 'auto') {\n    is369 = count % 3 === 0 || count === 5;\n    is4x = !is369 && count > 2 && (count % 2 === 0 || count === 7);\n    is2x = !is369 && (is4x || count % 2 === 0);\n    isOther = !is369 && !is4x && !is2x;\n  } else {\n    is369 = columnCount === '3';\n    is4x = columnCount === '4';\n    is2x = columnCount === '2';\n  }\n\n  return { is369, is4x, is2x, isOther };\n};\n","import { useState } from 'react';\nimport cx from 'classnames';\nimport { DialogWithContent } from '@dx-ui/osc-marketing';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { AnimateRevealItem } from '@dx-ui/osc-animate-reveal-item';\nimport DynamicGridItem, { type TDynamicGridItem } from './dynamic-grid-item';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport { mapTextAlignToClassname } from '@dx-ui/osc-textual-block';\nimport { type BaseImageMetrics } from '@dx-ui/config-metrics';\nimport { getDynamicGridColumnCount } from './utils/dynamic-grid-column-count';\n\ntype ListItemButtonElement = HTMLButtonElement | null;\nexport type VariantTypes = 'card';\n\nexport type TDynamicGrid = {\n  id: string;\n  /** An array of TDynamicGridItem objects */\n  items: TDynamicGridItem[];\n  /** The aspect ratio for the grid item images */\n  imageAspectRatio: AspectRatio;\n  tabletImageAspectRatio?: AspectRatio;\n  mobileImageAspectRatio?: AspectRatio;\n  /** The aspect ratio for the modal item image */\n  modalImageAspectRatio?: AspectRatio;\n  /** If true then vertically stack items for mobile, instead of horitzontally scrolling */\n  isMobileVerticalStack?: boolean;\n  /** Headline for Dynamic Grid */\n  listHeadline?: string;\n  /** Content as a component, such as Markdown, or text */\n  listDescription?: JSX.Element | string;\n  /** Text alignment for CMS controls */\n  textAlign?: 'left' | 'right' | 'center';\n  /** Add Tailwind classes to root element */\n  className?: string;\n  /** Dialog component requires ariaLabel */\n  ariaLabel?: string;\n  /** Callback handler for Read Message event  */\n  onViewItem?: (id: string) => void;\n  /** Callback for modal state opening or closing */\n  onToggleModal?: (isOpen: boolean) => void;\n  /** Theme variable for dark/light theming */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** Enables reveal animations */\n  isAnimated?: boolean;\n  /** New card variant added for Enterprise refresh */\n  variant?: VariantTypes;\n  metrics?: Partial<BaseImageMetrics>;\n  /** Choose the number of grid columns */\n  columnCount?: 'auto' | '2' | '3' | '4';\n};\n\nexport const gridWrapperClass =\n  'snap snap-x snap-px-4 snap-mandatory grid-wrapper grid gap-4 py-2 auto-cols-[85%] sm:w-full sm:grid-flow-row max-sm:overflow-x-visible max-sm:overflow-y-auto';\n\n/**\n * DynamicGrid creates a grid of items with an image and title that opens a modal when clicked. Grids with either be a 3x grid (item counts of 3, 5, 6, or 9) or a 4x grid (item counts of 4, 7, or 8).\n * Recommended grid item counts of 3 to 9.\n */\nexport const DynamicGrid: React.FC<TDynamicGrid> = ({\n  imageAspectRatio,\n  tabletImageAspectRatio,\n  mobileImageAspectRatio,\n  modalImageAspectRatio = '16:9',\n  items: baseItems = [],\n  isMobileVerticalStack = false,\n  className = '',\n  listHeadline,\n  listDescription,\n  textAlign = 'left',\n  onViewItem,\n  onToggleModal,\n  isAnimated = false,\n  id: dynamicGridId,\n  brandComponentTheme,\n  variant,\n  metrics,\n  columnCount = 'auto',\n  ...props\n}) => {\n  const [activeId, updateActiveId] = useState('');\n  const [isModalOpen, updateModalOpen] = useState(false);\n  const [activeListItem, setActiveListItem] = useState<ListItemButtonElement>();\n  const items = baseItems?.filter((item) => Boolean(item));\n  const count = items.length;\n\n  if (!count) {\n    return null;\n  }\n\n  const openModal = (id: string, el: ListItemButtonElement) => {\n    updateActiveId(id);\n    el && setActiveListItem(el);\n    onToggleModal && onToggleModal(true);\n    onViewItem && onViewItem(id);\n    updateModalOpen(true);\n  };\n  const closeModal = () => {\n    onToggleModal && onToggleModal(false);\n    updateModalOpen(false);\n    activeListItem && setTimeout(() => activeListItem.focus());\n  };\n  const activeItem: TDynamicGridItem | undefined =\n    items?.find((i) => i.id === activeId) || items?.[0];\n\n  const { is369, is4x, is2x, isOther } = getDynamicGridColumnCount(columnCount, count);\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <section>\n      <div\n        className={cx('container overflow-hidden py-8 max-sm:pe-0 xl:py-12', {\n          [className]: !!className,\n        })}\n        data-testid=\"dynamicGridWrap\"\n        id={dynamicGridId}\n      >\n        <div className=\"max-sm:pe-4\">\n          {listHeadline && (\n            <BrandTextHeader\n              className={cx('dynamic-grid-header', mapTextAlignToClassname(textAlign), {\n                '!text-text-inverse': isDark,\n                '!dynamic-grid-header-light': isLight,\n              })}\n            >\n              {listHeadline}\n            </BrandTextHeader>\n          )}\n          {listDescription && (\n            <BrandTextBody\n              className={cx('dynamic-grid-description', mapTextAlignToClassname(textAlign), {\n                'text-text-inverse': isDark,\n                '!dynamic-grid-descrption-light': isLight,\n              })}\n              brandComponentTheme={brandComponentTheme}\n              {...props}\n            >\n              {listDescription}\n            </BrandTextBody>\n          )}\n        </div>\n        <div className=\"size-full\">\n          <div\n            data-testid=\"dynamicGridItemsWrap\"\n            className={cx(\n              gridWrapperClass,\n              isMobileVerticalStack ? 'grid-flow-row grid-cols-1' : 'grid-flow-col',\n              is369 ? 'sm:grid-cols-3' : null,\n              is2x ? 'sm:grid-cols-2' : null,\n              is4x ? 'sm:grid-cols-2 lg:grid-cols-4' : null,\n              isOther ? 'sm:grid-cols-2 lg:grid-cols-4' : null\n            )}\n            tabIndex={-1}\n          >\n            {items.map((item: TDynamicGridItem, index) => (\n              <AnimateRevealItem\n                key={`dynamic-grid-item${item.id}`}\n                delay={is369 ? 100 + (index % 3) * 100 : 100 + (index % 4) * 100}\n                isAnimated={isAnimated}\n                className={cx({\n                  'max-sm:translate-y-0 max-sm:opacity-100': !isMobileVerticalStack,\n                })}\n              >\n                <DynamicGridItem\n                  imageAspectRatio={imageAspectRatio}\n                  tabletImageAspectRatio={tabletImageAspectRatio}\n                  mobileImageAspectRatio={mobileImageAspectRatio}\n                  className=\"w-full sm:w-full\"\n                  onItemClick={openModal}\n                  variant={variant}\n                  brandComponentTheme={brandComponentTheme}\n                  listHeadline={listHeadline}\n                  position={index + 1}\n                  count={count}\n                  metrics={metrics}\n                  {...item}\n                />\n              </AnimateRevealItem>\n            ))}\n            {/* This div acts as a spacer on mobile which allows the final grid item to snap all the way to the beginning edge of the screen */}\n            <div className=\"w-4 sm:hidden md:ms-6\" />\n          </div>\n        </div>\n\n        <DialogWithContent\n          id=\"dynamicGridModalOverlay\"\n          ariaLabel={activeItem?.itemTitle ?? ''}\n          containerAspectRatio={modalImageAspectRatio}\n          imageAspectRatio={modalImageAspectRatio}\n          imageUrl={activeItem?.modalImageUrl}\n          imageAltText={activeItem?.imageAltTxt}\n          title={activeItem?.itemTitle}\n          headline={activeItem?.headline}\n          content={activeItem?.shortDescription}\n          link={activeItem?.link}\n          isOpen={isModalOpen}\n          onClose={closeModal}\n          cmsTranslationClasses={activeItem?.cmsTranslationClasses}\n          {...props}\n        />\n      </div>\n    </section>\n  );\n};\n\nexport default DynamicGrid;\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { useRef } from 'react';\nimport cx from 'classnames';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { DynamicImage } from './dynamic-grid-image';\nimport { Link } from '@dx-ui/osc-link';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport type { TDynamicGridItem } from './dynamic-grid-item';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport {\n  type BaseImageMetrics,\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ImageFunction,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateDynamicGridMetrics } from './utils/dynamic-grid-analytics';\n\ntype TDynamicGridItemWithoutListeners = Omit<TDynamicGridItem, 'onItemClick' | 'onClickLink'>;\n\nexport type TDynamicGridItemWOM = TDynamicGridItemWithoutListeners & {\n  /** fade-in text animations */\n  isAnimated?: boolean;\n  /** theme for the component `dark` or `light` */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  metrics?: Partial<BaseImageMetrics>;\n};\n\nexport type TDynamicGridItemAndAspectRatiosWOM = TDynamicGridItemWOM & {\n  /** The aspect ratio for the grid item images */\n  imageAspectRatio: AspectRatio;\n  tabletImageAspectRatio?: AspectRatio;\n  mobileImageAspectRatio?: AspectRatio;\n};\n\nexport const DocsTDynamicGridItemWOM: React.FC<\n  React.PropsWithChildren<TDynamicGridItemAndAspectRatiosWOM>\n> = () => null;\n\nconst DynamicGridItemWOM: React.FC<TDynamicGridItemAndAspectRatiosWOM> = (item) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const gridItemRef = useRef<React.ElementRef<'div'>>(null);\n\n  const {\n    id,\n    imageUrl,\n    tabletImageUrl,\n    mobileImageUrl,\n    imageAltTxt,\n    headline,\n    link,\n    captionData,\n    brandComponentTheme,\n    shortDescription,\n    isAnimated,\n    count,\n    listHeadline,\n    position,\n    metrics,\n  } = item;\n\n  const aspectRatio = item?.imageAspectRatio;\n  const tabletAspectRatio = item?.tabletImageAspectRatio;\n  const mobileAspectRatio = item?.mobileImageAspectRatio;\n  const { ref: intersectionRef } = useIntersectionObserver({\n    threshold: [1],\n    freezeOnceVisible: true,\n  });\n  const observedWrapper = !getIsReducedMotion() && isAnimated ? intersectionRef : null;\n  const headlineId = `headline${id}`;\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const onClick = () => {\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateDynamicGridMetrics({\n        position: position || 0,\n        count,\n        itemTitle: headline,\n        headline: listHeadline,\n        imageFunction: ImageFunction.Link,\n        metrics,\n      })\n    );\n  };\n\n  const handleLinkFocus = () => {\n    // Scroll to the element when focused\n    // The setTimeout is needed for this to work in Safari browser\n    setTimeout(() => {\n      gridItemRef.current?.scrollIntoView({\n        behavior: 'smooth',\n        block: 'nearest',\n        inline: 'center',\n      });\n    }, 10);\n  };\n\n  return (\n    <>\n      {item ? (\n        <div\n          className={cx(\n            'snap group relative flex h-full snap-start flex-col justify-between pb-5',\n            item.cmsTranslationClasses\n          )}\n          data-testid={`dynamicgrid-wom-item-${id}`}\n          key={id}\n          ref={gridItemRef}\n        >\n          <div className=\"flex flex-col\">\n            {headline && (\n              <HeadingLevel\n                headingLevelFallback={3}\n                id={headlineId}\n                data-testid={`dynamicgrid-wom-item-head-${id}`}\n                data-osc-product=\"dynamic-grid-wom-item-headline\"\n                className={cx('dynamic-grid-item-wom-header my-2', {\n                  '!text-text-inverse': isDark,\n                  'dynamic-grid-item-wom-header-light': isLight,\n                  'dynamic-grid-item-wom-header-no-desc': !shortDescription,\n                })}\n              >\n                {headline}\n              </HeadingLevel>\n            )}\n\n            <div ref={ref} className=\"order-first\">\n              {imageUrl && (\n                <DynamicImage\n                  id={id}\n                  imageUrl={imageUrl}\n                  altText={imageAltTxt}\n                  aspectRatio={aspectRatio}\n                  tabletAspectRatio={tabletAspectRatio}\n                  mobileAspectRatio={mobileAspectRatio}\n                  tabletImageUrl={tabletImageUrl}\n                  mobileImageUrl={mobileImageUrl}\n                  width={rect?.width ?? 0}\n                  captionData={captionData}\n                  className=\"brand-gu:group-hover:scale-110 brand-gu:group-hover:opacity-80 image-corner-radius duration-300 ease-in-out\"\n                />\n              )}\n            </div>\n            <div className=\"mb-2\" ref={observedWrapper}>\n              <div className=\"relative z-10 pb-4\">\n                <BrandTextBody\n                  brandComponentTheme={brandComponentTheme}\n                  className=\"!py-0 sm:!text-base lg:!text-lg\"\n                >\n                  {shortDescription || ''}\n                </BrandTextBody>\n              </div>\n            </div>\n          </div>\n\n          {link?.label && link?.url ? (\n            <Link\n              className=\"dynamic-grid-item-wom-link-text\"\n              anchorClassName={cx(\n                \"inline-block decoration-2 after:absolute after:inset-0 after:z-0 after:content-[''] hover:decoration-4 focus:decoration-4\",\n                'dynamic-grid-item-wom-link-anchor',\n                link.anchorClassName,\n                {\n                  '!text-text-inverse hover:!text-text-inverse': isDark,\n                  'dynamic-grid-item-wom-link-anchor-light': isLight,\n                  'dynamic-grid-item-wom-link-anchor-default': !isLight && !isDark,\n                }\n              )}\n              isNewWindow={link?.isNewWindow || false}\n              url={link?.url}\n              showNewWindowIcon={link?.isNewWindow || false}\n              underline={false}\n              data-testid={`dynamicgrid-wom-item-link-${id}`}\n              cidParams={link?.cidParams}\n              data-conductrics-goal={link.experimentationConfiguration?.goal}\n              data-conductrics-value={link.experimentationConfiguration?.value}\n              onFocus={handleLinkFocus}\n              onClick={(e) => {\n                if (link?.onClick) {\n                  link.onClick?.(e);\n                }\n                onClick();\n              }}\n            >\n              <div className=\"relative inline\">\n                {link.label}\n                <div\n                  className={cx(\n                    'absolute h-px w-full origin-bottom-left scale-x-100 duration-[250ms] ease-out group-hover:scale-x-0 group-hover:ease-out',\n                    'dynamic-grid-item-wom-link-label',\n                    {\n                      'dynamic-grid-item-wom-link-label-dark': isDark,\n                    }\n                  )}\n                />\n              </div>\n            </Link>\n          ) : null}\n          {item.cmsDocumentControl}\n        </div>\n      ) : null}\n    </>\n  );\n};\n\nexport { DynamicGridItemWOM };\nexport default DynamicGridItemWOM;\n","/**\n * Shamelessly copied from https://www.robinwieruch.de/react-custom-hook-check-if-overflow/\n * with slight modifications.\n */\n\nimport { useLayoutEffect, useState } from 'react';\n\nexport const useHasOverflow = <T extends HTMLElement>(\n  ref: React.RefObject<T>,\n  onlyHorizontal = false,\n  onlyVertical = false\n) => {\n  const [isOverflow, setIsOverflow] = useState<boolean | undefined>(undefined);\n\n  useLayoutEffect(() => {\n    const { current } = ref;\n\n    if (!current) return;\n\n    const trigger = () => {\n      const hasOverflowHorizontal =\n        current?.scrollWidth && current?.clientWidth\n          ? current.scrollWidth > current.clientWidth\n          : false;\n\n      const hasOverflowVertical =\n        current?.scrollHeight && current?.clientHeight\n          ? current.scrollHeight > current.clientHeight\n          : false;\n\n      if (onlyHorizontal) {\n        setIsOverflow(hasOverflowHorizontal);\n        return;\n      }\n\n      if (onlyVertical) {\n        setIsOverflow(hasOverflowVertical);\n        return;\n      }\n\n      setIsOverflow(hasOverflowHorizontal || hasOverflowVertical);\n    };\n\n    if ('ResizeObserver' in window) {\n      new ResizeObserver(trigger).observe(current);\n    }\n\n    trigger();\n  }, [onlyHorizontal, onlyVertical, ref]);\n\n  return isOverflow;\n};\n","export * from './use-has-overflow';\n","export * from './lib';\n","import { useId, useRef } from 'react';\nimport type * as React from 'react';\nimport cx from 'classnames';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { TDynamicGrid } from './dynamic-grid';\nimport type { Link } from '@dx-ui/osc-link';\nimport DynamicGridItemWOM, { type TDynamicGridItemWOM } from './dynamic-grid-item-wom';\nimport { mapTextAlignToClassname } from '@dx-ui/osc-textual-block';\nimport { HeadingLevelProvider } from '@dx-ui/osc-heading-level';\nimport { useHasOverflow } from '@dx-ui/utilities-use-has-overflow';\nimport type { BaseImageMetrics } from '@dx-ui/config-metrics';\nimport { getDynamicGridColumnCount } from './utils/dynamic-grid-column-count';\nimport { gridWrapperClass } from './dynamic-grid';\n\ntype TDynamicGridWithoutListeners = Omit<TDynamicGrid, 'onViewItem' | 'onToggleModal'>;\n\nexport type TDynamicGridWOM = TDynamicGridWithoutListeners & {\n  /** An array of TDynamicGridItem objects */\n  items: TDynamicGridItemWOM[];\n  /** */\n  listSubheading?: string;\n  /** Link CTA appears below component */\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  /** */\n  wrapperClassName?: string;\n  /** When passed, appends metrics object to generateDynamicGrids in dynamic-grids-item-wom */\n  metrics?: Partial<BaseImageMetrics>;\n  /** Choose the number of grid columns */\n  columnCount?: 'auto' | '2' | '3' | '4';\n};\n\nexport const DocsTDynamicGridWOM: React.FC<React.PropsWithChildren<TDynamicGridWOM>> = () => null;\n\n/**\n * Dynamic Grid With-Out-Modal (WOM) creates a grid of images with content underneath in either a 3x grid (item counts of 3, 5, 6, or 9) or a 4x grid (item counts of 4, 7, or 8).\n * Recommended grid item counts of 3 to 9.\n */\nexport const DynamicGridWOM: React.FC<TDynamicGridWOM & { brandCode?: string }> = ({\n  imageAspectRatio,\n  tabletImageAspectRatio,\n  mobileImageAspectRatio,\n  items: baseItems = [],\n  isMobileVerticalStack = false,\n  className = '',\n  listHeadline,\n  listSubheading,\n  listDescription,\n  textAlign = 'left',\n  link,\n  id,\n  isAnimated = false,\n  wrapperClassName,\n  brandComponentTheme,\n  metrics,\n  columnCount = 'auto',\n  ...props\n}) => {\n  const { ref, isIntersecting: inView } = useIntersectionObserver({\n    threshold: [0.15],\n    freezeOnceVisible: true,\n  });\n  const observedWrapper = !getIsReducedMotion() && isAnimated ? ref : null;\n  const items = baseItems?.filter((item) => Boolean(item));\n  const hasLinks = items.some((item) => item.link);\n  const count = items.length;\n  const headerId = useId();\n\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const hasOverflow = useHasOverflow(scrollRef);\n  const scrollSectionIsFocusable = hasOverflow && !hasLinks;\n\n  if (!count) {\n    return null;\n  }\n\n  const { is369, is4x, is2x, isOther } = getDynamicGridColumnCount(columnCount, count);\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <section ref={observedWrapper}>\n      <div\n        className={\n          wrapperClassName ||\n          cx(\n            'brand-wa:py-16 brand-wa:xl:py-20 container overflow-hidden py-8 max-sm:pe-0 xl:py-12',\n            {\n              [className]: !!className,\n            }\n          )\n        }\n        data-testid=\"dynamicGridWOM\"\n        id={id}\n      >\n        <div className=\"dynamic-grid-wom-headline-wrapper max-sm:pe-4\">\n          <div className=\"dynamic-grid-wom-headline\">\n            {listHeadline ? (\n              <BrandTextHeader\n                className={cx(mapTextAlignToClassname(textAlign), 'dynamic-grid-wom-header', {\n                  'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                    isAnimated,\n                  'translate-y-4': !inView && isAnimated,\n                  'opacity-100 translate-y-0': inView && isAnimated,\n                  '!text-text-inverse': isDark,\n                  '!dynamic-grid-wom-header-light': isLight,\n                })}\n                id={`dynamic-grid-heading-${headerId}`}\n              >\n                {listHeadline}\n              </BrandTextHeader>\n            ) : null}\n\n            {listSubheading ? (\n              <span\n                className={cx(mapTextAlignToClassname(textAlign), 'dynamic-grid-wom-subheader', {\n                  'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                    isAnimated,\n                  'translate-y-4': !inView && isAnimated,\n                  'delay-150 opacity-100 translate-y-0': inView && isAnimated,\n                  'text-text-inverse': isDark,\n                  'dynamic-grid-wom-header-light': isLight,\n                })}\n              >\n                {listSubheading}\n              </span>\n            ) : null}\n          </div>\n\n          {listDescription ? (\n            <BrandTextBody\n              className={cx(`dynamic-grid-wom-description`, mapTextAlignToClassname(textAlign), {\n                'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                  isAnimated,\n                'translate-y-4': !inView && isAnimated,\n                'delay-300 opacity-100 translate-y-0': inView && isAnimated,\n                'text-text-inverse': isDark,\n              })}\n              {...props}\n              brandComponentTheme={brandComponentTheme}\n            >\n              {listDescription}\n            </BrandTextBody>\n          ) : null}\n        </div>\n\n        <div className=\"dynamic-grid-wom-grid-wrapper\">\n          <div\n            data-testid=\"dynamicGridItemsWrap\"\n            className={cx(gridWrapperClass, {\n              'grid-flow-row grid-cols-1': isMobileVerticalStack,\n              'grid-flow-col': !isMobileVerticalStack,\n              'sm:grid-cols-3': is369,\n              'sm:grid-cols-2': is2x,\n              'sm:grid-cols-2 lg:grid-cols-4': is4x || isOther,\n              'text-text-inverse': isDark,\n              'dynamic-grid-wom-grid-wrap-light': isLight,\n            })}\n            tabIndex={scrollSectionIsFocusable ? 0 : -1}\n            aria-labelledby={`dynamic-grid-heading-${headerId}`}\n            ref={scrollRef}\n          >\n            <HeadingLevelProvider shouldIncreaseLevel={!!listHeadline}>\n              {items.map((item, itemIndex) => (\n                <DynamicGridItemWOM\n                  key={`dynamic-grid-item-wom${item.id}`}\n                  isAnimated={isAnimated}\n                  brandComponentTheme={brandComponentTheme}\n                  imageAspectRatio={imageAspectRatio}\n                  tabletImageAspectRatio={tabletImageAspectRatio}\n                  mobileImageAspectRatio={mobileImageAspectRatio}\n                  position={itemIndex + 1}\n                  listHeadline={listHeadline}\n                  count={count}\n                  metrics={metrics}\n                  {...item}\n                />\n              ))}\n            </HeadingLevelProvider>\n            {/* This div acts as a spacer on mobile which allows the final grid item to snap all the way to the beginning edge of the screen */}\n            <div className=\"w-4 sm:hidden md:ms-6\" />\n          </div>\n        </div>\n        {link?.adaDescription && link?.url && link?.label ? (\n          <div className=\"relative flex w-full justify-center\">\n            <BrandLink\n              label={link.label}\n              isNewWindow={link.isNewWindow}\n              showNewWindowIcon={link.isNewWindow}\n              url={link.url}\n              brandComponentTheme={brandComponentTheme}\n              data-conductrics-goal={link.experimentationConfiguration?.goal}\n              data-conductrics-value={link.experimentationConfiguration?.value}\n            />\n          </div>\n        ) : null}\n      </div>\n    </section>\n  );\n};\n\nexport default DynamicGridWOM;\n","export * from './dynamic-grid';\nexport * from './dynamic-grid-wom';\nexport * from './dynamic-grid-item';\nexport * from './dynamic-grid-image';\nexport * from './dynamic-grid-item-wom';\nexport * from './utils/dynamic-grid-analytics';\nexport * from './utils/dynamic-grid-column-count';\nexport * from './types/dynamic-grid-analytics';\n","export * from './lib';\n","'use client';\nimport { createContext, Component, createElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n  didCatch: false,\n  error: null\n};\nclass ErrorBoundary extends Component {\n  constructor(props) {\n    super(props);\n    this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n    this.state = initialState;\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      didCatch: true,\n      error\n    };\n  }\n  resetErrorBoundary() {\n    const {\n      error\n    } = this.state;\n    if (error !== null) {\n      var _this$props$onReset, _this$props;\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n        args,\n        reason: \"imperative-api\"\n      });\n      this.setState(initialState);\n    }\n  }\n  componentDidCatch(error, info) {\n    var _this$props$onError, _this$props2;\n    (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    const {\n      didCatch\n    } = this.state;\n    const {\n      resetKeys\n    } = this.props;\n\n    // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n    // we'd end up resetting the error boundary immediately.\n    // This would likely trigger a second error to be thrown.\n    // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n    if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n      var _this$props$onReset2, _this$props3;\n      (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n        next: resetKeys,\n        prev: prevProps.resetKeys,\n        reason: \"keys\"\n      });\n      this.setState(initialState);\n    }\n  }\n  render() {\n    const {\n      children,\n      fallbackRender,\n      FallbackComponent,\n      fallback\n    } = this.props;\n    const {\n      didCatch,\n      error\n    } = this.state;\n    let childToRender = children;\n    if (didCatch) {\n      const props = {\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      };\n      if (typeof fallbackRender === \"function\") {\n        childToRender = fallbackRender(props);\n      } else if (FallbackComponent) {\n        childToRender = createElement(FallbackComponent, props);\n      } else if (fallback !== undefined) {\n        childToRender = fallback;\n      } else {\n        throw error;\n      }\n    }\n    return createElement(ErrorBoundaryContext.Provider, {\n      value: {\n        didCatch,\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      }\n    }, childToRender);\n  }\n}\nfunction hasArrayChanged() {\n  let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n  if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n    throw new Error(\"ErrorBoundaryContext not found\");\n  }\n}\n\nfunction useErrorBoundary() {\n  const context = useContext(ErrorBoundaryContext);\n  assertErrorBoundaryContext(context);\n  const [state, setState] = useState({\n    error: null,\n    hasError: false\n  });\n  const memoized = useMemo(() => ({\n    resetBoundary: () => {\n      context.resetErrorBoundary();\n      setState({\n        error: null,\n        hasError: false\n      });\n    },\n    showBoundary: error => setState({\n      error,\n      hasError: true\n    })\n  }), [context.resetErrorBoundary]);\n  if (state.hasError) {\n    throw state.error;\n  }\n  return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n  const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n    ...props,\n    ref\n  })));\n\n  // Format for display in DevTools\n  const name = component.displayName || component.name || \"Unknown\";\n  Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n  return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import { ErrorBoundary as ReactErrorBoundary } from 'react-error-boundary';\nimport type { ReactNode } from 'react';\n\ntype ErrorBoundaryProps = {\n  /**\n   * callback that gets executed on Error\n   */\n  onError?: (error: Error) => void;\n  children?: ReactNode | undefined;\n};\n\n/** Error boundary component to catch client-side errors, display fallback page/component and call onError callback. */\nexport const ErrorBoundary = (\n  props: React.ComponentProps<typeof ReactErrorBoundary> & ErrorBoundaryProps\n) => {\n  const { children, onError, ...rest } = props;\n\n  const logError = (error: Error) => {\n    onError?.(error);\n  };\n\n  return (\n    <ReactErrorBoundary {...rest} onError={logError}>\n      {children}\n    </ReactErrorBoundary>\n  );\n};\n\nexport default ErrorBoundary;\n","import { ErrorBoundary } from './lib/error-boundary';\n\nexport * from './lib/error-boundary';\nexport default ErrorBoundary;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { Link } from '@dx-ui/osc-link';\nimport type { SocialMediaLink } from './footer.types';\nimport { useIsClient } from 'usehooks-ts';\n\ntype LinkWithExperimentationConfiguration = Link & {\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\nexport type Footer = {\n  /** Allows for a fluid width layout */\n  isFluid?: boolean;\n  /** The customer support link to use. */\n  customerSupportLink?: Link;\n  /** The contact number for the help desk */\n  contactPhoneLink?: Link;\n  /** The links displayed horizontally at bottom */\n  legalLinks?: Link[];\n  /** The main footer links to be displayed in vertical columns divided equally */\n  links?: LinkWithExperimentationConfiguration[];\n  /** Social media links to be displayed horizontally under contact information */\n  socialLinks?: SocialMediaLink[];\n  /** Theme choice for footer */\n  theme?: Exclude<CmsBrandComponentTheme, 'light'>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * A shared footer implementation that is intended to used across OHW UI apps to give a consistent experience for customers to navigate key links.\n *\n * All links within the footer are [Link](/docs/library-components-link--default-story) components.\n */\nexport const Footer = React.forwardRef<HTMLDivElement, Footer>(\n  (\n    {\n      customerSupportLink,\n      isFluid = false,\n      legalLinks,\n      links: footerLinks = [],\n      contactPhoneLink,\n      socialLinks,\n      theme,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const isClient = useIsClient();\n    const teConsentRef = React.useRef<HTMLDivElement>(null);\n    const { t } = useTranslation('osc-footer');\n    const links = React.useMemo(\n      () =>\n        [\n          ...footerLinks,\n          isClient\n            ? ({\n                id: 'teconsent',\n                url: '',\n                ref: teConsentRef,\n              } as unknown as Link)\n            : null,\n        ].filter(Boolean) as LinkWithExperimentationConfiguration[],\n      [footerLinks, isClient]\n    );\n\n    const footerNavLength = links.length;\n    const footerNavHalfPoint = footerNavLength > 6 ? Math.ceil(footerNavLength * 0.5) : 0;\n    const footerNavFirstHalf = links.slice(0, footerNavHalfPoint);\n    const footerNavSecondHalf = links.slice(footerNavHalfPoint, footerNavLength);\n\n    const isDark = theme === 'dark';\n\n    React.useEffect(() => {\n      if (!isClient) return;\n      if (!teConsentRef.current) return;\n      const callback: MutationCallback = (mutationList) => {\n        for (const mutation of mutationList) {\n          if (mutation.type === 'childList') {\n            teConsentRef.current?.parentElement?.removeAttribute('aria-hidden');\n          }\n        }\n      };\n      const observer = new MutationObserver(callback);\n      observer.observe(teConsentRef.current, { childList: true, subtree: true });\n      return () => observer.disconnect();\n    }, [isClient]);\n\n    return (\n      <footer\n        className={cx('border-border border-t border-solid', {\n          'bg-bg-dark text-text-inverse': isDark,\n        })}\n        data-testid=\"osc-footer\"\n        ref={forwardedRef}\n        {...rest}\n      >\n        <div\n          className={cx('pb-8 pt-4', {\n            'container-fluid': isFluid,\n            container: !isFluid,\n          })}\n        >\n          <div className=\"mb-10 flex flex-col lg:flex-row\">\n            <div className=\"lg:w-1/2\">\n              <h2 data-osc-product=\"footer-help-label\" className=\"text-lg\">\n                {t('helpMessage')}\n              </h2>\n              <div className=\"md:divide-border mt-4 md:flex md:divide-x rtl:divide-x-reverse\">\n                {!!contactPhoneLink && (\n                  <div\n                    className={cx(\n                      'md:px-4 ltr:first:pl-0 ltr:last:pr-0 rtl:first:pr-0 rtl:last:pl-0',\n                      {\n                        '[&_button#call-me-modal-trigger]:!text-primary [&_#call-me-modal-trigger_span]:!text-primary [&_button#call-me-modal-trigger]:!bg-bg [&_button#call-me-modal-trigger]:hover:!bg-bg-alt [&_#call-me-number-link_span]:!text-text-inverse [&_#call-me-global-support-link]:!text-text-inverse [&_#call-me-global-support-link_+_svg]:!fill-text-inverse':\n                          isDark,\n                      }\n                    )}\n                    {...(isClient && { id: 'callme-wrapper' })}\n                  >\n                    <Link\n                      {...contactPhoneLink}\n                      underline={false}\n                      className={cx('whitespace-nowrap text-lg font-bold', {\n                        'text-primary hover:text-primary-alt': !theme,\n                        'text-text-inverse hover:text-bg-alt': isDark,\n                      })}\n                    >\n                      <span className=\"sr-only\">{t('phone')}</span>\n                      <div className=\"uppercase\">{contactPhoneLink.label}</div>\n                    </Link>\n                    <div>\n                      <Link\n                        url=\"https://help.hilton.com/s/article/Global-support-numbers?_gl=1*4wzil3*_gcl_au*MTQwMjAwODgzMi4xNzMzMjM3ODgw\"\n                        isNewWindow={true}\n                        className={cx('text-sm', {\n                          'text-primary hover:text-primary-alt': !theme,\n                          'text-text-inverse': isDark,\n                        })}\n                      >\n                        {t('callMessage')}\n                      </Link>\n                    </div>\n                  </div>\n                )}\n                {!!customerSupportLink && (\n                  <div className=\"mt-4 md:mt-0 md:px-4\">\n                    <Link\n                      {...customerSupportLink}\n                      underline={false}\n                      className=\"text-primary hover:text-primary-alt whitespace-nowrap text-lg font-bold\"\n                    >\n                      {customerSupportLink.label || t('customerSupport')}\n                    </Link>\n                    <p className=\"text-text-alt text-sm\">{t('assistance')}</p>\n                  </div>\n                )}\n              </div>\n              {socialLinks && socialLinks?.length > 0 && (\n                <div className=\"py-4 lg:pt-8\">\n                  <ul className=\"flex items-center space-x-4 rtl:space-x-reverse\">\n                    {socialLinks.map(({ channel, url }) => {\n                      return (\n                        <li key={`footer-social-${channel}`}>\n                          <a\n                            href={url}\n                            className=\"block\"\n                            target=\"_blank\"\n                            rel=\"noopener noreferrer\"\n                            aria-label={`${channel}, ${t('newTab')}`}\n                          >\n                            <img\n                              alt={channel}\n                              className=\"size-8\"\n                              src={`/modules/assets/svgs/social/${channel}.svg`}\n                            />\n                            <span className=\"sr-only\">, {t('newTab')}</span>\n                          </a>\n                        </li>\n                      );\n                    })}\n                  </ul>\n                </div>\n              )}\n            </div>\n            <div className=\"mt-8 w-full md:flex md:space-x-20 lg:mt-0 lg:w-2/4 lg:justify-end lg:space-x-8 rtl:space-x-reverse\">\n              {footerNavFirstHalf.length > 0 && (\n                <ul>\n                  {footerNavFirstHalf.map(\n                    ({\n                      adaDescription,\n                      isNewWindow,\n                      label,\n                      experimentationConfiguration,\n                      ...props\n                    }) => (\n                      <li\n                        className=\"mb-2\"\n                        key={label || props?.id || props?.url}\n                        {...handleTeconsentParentProps(props)}\n                      >\n                        <Link\n                          {...props}\n                          anchorClassName={cx(props.anchorClassName, {\n                            'text-text-inverse *:!text-text-inverse': isDark,\n                          })}\n                          adaDescription={adaDescription}\n                          isNewWindow={isNewWindow}\n                          data-conductrics-goal={experimentationConfiguration?.goal}\n                          data-conductrics-value={experimentationConfiguration?.value}\n                        >\n                          {label}\n                        </Link>\n                      </li>\n                    )\n                  )}\n                </ul>\n              )}\n              {footerNavSecondHalf.length > 0 && (\n                <ul>\n                  {footerNavSecondHalf.map(\n                    ({\n                      adaDescription,\n                      isNewWindow,\n                      label,\n                      experimentationConfiguration,\n                      ...props\n                    }) => (\n                      <li\n                        className=\"mb-2\"\n                        key={label || props.url || props?.id}\n                        {...handleTeconsentParentProps(props)}\n                      >\n                        <Link\n                          {...props}\n                          className={cx('text-primary hover:text-primary-alt text-sm', {\n                            '*:text-primary': !theme,\n                            '*:text-text-inverse': isDark,\n                          })}\n                          anchorClassName={cx({\n                            'text-text-inverse *:!text-text-inverse': isDark,\n                          })}\n                          adaDescription={adaDescription}\n                          isNewWindow={isNewWindow}\n                          data-conductrics-goal={experimentationConfiguration?.goal}\n                          data-conductrics-value={experimentationConfiguration?.value}\n                        >\n                          {label}\n                        </Link>\n                      </li>\n                    )\n                  )}\n                </ul>\n              )}\n            </div>\n          </div>\n          {legalLinks && legalLinks.length > 0 && (\n            <div>\n              <ul className=\"divide-border flex flex-wrap divide-x rtl:divide-x-reverse\">\n                {legalLinks.map(({ adaDescription, label, isNewWindow, ...props }) => (\n                  <li\n                    className=\"mt-2 px-4 ltr:first:pl-0 rtl:first:pr-0 rtl:last:px-0\"\n                    key={label || props.url || props?.id}\n                  >\n                    <Link\n                      {...props}\n                      className={cx({\n                        'text-text-inverse': isDark,\n                      })}\n                      adaDescription={adaDescription}\n                      isNewWindow={isNewWindow}\n                    >\n                      {label}\n                    </Link>\n                  </li>\n                ))}\n              </ul>\n            </div>\n          )}\n          <p\n            className={cx('text-text-alt text-sm', {\n              'pt-2': legalLinks && legalLinks.length > 0,\n              'text-text-inverse': isDark,\n            })}\n            suppressHydrationWarning\n          >\n            &copy;{new Date().getFullYear()} Hilton\n          </p>\n        </div>\n      </footer>\n    );\n  }\n);\n\nfunction handleTeconsentParentProps(props: Link) {\n  if (props.id === 'teconsent') {\n    return {\n      'aria-hidden': true,\n    };\n  }\n}\n\nFooter.displayName = 'Footer';\n\nexport default Footer;\n","export * from './footer';\nexport * from './footer.types';\n","export * from './lib/index';\n","import { forwardRef } from 'react';\n\nconst FormErrorIcon = forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n  ({ width = 16, height = 16, ...rest }, ref) => (\n    <svg\n      ref={ref}\n      role=\"img\"\n      aria-hidden\n      height={height}\n      width={width}\n      viewBox=\"0 0 24 24\"\n      {...rest}\n    >\n      <g fill=\"currentcolor\">\n        <circle cx=\"12\" cy=\"12\" r=\"12\" />\n      </g>\n      <g transform=\"translate(8.000000, 8.000000)\" stroke=\"#FFFFFF\" strokeLinecap=\"square\">\n        <path d=\"M1,1 L7.00679887,7.00679887\" strokeWidth=\"2\" />\n        <path d=\"M1,7 L7.00679887,0.993201131\" strokeWidth=\"2\" />\n      </g>\n    </svg>\n  )\n);\n\nFormErrorIcon.displayName = 'FormErrorIcon';\n\nexport { FormErrorIcon };\nexport default FormErrorIcon;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport type { FieldError } from 'react-hook-form';\nimport { FormErrorIcon } from './form.error-icon';\n\ntype FormError = {\n  error?: Partial<FieldError>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * The standard error message to be used for forms and form inputs\n */\nconst FormError = React.forwardRef<HTMLDivElement, FormError>(\n  ({ error, className, ...rest }, ref) => {\n    const messages = (error?.types ? Object.values(error.types) : [error?.message]).filter(\n      (v) => typeof v === 'string'\n    );\n    const hasError = messages.length > 0;\n\n    return (\n      <div\n        ref={ref}\n        className={cx(className, {\n          hidden: !hasError,\n          '!mt-0 block': hasError,\n        })}\n        {...rest}\n      >\n        {hasError && (\n          <div className=\"flex flex-col space-y-2\">\n            {messages.map((message) => (\n              <div\n                key={String(message)}\n                className=\"text-danger mt-1 flex gap-1 text-sm leading-tight rtl:space-x-reverse\"\n              >\n                <FormErrorIcon />\n                <span>{message}</span>\n              </div>\n            ))}\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nFormError.displayName = 'FormError';\n\nexport { FormError };\nexport default FormError;\n","import * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\n\nimport { FormError } from './form.error';\n\nimport type { SubmitHandler, UseFormProps, UseFormReturn } from 'react-hook-form';\nimport type { FormDataStructure } from './form.types';\n\ntype FormProps = {\n  /**\n   * This is an override to the main form error message, used to notify the user that there are errors that need to be fixed. This is not for individual field error messages.\n   */\n  errorMessage?: string;\n  /**\n   * This will return an object with key/value pairs for each input in the form\n   */\n  onSubmit?: (data: any, methods: UseFormReturn) => void;\n  /**\n   * Please reference the [react-hook-form `useForm()` API documentation](https://react-hook-form.com/api/useform)\n   */\n  useFormProps?: UseFormProps<FormDataStructure>;\n  /** Override for the Error Banner Defaults to displaying */\n  hasErrorBanner?: boolean | undefined;\n} & Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit'>;\n\n/**\n * This is the Form Component that sets up `react-hook-form` with a `<FormProvider/>` and a general error message. All inputs in the form should `useFormContext()` either using `FormInput, FormSelect, FormTextarea, FormConnector` or some other custom component.\n */\nexport const Form: React.FC<React.PropsWithChildren<FormProps>> = ({\n  errorMessage,\n  onSubmit,\n  children,\n  useFormProps = { mode: 'onTouched', criteriaMode: 'all' },\n  hasErrorBanner = true,\n  method = 'POST',\n  ...rest\n}) => {\n  const [t] = useTranslation('osc-form');\n  const memoizedFormProps = React.useMemo(() => useFormProps, [useFormProps]);\n\n  const methods = useForm<FormDataStructure>({\n    mode: 'onTouched',\n    criteriaMode: 'all',\n    ...memoizedFormProps,\n  });\n  const {\n    formState: { errors, isSubmitted },\n  } = methods;\n  const hasErrors = Object.keys(errors).length > 0;\n\n  const onFormSubmit: SubmitHandler<FormDataStructure> = (data) => {\n    if (onSubmit) {\n      onSubmit(data, methods);\n    }\n  };\n\n  return (\n    <FormProvider {...methods}>\n      {hasErrorBanner && (\n        <div\n          role=\"alert\"\n          className={cx('bg-danger-alt text-danger', {\n            'mb-4 p-4': hasErrors && isSubmitted,\n          })}\n        >\n          {hasErrors && isSubmitted && (\n            <h2>\n              <FormError\n                className=\"mt-0 font-semibold\"\n                error={{ message: errorMessage || t('errorMessage') }}\n              />\n            </h2>\n          )}\n        </div>\n      )}\n      <form method={method} {...rest} noValidate onSubmit={methods.handleSubmit(onFormSubmit)}>\n        {children}\n      </form>\n    </FormProvider>\n  );\n};\n\nexport type { FormProps };\n","import type { FieldValues, UseFormReturn } from 'react-hook-form';\nimport { useFormContext } from 'react-hook-form';\n\ntype FormConnector<T extends FieldValues> = {\n  children: JSX.Element | ((props: UseFormReturn<T>) => JSX.Element);\n};\n\nconst FormConnector = <T extends FieldValues>({ children }: FormConnector<T>) => {\n  const methods = useFormContext<T>();\n  return typeof children === 'function' ? children(methods) : children;\n};\n\nexport { FormConnector };\nexport default FormConnector;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { Spinner } from '@dx-ui/osc-spinner';\n\ntype FormHelpMessage = {\n  loading?: boolean;\n  message?: string | string[];\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst FormHelpMessage = React.forwardRef<HTMLDivElement, FormHelpMessage>(\n  ({ className, message, loading, id, ...rest }, ref) => {\n    const { t } = useTranslation('osc-form');\n    const messages = Array.isArray(message) ? message : [message];\n\n    return (\n      <div id={id} className=\"grid gap-1 pt-1\">\n        {loading ? (\n          <div className=\"flex gap-2\">\n            <Spinner size=\"sm\" />\n            <p>{t('loading')}</p>\n          </div>\n        ) : (\n          messages &&\n          messages?.map((value, index) => (\n            <div\n              ref={ref}\n              className={cx('text-text-alt items-center space-x-2 text-sm', className)}\n              key={`help-message-${index + 1}`}\n              {...rest}\n            >\n              <p>{value}</p>\n            </div>\n          ))\n        )}\n      </div>\n    );\n  }\n);\n\nFormHelpMessage.displayName = 'FormHelpMessage';\n\nexport { FormHelpMessage };\nexport default FormHelpMessage;\n","import type * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport type { FormLabelBase } from './form.types';\n\ntype FormLabelHelper = Pick<FormLabelBase, 'required' | 'optional'>;\n\nconst FormLabelHelper: React.FC<React.PropsWithChildren<FormLabelHelper>> = ({\n  required,\n  optional,\n}) => {\n  const [t] = useTranslation('osc-form');\n\n  const requiredText = required && t('required');\n  const optionalText = optional && t('optional');\n\n  const text = requiredText || optionalText;\n\n  return text ? (\n    <>\n      {' '}\n      <span className=\"text-text-alt font-normal\">({text})</span>\n    </>\n  ) : null;\n};\n\nexport { FormLabelHelper };\nexport default FormLabelHelper;\n","import cx from 'classnames';\nimport type * as React from 'react';\nimport { FormLabelHelper } from './form.label-helper';\nimport type { FormLabelBase } from './form.types';\n\ntype FormLabel = FormLabelBase<HTMLLabelElement>;\n\nconst FormLabel: React.FC<React.PropsWithChildren<FormLabel>> = ({\n  label,\n  required,\n  optional,\n  hasError,\n  className,\n  children,\n  ...rest\n}) => {\n  return (\n    <label\n      className={cx('label', className, {\n        'text-danger': hasError,\n      })}\n      {...rest}\n    >\n      <span>\n        {label}\n        <FormLabelHelper required={required} optional={optional} />\n      </span>\n      {children}\n    </label>\n  );\n};\n\nexport { FormLabel };\nexport default FormLabel;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { get, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport { FormError } from './form.error';\nimport { FormHelpMessage } from './form.help-message';\nimport { FormLabel } from './form.label';\nimport type { FormInputBase } from './form.types';\n\n/**\n * This component is to be used in place of all `<input>` elements including checkbox and radio\n */\nexport const FormInput: React.FC<\n  React.PropsWithChildren<FormInputBase<React.InputHTMLAttributes<HTMLInputElement>>>\n> = ({\n  label,\n  name,\n  required,\n  optional,\n  registerOptions,\n  labelClassName,\n  helpMessage,\n  loading,\n  className,\n  containerClassName,\n  ...rest\n}) => {\n  const id = React.useId();\n  const errorId = `input-error-${id}`;\n  const helperId = `input-helper-${id}`;\n  const [t] = useTranslation('osc-form');\n  const {\n    register,\n    formState: { errors },\n  } = useFormContext();\n  const fieldError = get(errors, name);\n  const hasError = !!fieldError;\n\n  let inputClassName = '';\n  let labelClass = '';\n  switch (rest.type) {\n    case 'checkbox':\n      inputClassName = 'form-checkbox';\n      labelClass = 'label-inline-reverse';\n      break;\n    case 'radio':\n      inputClassName = 'form-radio';\n      labelClass = 'label-inline';\n      break;\n    default:\n      inputClassName = 'form-input w-full';\n      break;\n  }\n\n  return (\n    <div className={containerClassName}>\n      <FormLabel\n        label={label}\n        required={required}\n        optional={optional}\n        hasError={hasError}\n        className={cx('self-start', labelClass, labelClassName)}\n      >\n        <input\n          type=\"text\"\n          {...rest}\n          className={cx(inputClassName, className, {\n            'form-error': hasError,\n          })}\n          aria-invalid={hasError}\n          required={required}\n          aria-describedby={`${errorId} ${helperId} ${rest?.['aria-describedby'] || ''}`}\n          {...register(name, {\n            required: required ? t('requiredError') : false,\n            ...registerOptions,\n          })}\n        />\n      </FormLabel>\n      <FormError id={errorId} error={fieldError} />\n      <FormHelpMessage id={helperId} message={helpMessage} loading={loading} />\n    </div>\n  );\n};\n\nexport default FormInput;\n","import cx from 'classnames';\nimport type * as React from 'react';\nimport { FormLabelHelper } from './form.label-helper';\nimport type { FormLabelBase } from './form.types';\n\ntype FormLegend = FormLabelBase<HTMLLegendElement>;\n\nconst FormLegend: React.FC<React.PropsWithChildren<FormLegend>> = ({\n  label,\n  required,\n  optional,\n  hasError,\n  className,\n  ...rest\n}) => {\n  return (\n    <legend\n      className={cx('label', className, {\n        'text-danger': hasError,\n      })}\n      {...rest}\n    >\n      <span>\n        {label}\n        <FormLabelHelper required={required} optional={optional} />\n      </span>\n    </legend>\n  );\n};\n\nexport { FormLegend };\nexport default FormLegend;\n","import * as React from 'react';\nimport { get, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport cardValidator from 'card-validator';\nimport cx from 'classnames';\n\nimport type { FormInputBase } from './form.types';\nimport FormError from './form.error';\nimport FormLabel from './form.label';\n\ntype Validator = typeof cardValidator;\n\nconst formatCardNumber = (cardNumber: string, cardValidator: Validator) => {\n  const cardData = cardValidator.number(cardNumber);\n  if (!cardData.isPotentiallyValid || !cardData?.card) return cardNumber;\n  const cardNumberArray = [...cardNumber];\n  if (cardData?.isPotentiallyValid && cardData?.card?.type) {\n    const validGapIndices = cardData?.card?.gaps?.filter(\n      (gapIndex: number) => cardNumber?.length > gapIndex\n    );\n    validGapIndices?.forEach((gap: number, index: number) => {\n      if (cardNumberArray[gap + index] !== ' ') {\n        cardNumberArray.splice(gap + index, 0, ' ');\n      }\n    });\n  }\n  return cardNumberArray.join('').trim();\n};\n\nconst FormCardNumberInput: React.FC<FormInputBase<React.InputHTMLAttributes<HTMLInputElement>>> = ({\n  className,\n  containerClassName,\n  label,\n  labelClassName,\n  name,\n  registerOptions,\n  required = true,\n  ...rest\n}) => {\n  const {\n    formState: { errors },\n    register,\n    setValue,\n  } = useFormContext();\n  const [cardType, setCardType] = React.useState<string | null>(null);\n  const [t] = useTranslation('osc-form');\n  const id = React.useId();\n  const errorId = `input-error-${id}`;\n  const errorMessage = get(errors, name);\n  const MAX_NUMBER_OF_DIGITS = 19;\n  const MAX_NUMBER_OF_GAPS = 3;\n  return (\n    <div className={containerClassName}>\n      <FormLabel label={label} required={required} className={cx('self-start', labelClassName)}>\n        <div\n          className={cx(\n            'form-input flex before:mr-3 before:inline-block before:h-auto before:w-9 before:bg-cover before:rtl:ml-3',\n            className,\n            {\n              'form-error': !!errorMessage,\n              'before:content-none': !cardType,\n              'before:bg-card-amex': cardType === 'american-express',\n              'before:bg-card-diners-club': cardType === 'diners-club',\n              'before:bg-card-discover': cardType === 'discover' || cardType === 'elo',\n              'before:bg-card-jcb': cardType === 'jcb',\n              'before:bg-card-maestro': cardType === 'maestro',\n              'before:bg-card-mastercard': cardType === 'mastercard',\n              'before:bg-card-unionpay': cardType === 'unionpay',\n              'before:bg-card-visa': cardType === 'visa',\n            }\n          )}\n        >\n          <input\n            {...rest}\n            aria-invalid={!!errorMessage}\n            aria-describedby={errorId}\n            autoComplete=\"cc-number\"\n            className=\"outline-none\"\n            inputMode=\"numeric\"\n            {...register(name, {\n              onChange: ({ target: { value: cardNumber } }) => {\n                setValue(name, formatCardNumber(cardNumber, cardValidator));\n                setCardType(cardValidator.number(cardNumber)?.card?.type ?? null);\n              },\n              required: required ? t('invalidCardNumberError') : false,\n              setValueAs: (value) => value?.replace(/\\s/g, ''),\n              validate: (cardNumber) =>\n                !cardNumber ||\n                cardValidator.number(cardNumber).isValid ||\n                t('invalidCardNumberError'),\n              ...registerOptions,\n            })}\n            required={required}\n            size={MAX_NUMBER_OF_DIGITS + MAX_NUMBER_OF_GAPS}\n          />\n        </div>\n      </FormLabel>\n      {errorMessage ? <FormError id={errorId} error={errorMessage} /> : null}\n    </div>\n  );\n};\n\nexport { FormCardNumberInput };\nexport default FormCardNumberInput;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { get, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport { FormError } from './form.error';\nimport { FormHelpMessage } from './form.help-message';\nimport { FormLabel } from './form.label';\nimport type { FormInputBase } from './form.types';\n\n/**\n * This component is to be used in place of all `<select>` elements including checkbox and radio\n */\nconst FormSelect: React.FC<\n  React.PropsWithChildren<FormInputBase<React.SelectHTMLAttributes<HTMLSelectElement>>>\n> = ({\n  label,\n  name,\n  optional,\n  required,\n  registerOptions,\n  labelClassName,\n  helpMessage,\n  loading,\n  className,\n  containerClassName,\n  children,\n  ...rest\n}) => {\n  const id = React.useId();\n  const errorId = `input-error-${id}`;\n  const helperId = `input-helper-${id}`;\n  const [t] = useTranslation('osc-form');\n  const {\n    register,\n    formState: { errors },\n  } = useFormContext();\n  const fieldError = get(errors, name);\n  const hasError = !!fieldError;\n\n  return (\n    <div className={containerClassName}>\n      <FormLabel\n        label={label}\n        required={required}\n        optional={optional}\n        hasError={hasError}\n        className={cx('self-start', labelClassName)}\n      >\n        <select\n          {...rest}\n          className={cx(className, {\n            'form-select': !rest.multiple,\n            'form-multiselect': rest.multiple,\n            'form-error': hasError,\n          })}\n          required={required}\n          aria-invalid={hasError}\n          aria-describedby={`${errorId} ${helperId}`}\n          {...register(name, {\n            required: required ? t('requiredError') : false,\n            ...registerOptions,\n          })}\n        >\n          {children}\n        </select>\n      </FormLabel>\n      <FormError id={errorId} error={fieldError} />\n      <FormHelpMessage id={helperId} message={helpMessage} loading={loading} />\n    </div>\n  );\n};\n\nexport { FormSelect };\nexport default FormSelect;\n","import cx from 'classnames';\nimport * as React from 'react';\nimport { get, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'next-i18next';\nimport { FormError } from './form.error';\nimport { FormHelpMessage } from './form.help-message';\nimport { FormLabel } from './form.label';\nimport type { FormInputBase } from './form.types';\n\n/**\n * This component is to be used in place of all `<textarea>` elements\n */\nconst FormTextarea: React.FC<\n  React.PropsWithChildren<FormInputBase<React.TextareaHTMLAttributes<HTMLTextAreaElement>>>\n> = ({\n  label,\n  name,\n  optional,\n  required,\n  registerOptions,\n  labelClassName,\n  helpMessage,\n  loading,\n  className,\n  containerClassName,\n  maxLength,\n  ...rest\n}) => {\n  const id = React.useId();\n  const errorId = `input-error-${id}`;\n  const helperId = `input-helper-${id}`;\n  const [t] = useTranslation('osc-form');\n  const {\n    register,\n    watch,\n    formState: { errors },\n  } = useFormContext();\n  const inputName = name;\n  const inputValue = watch(inputName);\n  const fieldError = get(errors, inputName);\n  const hasError = !!fieldError;\n\n  const length = inputValue?.length || 0;\n  const percent = (maxLength && length / maxLength) || 0;\n  const remaining = maxLength && maxLength - length;\n\n  return (\n    <div className={containerClassName}>\n      <FormLabel\n        label={label}\n        required={required}\n        optional={optional}\n        hasError={hasError}\n        className={cx('self-start', labelClassName)}\n      >\n        <div className=\"relative\">\n          <textarea\n            {...rest}\n            maxLength={maxLength}\n            required={required}\n            className={cx('form-textarea w-full', className, {\n              'form-error': hasError,\n            })}\n            aria-invalid={hasError}\n            aria-describedby={`${errorId} ${helperId}`}\n            {...register(inputName, {\n              required: required ? t('requiredError') : false,\n              ...registerOptions,\n            })}\n          />\n          {!!maxLength && (\n            <p\n              aria-live=\"polite\"\n              className={cx(\n                'bg-bg/70 pointer-events-none absolute bottom-2 select-none px-1 pt-1 text-xs font-normal ltr:right-0.5 rtl:left-0.5',\n                {\n                  'text-text-alt': percent < 0.8,\n                  'text-warn': percent >= 0.8 && percent < 1,\n                  'text-danger': percent >= 1,\n                }\n              )}\n              data-testid=\"form-textarea-counter\"\n            >\n              <span aria-hidden>\n                {length}/{maxLength}\n              </span>\n              <span className=\"sr-only\">{t('remaining', { count: remaining })}</span>\n            </p>\n          )}\n        </div>\n      </FormLabel>\n      <FormError id={errorId} error={fieldError} />\n      <FormHelpMessage id={helperId} message={helpMessage} loading={loading} />\n    </div>\n  );\n};\n\nexport { FormTextarea };\nexport default FormTextarea;\n","export * from './lib/form';\nexport * from './lib/form.connector';\nexport * from './lib/form.error';\nexport * from './lib/form.error-icon';\nexport * from './lib/form.help-message';\nexport * from './lib/form.input';\nexport * from './lib/form.label';\nexport * from './lib/form.label-helper';\nexport * from './lib/form.legend';\nexport * from './lib/form.card-number-input';\nexport * from './lib/form.select';\nexport * from './lib/form.textarea';\nexport * from './lib/form.types';\n","// packages/react/arrow/src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n  const { children, width = 10, height = 5, ...arrowProps } = props;\n  return /* @__PURE__ */ jsx(\n    Primitive.svg,\n    {\n      ...arrowProps,\n      ref: forwardedRef,\n      width,\n      height,\n      viewBox: \"0 0 30 10\",\n      preserveAspectRatio: \"none\",\n      children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n    }\n  );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n  Arrow,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/popper/src/popper.tsx\nimport * as React from \"react\";\nimport {\n  useFloating,\n  autoUpdate,\n  offset,\n  shift,\n  limitShift,\n  hide,\n  arrow as floatingUIarrow,\n  flip,\n  size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n  const { __scopePopper, children } = props;\n  const [anchor, setAnchor] = React.useState(null);\n  return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopper, virtualRef, ...anchorProps } = props;\n    const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    React.useEffect(() => {\n      context.onAnchorChange(virtualRef?.current || ref.current);\n    });\n    return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n  }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopePopper,\n      side = \"bottom\",\n      sideOffset = 0,\n      align = \"center\",\n      alignOffset = 0,\n      arrowPadding = 0,\n      avoidCollisions = true,\n      collisionBoundary = [],\n      collisionPadding: collisionPaddingProp = 0,\n      sticky = \"partial\",\n      hideWhenDetached = false,\n      updatePositionStrategy = \"optimized\",\n      onPlaced,\n      ...contentProps\n    } = props;\n    const context = usePopperContext(CONTENT_NAME, __scopePopper);\n    const [content, setContent] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n    const [arrow, setArrow] = React.useState(null);\n    const arrowSize = useSize(arrow);\n    const arrowWidth = arrowSize?.width ?? 0;\n    const arrowHeight = arrowSize?.height ?? 0;\n    const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n    const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n    const hasExplicitBoundaries = boundary.length > 0;\n    const detectOverflowOptions = {\n      padding: collisionPadding,\n      boundary: boundary.filter(isNotNull),\n      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n      altBoundary: hasExplicitBoundaries\n    };\n    const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n      strategy: \"fixed\",\n      placement: desiredPlacement,\n      whileElementsMounted: (...args) => {\n        const cleanup = autoUpdate(...args, {\n          animationFrame: updatePositionStrategy === \"always\"\n        });\n        return cleanup;\n      },\n      elements: {\n        reference: context.anchor\n      },\n      middleware: [\n        offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n        avoidCollisions && shift({\n          mainAxis: true,\n          crossAxis: false,\n          limiter: sticky === \"partial\" ? limitShift() : void 0,\n          ...detectOverflowOptions\n        }),\n        avoidCollisions && flip({ ...detectOverflowOptions }),\n        size({\n          ...detectOverflowOptions,\n          apply: ({ elements, rects, availableWidth, availableHeight }) => {\n            const { width: anchorWidth, height: anchorHeight } = rects.reference;\n            const contentStyle = elements.floating.style;\n            contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n          }\n        }),\n        arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n        transformOrigin({ arrowWidth, arrowHeight }),\n        hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n      ]\n    });\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const handlePlaced = useCallbackRef(onPlaced);\n    useLayoutEffect(() => {\n      if (isPositioned) {\n        handlePlaced?.();\n      }\n    }, [isPositioned, handlePlaced]);\n    const arrowX = middlewareData.arrow?.x;\n    const arrowY = middlewareData.arrow?.y;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const [contentZIndex, setContentZIndex] = React.useState();\n    useLayoutEffect(() => {\n      if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n    }, [content]);\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        ref: refs.setFloating,\n        \"data-radix-popper-content-wrapper\": \"\",\n        style: {\n          ...floatingStyles,\n          transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n          // keep off the page when measuring\n          minWidth: \"max-content\",\n          zIndex: contentZIndex,\n          [\"--radix-popper-transform-origin\"]: [\n            middlewareData.transformOrigin?.x,\n            middlewareData.transformOrigin?.y\n          ].join(\" \"),\n          // hide the content if using the hide middleware and should be hidden\n          // set visibility to hidden and disable pointer events so the UI behaves\n          // as if the PopperContent isn't there at all\n          ...middlewareData.hide?.referenceHidden && {\n            visibility: \"hidden\",\n            pointerEvents: \"none\"\n          }\n        },\n        dir: props.dir,\n        children: /* @__PURE__ */ jsx(\n          PopperContentProvider,\n          {\n            scope: __scopePopper,\n            placedSide,\n            onArrowChange: setArrow,\n            arrowX,\n            arrowY,\n            shouldHideArrow: cannotCenterArrow,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                \"data-side\": placedSide,\n                \"data-align\": placedAlign,\n                ...contentProps,\n                ref: composedRefs,\n                style: {\n                  ...contentProps.style,\n                  // if the PopperContent hasn't been placed yet (not all measurements done)\n                  // we prevent animations so that users's animation don't kick in too early referring wrong sides\n                  animation: !isPositioned ? \"none\" : void 0\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n  top: \"bottom\",\n  right: \"left\",\n  bottom: \"top\",\n  left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n  const { __scopePopper, ...arrowProps } = props;\n  const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n  const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n  return (\n    // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n    // doesn't report size as we'd expect on SVG elements.\n    // it reports their bounding box which is effectively the largest path inside the SVG.\n    /* @__PURE__ */ jsx(\n      \"span\",\n      {\n        ref: contentContext.onArrowChange,\n        style: {\n          position: \"absolute\",\n          left: contentContext.arrowX,\n          top: contentContext.arrowY,\n          [baseSide]: 0,\n          transformOrigin: {\n            top: \"\",\n            right: \"0 0\",\n            bottom: \"center 0\",\n            left: \"100% 0\"\n          }[contentContext.placedSide],\n          transform: {\n            top: \"translateY(100%)\",\n            right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n            bottom: `rotate(180deg)`,\n            left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n          }[contentContext.placedSide],\n          visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n        },\n        children: /* @__PURE__ */ jsx(\n          ArrowPrimitive.Root,\n          {\n            ...arrowProps,\n            ref: forwardedRef,\n            style: {\n              ...arrowProps.style,\n              // ensures the element can be measured correctly (mostly for if SVG)\n              display: \"block\"\n            }\n          }\n        )\n      }\n    )\n  );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n  return value !== null;\n}\nvar transformOrigin = (options) => ({\n  name: \"transformOrigin\",\n  options,\n  fn(data) {\n    const { placement, rects, middlewareData } = data;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const isArrowHidden = cannotCenterArrow;\n    const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n    const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n    const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n    const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n    let x = \"\";\n    let y = \"\";\n    if (placedSide === \"bottom\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${-arrowHeight}px`;\n    } else if (placedSide === \"top\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${rects.floating.height + arrowHeight}px`;\n    } else if (placedSide === \"right\") {\n      x = `${-arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    } else if (placedSide === \"left\") {\n      x = `${rects.floating.width + arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    }\n    return { data: { x, y } };\n  }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n  ALIGN_OPTIONS,\n  Anchor,\n  Arrow,\n  Content,\n  Popper,\n  PopperAnchor,\n  PopperArrow,\n  PopperContent,\n  Root2 as Root,\n  SIDE_OPTIONS,\n  createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/roving-focus/src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n  GROUP_NAME,\n  [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n  }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n  const {\n    __scopeRovingFocusGroup,\n    orientation,\n    loop = false,\n    dir,\n    currentTabStopId: currentTabStopIdProp,\n    defaultCurrentTabStopId,\n    onCurrentTabStopIdChange,\n    onEntryFocus,\n    preventScrollOnEntryFocus = false,\n    ...groupProps\n  } = props;\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const direction = useDirection(dir);\n  const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n    prop: currentTabStopIdProp,\n    defaultProp: defaultCurrentTabStopId,\n    onChange: onCurrentTabStopIdChange\n  });\n  const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n  const handleEntryFocus = useCallbackRef(onEntryFocus);\n  const getItems = useCollection(__scopeRovingFocusGroup);\n  const isClickFocusRef = React.useRef(false);\n  const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n      return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n    }\n  }, [handleEntryFocus]);\n  return /* @__PURE__ */ jsx(\n    RovingFocusProvider,\n    {\n      scope: __scopeRovingFocusGroup,\n      orientation,\n      dir: direction,\n      loop,\n      currentTabStopId,\n      onItemFocus: React.useCallback(\n        (tabStopId) => setCurrentTabStopId(tabStopId),\n        [setCurrentTabStopId]\n      ),\n      onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n      onFocusableItemAdd: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount + 1),\n        []\n      ),\n      onFocusableItemRemove: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount - 1),\n        []\n      ),\n      children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n          \"data-orientation\": orientation,\n          ...groupProps,\n          ref: composedRefs,\n          style: { outline: \"none\", ...props.style },\n          onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n            isClickFocusRef.current = true;\n          }),\n          onFocus: composeEventHandlers(props.onFocus, (event) => {\n            const isKeyboardFocus = !isClickFocusRef.current;\n            if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n              const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n              event.currentTarget.dispatchEvent(entryFocusEvent);\n              if (!entryFocusEvent.defaultPrevented) {\n                const items = getItems().filter((item) => item.focusable);\n                const activeItem = items.find((item) => item.active);\n                const currentItem = items.find((item) => item.id === currentTabStopId);\n                const candidateItems = [activeItem, currentItem, ...items].filter(\n                  Boolean\n                );\n                const candidateNodes = candidateItems.map((item) => item.ref.current);\n                focusFirst(candidateNodes, preventScrollOnEntryFocus);\n              }\n            }\n            isClickFocusRef.current = false;\n          }),\n          onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n        }\n      )\n    }\n  );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeRovingFocusGroup,\n      focusable = true,\n      active = false,\n      tabStopId,\n      ...itemProps\n    } = props;\n    const autoId = useId();\n    const id = tabStopId || autoId;\n    const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n    const isCurrentTabStop = context.currentTabStopId === id;\n    const getItems = useCollection(__scopeRovingFocusGroup);\n    const { onFocusableItemAdd, onFocusableItemRemove } = context;\n    React.useEffect(() => {\n      if (focusable) {\n        onFocusableItemAdd();\n        return () => onFocusableItemRemove();\n      }\n    }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeRovingFocusGroup,\n        id,\n        focusable,\n        active,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            tabIndex: isCurrentTabStop ? 0 : -1,\n            \"data-orientation\": context.orientation,\n            ...itemProps,\n            ref: forwardedRef,\n            onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n              if (!focusable) event.preventDefault();\n              else context.onItemFocus(id);\n            }),\n            onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n            onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n              if (event.key === \"Tab\" && event.shiftKey) {\n                context.onItemShiftTab();\n                return;\n              }\n              if (event.target !== event.currentTarget) return;\n              const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n              if (focusIntent !== void 0) {\n                if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n                event.preventDefault();\n                const items = getItems().filter((item) => item.focusable);\n                let candidateNodes = items.map((item) => item.ref.current);\n                if (focusIntent === \"last\") candidateNodes.reverse();\n                else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n                  if (focusIntent === \"prev\") candidateNodes.reverse();\n                  const currentIndex = candidateNodes.indexOf(event.currentTarget);\n                  candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n                }\n                setTimeout(() => focusFirst(candidateNodes));\n              }\n            })\n          }\n        )\n      }\n    );\n  }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n  ArrowLeft: \"prev\",\n  ArrowUp: \"prev\",\n  ArrowRight: \"next\",\n  ArrowDown: \"next\",\n  PageUp: \"first\",\n  Home: \"first\",\n  PageDown: \"last\",\n  End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n  if (dir !== \"rtl\") return key;\n  return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n  const key = getDirectionAwareKey(event.key, dir);\n  if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n  if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n  return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus({ preventScroll });\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n  Item,\n  Root,\n  RovingFocusGroup,\n  RovingFocusGroupItem,\n  createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/menu/src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n  ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n  rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n  ltr: [\"ArrowLeft\"],\n  rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n  createCollectionScope,\n  createPopperScope,\n  createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n  const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n  const popperScope = usePopperScope(__scopeMenu);\n  const [content, setContent] = React.useState(null);\n  const isUsingKeyboardRef = React.useRef(false);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  const direction = useDirection(dir);\n  React.useEffect(() => {\n    const handleKeyDown = () => {\n      isUsingKeyboardRef.current = true;\n      document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n      document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n    };\n    const handlePointer = () => isUsingKeyboardRef.current = false;\n    document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n      document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n      document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuRootProvider,\n        {\n          scope: __scopeMenu,\n          onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n          isUsingKeyboardRef,\n          dir: direction,\n          modal,\n          children\n        }\n      )\n    }\n  ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...anchorProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n  }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar MenuPortal = (props) => {\n  const { __scopeMenu, forceMount, children, container } = props;\n  const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n  }\n);\nvar MenuRootContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    React.useEffect(() => {\n      const content = ref.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: context.open,\n        disableOutsideScroll: true,\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault(),\n          { checkForDefaultPrevented: false }\n        ),\n        onDismiss: () => context.onOpenChange(false)\n      }\n    );\n  }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n  const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n  return /* @__PURE__ */ jsx(\n    MenuContentImpl,\n    {\n      ...props,\n      ref: forwardedRef,\n      trapFocus: false,\n      disableOutsidePointerEvents: false,\n      disableOutsideScroll: false,\n      onDismiss: () => context.onOpenChange(false)\n    }\n  );\n});\nvar MenuContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeMenu,\n      loop = false,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      disableOutsidePointerEvents,\n      onEntryFocus,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      disableOutsideScroll,\n      ...contentProps\n    } = props;\n    const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n    const popperScope = usePopperScope(__scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const getItems = useCollection(__scopeMenu);\n    const [currentItemId, setCurrentItemId] = React.useState(null);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n    const timerRef = React.useRef(0);\n    const searchRef = React.useRef(\"\");\n    const pointerGraceTimerRef = React.useRef(0);\n    const pointerGraceIntentRef = React.useRef(null);\n    const pointerDirRef = React.useRef(\"right\");\n    const lastPointerXRef = React.useRef(0);\n    const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n    const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n    const handleTypeaheadSearch = (key) => {\n      const search = searchRef.current + key;\n      const items = getItems().filter((item) => !item.disabled);\n      const currentItem = document.activeElement;\n      const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n      const values = items.map((item) => item.textValue);\n      const nextMatch = getNextMatch(values, search, currentMatch);\n      const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n      (function updateSearch(value) {\n        searchRef.current = value;\n        window.clearTimeout(timerRef.current);\n        if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n      })(search);\n      if (newItem) {\n        setTimeout(() => newItem.focus());\n      }\n    };\n    React.useEffect(() => {\n      return () => window.clearTimeout(timerRef.current);\n    }, []);\n    useFocusGuards();\n    const isPointerMovingToSubmenu = React.useCallback((event) => {\n      const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n      return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentProvider,\n      {\n        scope: __scopeMenu,\n        searchRef,\n        onItemEnter: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onItemLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) return;\n            contentRef.current?.focus();\n            setCurrentItemId(null);\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onTriggerLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        pointerGraceTimerRef,\n        onPointerGraceIntentChange: React.useCallback((intent) => {\n          pointerGraceIntentRef.current = intent;\n        }, []),\n        children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n          FocusScope,\n          {\n            asChild: true,\n            trapped: trapFocus,\n            onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n              event.preventDefault();\n              contentRef.current?.focus({ preventScroll: true });\n            }),\n            onUnmountAutoFocus: onCloseAutoFocus,\n            children: /* @__PURE__ */ jsx(\n              DismissableLayer,\n              {\n                asChild: true,\n                disableOutsidePointerEvents,\n                onEscapeKeyDown,\n                onPointerDownOutside,\n                onFocusOutside,\n                onInteractOutside,\n                onDismiss,\n                children: /* @__PURE__ */ jsx(\n                  RovingFocusGroup.Root,\n                  {\n                    asChild: true,\n                    ...rovingFocusGroupScope,\n                    dir: rootContext.dir,\n                    orientation: \"vertical\",\n                    loop,\n                    currentTabStopId: currentItemId,\n                    onCurrentTabStopIdChange: setCurrentItemId,\n                    onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n                      if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n                    }),\n                    preventScrollOnEntryFocus: true,\n                    children: /* @__PURE__ */ jsx(\n                      PopperPrimitive.Content,\n                      {\n                        role: \"menu\",\n                        \"aria-orientation\": \"vertical\",\n                        \"data-state\": getOpenState(context.open),\n                        \"data-radix-menu-content\": \"\",\n                        dir: rootContext.dir,\n                        ...popperScope,\n                        ...contentProps,\n                        ref: composedRefs,\n                        style: { outline: \"none\", ...contentProps.style },\n                        onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n                          const target = event.target;\n                          const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n                          const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n                          const isCharacterKey = event.key.length === 1;\n                          if (isKeyDownInside) {\n                            if (event.key === \"Tab\") event.preventDefault();\n                            if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n                          }\n                          const content = contentRef.current;\n                          if (event.target !== content) return;\n                          if (!FIRST_LAST_KEYS.includes(event.key)) return;\n                          event.preventDefault();\n                          const items = getItems().filter((item) => !item.disabled);\n                          const candidateNodes = items.map((item) => item.ref.current);\n                          if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n                          focusFirst(candidateNodes);\n                        }),\n                        onBlur: composeEventHandlers(props.onBlur, (event) => {\n                          if (!event.currentTarget.contains(event.target)) {\n                            window.clearTimeout(timerRef.current);\n                            searchRef.current = \"\";\n                          }\n                        }),\n                        onPointerMove: composeEventHandlers(\n                          props.onPointerMove,\n                          whenMouse((event) => {\n                            const target = event.target;\n                            const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n                            if (event.currentTarget.contains(target) && pointerXHasChanged) {\n                              const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n                              pointerDirRef.current = newDir;\n                              lastPointerXRef.current = event.clientX;\n                            }\n                          })\n                        )\n                      }\n                    )\n                  }\n                )\n              }\n            )\n          }\n        ) })\n      }\n    );\n  }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...groupProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n  }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...labelProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n  }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { disabled = false, onSelect, ...itemProps } = props;\n    const ref = React.useRef(null);\n    const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const isPointerDownRef = React.useRef(false);\n    const handleSelect = () => {\n      const menuItem = ref.current;\n      if (!disabled && menuItem) {\n        const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n        menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n        dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n        if (itemSelectEvent.defaultPrevented) {\n          isPointerDownRef.current = false;\n        } else {\n          rootContext.onClose();\n        }\n      }\n    };\n    return /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        ...itemProps,\n        ref: composedRefs,\n        disabled,\n        onClick: composeEventHandlers(props.onClick, handleSelect),\n        onPointerDown: (event) => {\n          props.onPointerDown?.(event);\n          isPointerDownRef.current = true;\n        },\n        onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n          if (!isPointerDownRef.current) event.currentTarget?.click();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (disabled || isTypingAhead && event.key === \" \") return;\n          if (SELECTION_KEYS.includes(event.key)) {\n            event.currentTarget.click();\n            event.preventDefault();\n          }\n        })\n      }\n    );\n  }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n    const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const [isFocused, setIsFocused] = React.useState(false);\n    const [textContent, setTextContent] = React.useState(\"\");\n    React.useEffect(() => {\n      const menuItem = ref.current;\n      if (menuItem) {\n        setTextContent((menuItem.textContent ?? \"\").trim());\n      }\n    }, [itemProps.children]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeMenu,\n        disabled,\n        textValue: textValue ?? textContent,\n        children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            role: \"menuitem\",\n            \"data-highlighted\": isFocused ? \"\" : void 0,\n            \"aria-disabled\": disabled || void 0,\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...itemProps,\n            ref: composedRefs,\n            onPointerMove: composeEventHandlers(\n              props.onPointerMove,\n              whenMouse((event) => {\n                if (disabled) {\n                  contentContext.onItemLeave(event);\n                } else {\n                  contentContext.onItemEnter(event);\n                  if (!event.defaultPrevented) {\n                    const item = event.currentTarget;\n                    item.focus({ preventScroll: true });\n                  }\n                }\n              })\n            ),\n            onPointerLeave: composeEventHandlers(\n              props.onPointerLeave,\n              whenMouse((event) => contentContext.onItemLeave(event))\n            ),\n            onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n            onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n          }\n        ) })\n      }\n    );\n  }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemcheckbox\",\n        \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n        ...checkboxItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          checkboxItemProps.onSelect,\n          () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n  RADIO_GROUP_NAME,\n  { value: void 0, onValueChange: () => {\n  } }\n);\nvar MenuRadioGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { value, onValueChange, ...groupProps } = props;\n    const handleValueChange = useCallbackRef(onValueChange);\n    return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n  }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { value, ...radioItemProps } = props;\n    const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n    const checked = value === context.value;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemradio\",\n        \"aria-checked\": checked,\n        ...radioItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          radioItemProps.onSelect,\n          () => context.onValueChange?.(value),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n  ITEM_INDICATOR_NAME,\n  { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n    const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n    return /* @__PURE__ */ jsx(\n      Presence,\n      {\n        present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            ...itemIndicatorProps,\n            ref: forwardedRef,\n            \"data-state\": getCheckedState(indicatorContext.checked)\n          }\n        )\n      }\n    );\n  }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...separatorProps } = props;\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        role: \"separator\",\n        \"aria-orientation\": \"horizontal\",\n        ...separatorProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n  const { __scopeMenu, children, open = false, onOpenChange } = props;\n  const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n  const popperScope = usePopperScope(__scopeMenu);\n  const [trigger, setTrigger] = React.useState(null);\n  const [content, setContent] = React.useState(null);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  React.useEffect(() => {\n    if (parentMenuContext.open === false) handleOpenChange(false);\n    return () => handleOpenChange(false);\n  }, [parentMenuContext.open, handleOpenChange]);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuSubProvider,\n        {\n          scope: __scopeMenu,\n          contentId: useId(),\n          triggerId: useId(),\n          trigger,\n          onTriggerChange: setTrigger,\n          children\n        }\n      )\n    }\n  ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const openTimerRef = React.useRef(null);\n    const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n    const scope = { __scopeMenu: props.__scopeMenu };\n    const clearOpenTimer = React.useCallback(() => {\n      if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n      openTimerRef.current = null;\n    }, []);\n    React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n    React.useEffect(() => {\n      const pointerGraceTimer = pointerGraceTimerRef.current;\n      return () => {\n        window.clearTimeout(pointerGraceTimer);\n        onPointerGraceIntentChange(null);\n      };\n    }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n    return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        id: subContext.triggerId,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": subContext.contentId,\n        \"data-state\": getOpenState(context.open),\n        ...props,\n        ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n        onClick: (event) => {\n          props.onClick?.(event);\n          if (props.disabled || event.defaultPrevented) return;\n          event.currentTarget.focus();\n          if (!context.open) context.onOpenChange(true);\n        },\n        onPointerMove: composeEventHandlers(\n          props.onPointerMove,\n          whenMouse((event) => {\n            contentContext.onItemEnter(event);\n            if (event.defaultPrevented) return;\n            if (!props.disabled && !context.open && !openTimerRef.current) {\n              contentContext.onPointerGraceIntentChange(null);\n              openTimerRef.current = window.setTimeout(() => {\n                context.onOpenChange(true);\n                clearOpenTimer();\n              }, 100);\n            }\n          })\n        ),\n        onPointerLeave: composeEventHandlers(\n          props.onPointerLeave,\n          whenMouse((event) => {\n            clearOpenTimer();\n            const contentRect = context.content?.getBoundingClientRect();\n            if (contentRect) {\n              const side = context.content?.dataset.side;\n              const rightSide = side === \"right\";\n              const bleed = rightSide ? -5 : 5;\n              const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n              const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n              contentContext.onPointerGraceIntentChange({\n                area: [\n                  // Apply a bleed on clientX to ensure that our exit point is\n                  // consistently within polygon bounds\n                  { x: event.clientX + bleed, y: event.clientY },\n                  { x: contentNearEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.bottom },\n                  { x: contentNearEdge, y: contentRect.bottom }\n                ],\n                side\n              });\n              window.clearTimeout(pointerGraceTimerRef.current);\n              pointerGraceTimerRef.current = window.setTimeout(\n                () => contentContext.onPointerGraceIntentChange(null),\n                300\n              );\n            } else {\n              contentContext.onTriggerLeave(event);\n              if (event.defaultPrevented) return;\n              contentContext.onPointerGraceIntentChange(null);\n            }\n          })\n        ),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (props.disabled || isTypingAhead && event.key === \" \") return;\n          if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n            context.onOpenChange(true);\n            context.content?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) });\n  }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        id: subContext.contentId,\n        \"aria-labelledby\": subContext.triggerId,\n        ...subContentProps,\n        ref: composedRefs,\n        align: \"start\",\n        side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n        disableOutsidePointerEvents: false,\n        disableOutsideScroll: false,\n        trapFocus: false,\n        onOpenAutoFocus: (event) => {\n          if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n          event.preventDefault();\n        },\n        onCloseAutoFocus: (event) => event.preventDefault(),\n        onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n          if (event.target !== subContext.trigger) context.onOpenChange(false);\n        }),\n        onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n          rootContext.onClose();\n          event.preventDefault();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isKeyDownInside = event.currentTarget.contains(event.target);\n          const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n          if (isKeyDownInside && isCloseKey) {\n            context.onOpenChange(false);\n            subContext.trigger?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) }) }) });\n  }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n  return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n  return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus();\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const normalizedSearch = isRepeated ? search[0] : search;\n  const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n  let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n  const excludeCurrentMatch = normalizedSearch.length === 1;\n  if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n  const nextMatch = wrappedValues.find(\n    (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n  );\n  return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n  const { x, y } = point;\n  let inside = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const xi = polygon[i].x;\n    const yi = polygon[i].y;\n    const xj = polygon[j].x;\n    const yj = polygon[j].y;\n    const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) inside = !inside;\n  }\n  return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n  if (!area) return false;\n  const cursorPos = { x: event.clientX, y: event.clientY };\n  return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n  return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n  Anchor2 as Anchor,\n  Arrow2 as Arrow,\n  CheckboxItem,\n  Content2 as Content,\n  Group,\n  Item2 as Item,\n  ItemIndicator,\n  Label,\n  Menu,\n  MenuAnchor,\n  MenuArrow,\n  MenuCheckboxItem,\n  MenuContent,\n  MenuGroup,\n  MenuItem,\n  MenuItemIndicator,\n  MenuLabel,\n  MenuPortal,\n  MenuRadioGroup,\n  MenuRadioItem,\n  MenuSeparator,\n  MenuSub,\n  MenuSubContent,\n  MenuSubTrigger,\n  Portal,\n  RadioGroup,\n  RadioItem,\n  Root3 as Root,\n  Separator,\n  Sub,\n  SubContent,\n  SubTrigger,\n  createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/dropdown-menu/src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n  DROPDOWN_MENU_NAME,\n  [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n  const {\n    __scopeDropdownMenu,\n    children,\n    dir,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  const triggerRef = React.useRef(null);\n  const [open = false, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen,\n    onChange: onOpenChange\n  });\n  return /* @__PURE__ */ jsx(\n    DropdownMenuProvider,\n    {\n      scope: __scopeDropdownMenu,\n      triggerId: useId(),\n      triggerRef,\n      contentId: useId(),\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n    }\n  );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n    const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        id: context.triggerId,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        ...triggerProps,\n        ref: composeRefs(forwardedRef, context.triggerRef),\n        onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n          if (!disabled && event.button === 0 && event.ctrlKey === false) {\n            context.onOpenToggle();\n            if (!context.open) event.preventDefault();\n          }\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          if (disabled) return;\n          if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n          if (event.key === \"ArrowDown\") context.onOpenChange(true);\n          if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n        })\n      }\n    ) });\n  }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n  const { __scopeDropdownMenu, ...portalProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...contentProps } = props;\n    const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    const hasInteractedOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      MenuPrimitive.Content,\n      {\n        id: context.contentId,\n        \"aria-labelledby\": context.triggerId,\n        ...menuScope,\n        ...contentProps,\n        ref: forwardedRef,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n          hasInteractedOutsideRef.current = false;\n          event.preventDefault();\n        }),\n        onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n        }),\n        style: {\n          ...props.style,\n          // re-namespace exposed content custom properties\n          ...{\n            \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n            \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n            \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n            \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n            \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n          }\n        }\n      }\n    );\n  }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...groupProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n  }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...labelProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n  }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...itemProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n  }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...radioGroupProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...radioItemProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...separatorProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDropdownMenu, ...arrowProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n  const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  const [open = false, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen,\n    onChange: onOpenChange\n  });\n  return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...subTriggerProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n  const { __scopeDropdownMenu, ...subContentProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(\n    MenuPrimitive.SubContent,\n    {\n      ...menuScope,\n      ...subContentProps,\n      ref: forwardedRef,\n      style: {\n        ...props.style,\n        // re-namespace exposed content custom properties\n        ...{\n          \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n          \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n          \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n          \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n          \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n        }\n      }\n    }\n  );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n  Arrow2 as Arrow,\n  CheckboxItem2 as CheckboxItem,\n  Content2 as Content,\n  DropdownMenu,\n  DropdownMenuArrow,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuItemIndicator,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n  Group2 as Group,\n  Item2 as Item,\n  ItemIndicator2 as ItemIndicator,\n  Label2 as Label,\n  Portal2 as Portal,\n  RadioGroup2 as RadioGroup,\n  RadioItem2 as RadioItem,\n  Root2 as Root,\n  Separator2 as Separator,\n  Sub2 as Sub,\n  SubContent2 as SubContent,\n  SubTrigger2 as SubTrigger,\n  Trigger,\n  createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","/* eslint-disable camelcase */\nimport type { Link } from '@dx-ui/osc-link';\nimport type { LoginResponse } from '@dx-ui/framework-auth-provider';\n\nexport type { LoginResponse };\n\nexport type GuestLoginState = {\n  password: {\n    status: string;\n    value: string;\n  };\n  remember: { value: boolean };\n  recaptcha?: string;\n  username: {\n    override: string;\n    status: string;\n    value: string;\n  };\n};\n\n/** @deprecated - @see AuthUserInfo */\nexport type GuestUserInfo = {\n  keyIdentifier: number;\n  guestId: number;\n  domainUserName: string;\n  userRealm: string;\n  hhonorsNumber: number;\n  username: string;\n};\n\n/**\n * Thes are the login event types in the message body passed from the login form\n * @see [Window.postMessage](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)\n */\nexport const LoginFormEventType = {\n  /** Used when requesting app's digitalData object */\n  DIGITALDATA: 'digitalData',\n  /** Used when there is a login attempt */\n  LOGIN: 'onLogin',\n  /**\n   * **deprecated** - used to clear prefilled username\n   * @deprecated\n   */\n  CLEAR: 'clearUser',\n  /** Used to indicate closing of the login form */\n  CLOSE: 'onClose',\n  /** Used when login form is ready */\n  READY: 'onReady',\n  /** Used when login form height changes */\n  HEIGHT: 'onHeightChange',\n  /** Used when the login process is finished */\n  COMPLETE: 'onComplete',\n} as const;\n\nexport type GuestLoginResponse = LoginResponse & {\n  /**\n   * **deprecated** - use `type`\n   * @deprecated\n   */\n  handler?: ValuesOf<typeof LoginFormEventType>;\n  /** Login form event type. This  */\n  type?: ValuesOf<typeof LoginFormEventType>;\n  /**\n   * **deprecated** - The active state of parent window\n   * @deprecated\n   */\n  status?: string;\n  /** The height of login page */\n  height?: number;\n};\n\n/** @deprecated - @see AuthTokenInfo */\nexport type TokenInfo = {\n  scope: string;\n  token_type: string;\n  expires_in: number;\n  iat: number;\n  exp: number;\n  access_token: string;\n};\n\nexport type GuestLoginConfigOptions = {\n  /** Display the create password text. must be set with `forgetInfoLink` */\n  showCreatePassword?: boolean;\n  /** Displays the forgot password link on the login form */\n  forgetInfoLink?: Omit<Link, 'icon'>;\n  /** Displays the secure info link on the login form */\n  secureInfoLink?: Omit<Link, 'icon'>;\n  /** Displays the Join link on the login form */\n  joinLink?: Omit<Link, 'icon'>;\n  /** Displays the parent window's digitalData object */\n  digitalData?: string;\n  /** Default username **/\n  username?: string;\n};\n","import * as React from 'react';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport type { GuestLoginConfigOptions, LoginResponse, GuestLoginResponse } from './login.types';\nimport { LoginFormEventType } from './login.types';\n\ntype LoginIFrame = React.IframeHTMLAttributes<HTMLIFrameElement> & {\n  /** Title of the iframe */\n  title: string;\n  /** The source for the iframe to use */\n  frameSrc: string;\n  /**\n   * Callback for login attempts. Handles both success and error.\n   *\n   * > NOTE: `onLogin` and `onLoginError` are **DEPRECATED** in favor of this prop\n   * */\n  onLoginAttempt: (response: LoginResponse<any>) => void; // eslint-disable-line @typescript-eslint/no-explicit-any\n  /** Options for the iframe */\n  options?: GuestLoginConfigOptions;\n  /** Handler for closing, if used in a modal */\n  onClose?: () => void;\n  /**\n   * **deprecated** - Do not use - use `onLoginAttempt`\n   * @deprecated\n   */\n  onLogin?: (data: NonNullable<LoginResponse['data']>) => void;\n  /**\n   * **deprecated** - Do not use - use `onLoginAttempt`\n   * @deprecated\n   */\n  onLoginError?: (error: NonNullable<LoginResponse['error']>) => void;\n};\n\n/**\n * This component can be used separately and provides the communication logic between the parent windown and the iframe.\n *\n * `import { LoginIFrame } from '@dx-ui/osc-login'`\n */\nexport const LoginIFrame: React.FC<React.PropsWithChildren<LoginIFrame>> = ({\n  frameSrc,\n  options = {},\n  onClose,\n  onLoginAttempt,\n  onLogin,\n  title,\n  onLoginError,\n  ...rest\n}: LoginIFrame) => {\n  const readyCount = React.useRef(0);\n  const iframeRef = React.useRef<HTMLIFrameElement>(null);\n  const noOptions = Object.keys(options).length === 0;\n  const [frameHeight, setFrameHeight] = React.useState(291.25);\n\n  const handleMessage = React.useCallback(\n    (event: MessageEvent<GuestLoginResponse>) => {\n      const {\n        data: { handler, type, height, data, error, status },\n      } = event;\n      // @todo remove - Keeping status, handler for backwards compatibility\n      if (\n        (status === 'ready' ||\n          type === LoginFormEventType.HEIGHT ||\n          handler === LoginFormEventType.HEIGHT) &&\n        height\n      ) {\n        readyCount.current += 1;\n        if (noOptions || readyCount.current > 1) {\n          setFrameHeight(height);\n        }\n      }\n\n      if (type === LoginFormEventType.DIGITALDATA) {\n        options.digitalData = JSON.stringify(window.digitalData);\n        sendMessageToIframe();\n      }\n\n      // @todo remove - Keeping handler for backwards compatibility\n      if (type === LoginFormEventType.CLOSE || handler === LoginFormEventType.CLOSE) {\n        onClose?.();\n      }\n\n      // @todo remove - Keeping handler for backwards compatibility\n      if (type === LoginFormEventType.LOGIN || handler === LoginFormEventType.LOGIN) {\n        if (error) {\n          onLoginError?.(error);\n          onLoginAttempt({ error });\n        }\n        if (data) {\n          onLogin?.(data);\n          onLoginAttempt({ data });\n        }\n      }\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    []\n  );\n\n  const sendMessageToIframe = () => {\n    if (iframeRef.current && iframeRef.current.contentWindow) {\n      iframeRef.current.contentWindow.postMessage(options, frameSrc);\n    }\n  };\n\n  React.useEffect(() => {\n    if (isBrowser) {\n      window.addEventListener('message', handleMessage);\n    }\n    return () => {\n      window.removeEventListener('message', handleMessage);\n    };\n  }, [handleMessage]);\n\n  return (\n    <div className=\"w-full py-2\">\n      <iframe\n        onLoad={sendMessageToIframe}\n        ref={iframeRef}\n        src={frameSrc}\n        title={title}\n        height={frameHeight}\n        width=\"100%\"\n        {...rest}\n      />\n    </div>\n  );\n};\n\nLoginIFrame.displayName = 'LoginIFrame';\n\nexport default LoginIFrame;\n","import { forwardRef } from 'react';\n\nconst AccountIcon = forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n  ({ width = 20, height = 20, ...rest }, ref) => (\n    <svg\n      ref={ref}\n      role=\"img\"\n      aria-hidden\n      height={height}\n      width={width}\n      viewBox=\"2 3 20 17\"\n      {...rest}\n    >\n      <g fill=\"#666\" className=\"fill-current\">\n        <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n        <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n      </g>\n    </svg>\n  )\n);\n\nAccountIcon.displayName = 'AccountIcon';\n\nexport { AccountIcon };\nexport default AccountIcon;\n","import * as React from 'react';\nimport { LoginIFrame } from './frame';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport type { GuestLoginConfigOptions, LoginResponse } from './login.types';\nimport { useTranslation } from 'next-i18next';\nimport { AccountIcon } from './login.icon';\nimport cx from 'classnames';\nimport { sendReward } from '@dx-ui/framework-conductrics';\n\nexport type LoginBaseProps = {\n  /** Source url for the login page */\n  frameSrc: string;\n  /** Name of the button to display */\n  buttonName?: string;\n  /**\n   * Set the classNames for the button element\n   */\n  buttonClassName?: string;\n  /** Specify the title for the iframe element */\n  title: string;\n  /** Display options for the login page */\n  options?: GuestLoginConfigOptions;\n  /** Provides additional styling to the iframe */\n  className?: string;\n  /** Provides a parameter for disabling the icon */\n  hideIcon?: boolean;\n  /** callback to run after login attempt */\n  onLoginAttempt: (response: LoginResponse) => Promise<void>;\n  /** function to run on open */\n  onOpen?: () => void;\n};\n\nexport type LoginProps = LoginBaseProps & React.HTMLAttributes<HTMLIFrameElement>;\n\n/**\n * A modal that wraps the LoginIFrame component.\n *\n * `import { Login } from '@dx-ui/osc-login'`\n */\nexport const Login: React.FC<React.PropsWithChildren<LoginBaseProps>> = ({\n  options = {},\n  className = '',\n  title,\n  frameSrc,\n  buttonName,\n  buttonClassName,\n  hideIcon,\n  onLoginAttempt,\n  onOpen,\n}) => {\n  const [t] = useTranslation('osc-login');\n  const [showDialog, setShowDialog] = React.useState<boolean>(false);\n  const open = () => {\n    onOpen?.();\n    sendReward('nav-sign-in-click');\n    setShowDialog(true);\n  };\n  const close = () => setShowDialog(false);\n  const handleLogin = async (response: LoginResponse) => {\n    await onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n\n  return (\n    <Dialog\n      title={title}\n      isOpen={showDialog}\n      onDismiss={close}\n      size=\"md\"\n      dialogTrigger={\n        <button\n          type=\"button\"\n          className={cx(buttonClassName, {\n            'btn btn-text-text sm:btn-xl flex items-center brand-wa:!font-normal': !buttonClassName,\n          })}\n          onClick={open}\n        >\n          <span>{buttonName || t('signIn')}</span>\n          {!hideIcon ? (\n            <span\n              aria-hidden\n              className=\"bg-text text-text-inverse ms-2 flex size-5 items-center justify-center rounded-full\"\n            >\n              <AccountIcon className=\"size-3\" />\n            </span>\n          ) : null}\n        </button>\n      }\n    >\n      <LoginIFrame\n        frameSrc={frameSrc}\n        options={options}\n        data-e2e=\"loginIframe\"\n        onLoginAttempt={handleLogin}\n        onClose={close}\n        title={title}\n        className={className}\n      />\n    </Dialog>\n  );\n};\n\nLogin.displayName = 'Login';\n\nexport default Login;\n","export * from './lib/login';\nexport * from './lib/login.icon';\nexport * from './lib/frame';\nexport * from './lib/login.types';\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 GetLanguageSelectorOneLinkConfigDocument = {\n  operationName: 'featureConfigs',\n  operationString: `query featureConfigs {\n  featureConfigs(names: [\"config-ui-translate-onelink\"]) {\n    config\n    name\n  }\n}`,\n  originalOpName: 'getLanguageSelectorOneLinkConfig',\n};\nexport function useGetLanguageSelectorOneLinkConfigQuery<\n  TData = Types.GetLanguageSelectorOneLinkConfigQuery,\n  TError = DXError\n>(\n  variables?: Types.GetLanguageSelectorOneLinkConfigQueryVariables,\n  options?: Omit<\n    UseQueryOptions<Types.GetLanguageSelectorOneLinkConfigQuery, TError, TData>,\n    'queryKey'\n  >\n) {\n  return useQuery<Types.GetLanguageSelectorOneLinkConfigQuery, TError, TData>({\n    queryKey: [GetLanguageSelectorOneLinkConfigDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGetLanguageSelectorOneLinkConfigQuery(\n  queryClient: QueryClient,\n  variables?: Types.GetLanguageSelectorOneLinkConfigQueryVariables,\n  options?: FetchQueryOptions<Types.GetLanguageSelectorOneLinkConfigQuery>\n) {\n  return queryClient.fetchQuery<Types.GetLanguageSelectorOneLinkConfigQuery>({\n    queryKey: [GetLanguageSelectorOneLinkConfigDocument, variables],\n    ...options,\n  });\n}\n\nexport const GetLanguageSelectorHotelDataDocument = {\n  operationName: 'hotel',\n  operationString: `query hotel($ctyhocn: String!) {\n  hotel(ctyhocn: $ctyhocn, language: \"en\") {\n    localization {\n      languageSupport {\n        label\n        bookingUrl\n        code\n        siteUrl\n      }\n    }\n  }\n}`,\n  originalOpName: 'getLanguageSelectorHotelData',\n};\nexport function useGetLanguageSelectorHotelDataQuery<\n  TData = Types.GetLanguageSelectorHotelDataQuery,\n  TError = DXError\n>(\n  variables: Types.GetLanguageSelectorHotelDataQueryVariables,\n  options?: Omit<\n    UseQueryOptions<Types.GetLanguageSelectorHotelDataQuery, TError, TData>,\n    'queryKey'\n  >\n) {\n  return useQuery<Types.GetLanguageSelectorHotelDataQuery, TError, TData>({\n    queryKey: [GetLanguageSelectorHotelDataDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGetLanguageSelectorHotelDataQuery(\n  queryClient: QueryClient,\n  variables: Types.GetLanguageSelectorHotelDataQueryVariables,\n  options?: FetchQueryOptions<Types.GetLanguageSelectorHotelDataQuery>\n) {\n  return queryClient.fetchQuery<Types.GetLanguageSelectorHotelDataQuery>({\n    queryKey: [GetLanguageSelectorHotelDataDocument, variables],\n    ...options,\n  });\n}\n","import {\n  GetLanguageSelectorHotelDataDocument,\n  GetLanguageSelectorOneLinkConfigDocument,\n} from './generated/queries';\n\nexport * from './generated/queries';\nexport * from './generated/types';\n\nexport const GET_HOTEL_LANGUAGE_SELECTOR_DATA_ORIGINAL_OP_NAME =\n  GetLanguageSelectorHotelDataDocument.originalOpName;\nexport const GET_LANGUAGE_SELECTOR_ONE_LINK_CONFIG_DOCUMENT_ORIGINAL_OP_NAME =\n  GetLanguageSelectorOneLinkConfigDocument.originalOpName;\n\nexport const LANGUAGE_SELECTOR_ORIGINAL_OP_NAMES = [\n  GET_HOTEL_LANGUAGE_SELECTOR_DATA_ORIGINAL_OP_NAME,\n  GET_LANGUAGE_SELECTOR_ONE_LINK_CONFIG_DOCUMENT_ORIGINAL_OP_NAME,\n];\n","export const LANGUAGE_CODE_NAMES = {\n  ar: 'العربية',\n  bg: 'Български',\n  cs: 'Česky',\n  da: 'Dansk',\n  de: 'Deutsch',\n  en: 'English',\n  es: 'Español',\n  fi: 'Suomi',\n  fr: 'Français',\n  id: 'Bahasa Indonesia',\n  it: 'Italiano',\n  ja: '日本語',\n  ko: '한국어',\n  nl: 'Nederlands',\n  no: 'Norsk',\n  pl: 'Polski',\n  pt: 'Português',\n  ro: 'Română',\n  ru: 'Pусский',\n  sv: 'Svenska',\n  th: 'ไทย',\n  tr: 'Türkçe',\n  vi: 'Tiếng Việt',\n  'zh-hans': '简体中文',\n  'zh-hant': '繁體中文',\n} as const;\n","import { useMemo } from 'react';\nimport type { OneLinkConfig } from '@dx-ui/framework-i18n';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { useIsClient } from 'usehooks-ts';\nimport {\n  useGetLanguageSelectorOneLinkConfigQuery,\n  useGetLanguageSelectorHotelDataQuery,\n} from '@dx-ui/queries-osc-language-selector';\nimport type { GetLanguageSelectorHotelDataQuery } from '@dx-ui/queries-osc-language-selector';\nimport { LANGUAGE_CODE_NAMES } from '../osc-language-code-names';\nimport type { LanguageSelectorPropsBase } from '../osc-language-selector';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\nimport { RuleEngine } from '@dx-shared/rule-engine';\nimport { logWarning } from '@dx-ui/framework-logger';\n\ntype LanguagesDict = { label: string; value: string; href: string; opensNewTab: boolean }[];\n\ntype SupportedLanguages = NonNullable<\n  NonNullable<GetLanguageSelectorHotelDataQuery['hotel']>['localization']\n>['languageSupport'];\n\nexport function useLanguageSelectorLanguages({\n  appName,\n  ctyhocn,\n  removeUrlParams,\n  urlOverrides,\n}: {\n  appName: string;\n  ctyhocn: string;\n  removeUrlParams?: boolean;\n  urlOverrides?: LanguageSelectorPropsBase['urlOverrides'];\n}) {\n  const { data: featureConfigsData, isFetching: featureConfigsLoading } =\n    useGetLanguageSelectorOneLinkConfigQuery();\n  const { data: hotelData, isFetching: hotelDataLoading } = useGetLanguageSelectorHotelDataQuery(\n    {\n      ctyhocn: ctyhocn.toUpperCase(),\n    },\n    {\n      enabled: !!ctyhocn,\n    }\n  );\n  const isClient = useIsClient();\n  const loading = !isClient || featureConfigsLoading || hotelDataLoading;\n\n  const oneLinkLanguagesConfig: OneLinkConfig = featureConfigsData?.featureConfigs?.find(\n    (fc) => fc.name === 'config-ui-translate-onelink'\n  )?.config;\n\n  let oneLinkLanguages: string[] = [];\n\n  // begin old config logic - Deprecated\n  const appWhitelist = oneLinkLanguagesConfig?.whitelist?.[appName];\n  const languagesObj = oneLinkLanguagesConfig?.languages;\n  const languagesToExclude = appWhitelist\n    ? (Object.keys(appWhitelist) as (keyof typeof appWhitelist)[]).filter(\n        (language) => !appWhitelist?.[language]?.includes(ctyhocn.toUpperCase())\n      )\n    : [];\n  const supportsLanguagesObjConfig = !!appName && !!languagesObj;\n  if (supportsLanguagesObjConfig) {\n    oneLinkLanguages = Object.entries(languagesObj)\n      .filter(\n        ([lang, appsArray]) => appsArray?.includes(appName) && !languagesToExclude.includes(lang)\n      )\n      .map(([lang]) => lang);\n  }\n  // end old config logic\n\n  // begin new config logic\n  const conditions = oneLinkLanguagesConfig?.conditions;\n  const supportedLanguages = oneLinkLanguagesConfig?.supportedLanguages;\n  const ruleEngine = conditions\n    ? new RuleEngine({ name: 'onelink-language-selector', conditions })\n    : null;\n  const supportsRuleEngineConfig = !!appName && !!conditions && !!supportedLanguages && ruleEngine;\n  const url = isBrowser ? window.location.href : '';\n  if (supportsRuleEngineConfig) {\n    oneLinkLanguages = supportedLanguages.filter((language) =>\n      ruleEngine.run({ appName, language, url })\n    );\n  }\n  // end new config logic\n\n  const cmsLanguages = hotelData?.hotel?.localization?.languageSupport\n    ? hotelData?.hotel?.localization?.languageSupport.reduce((acc, language) => {\n        if (\n          !oneLinkLanguages?.includes(getI18nSafeLangCode(language?.code || '')) &&\n          getI18nSafeLangCode(language?.code || '') !== 'en'\n        ) {\n          acc.push({\n            ...language,\n            code: getI18nSafeLangCode(language?.code || ''),\n          });\n        }\n        return acc;\n      }, [] as SupportedLanguages)\n    : ([] as SupportedLanguages);\n\n  const cmsFullSiteLanguages = cmsLanguages.filter((lang) => lang?.siteUrl);\n  const cmsResOnlyLanguages = cmsLanguages.filter((lang) => lang?.bookingUrl);\n  const ENOverride = urlOverrides?.fullSite?.['en'];\n  const fullSiteLanguages: LanguagesDict = [\n    {\n      label: LANGUAGE_CODE_NAMES['en'],\n      value: 'en',\n      href: (ENOverride || makeLanguageUrl('en', removeUrlParams)) ?? '',\n      opensNewTab: !!ENOverride,\n    },\n    ...oneLinkLanguages.map((lang) => {\n      const override = urlOverrides?.fullSite?.[lang as keyof typeof LANGUAGE_CODE_NAMES];\n      const hasOverride = !!override;\n      return {\n        label: LANGUAGE_CODE_NAMES[lang as keyof typeof LANGUAGE_CODE_NAMES],\n        value: lang,\n        href: (override || makeLanguageUrl(lang, removeUrlParams)) ?? '',\n        opensNewTab: hasOverride,\n      };\n    }),\n    ...cmsFullSiteLanguages.map((lang) => ({\n      label: LANGUAGE_CODE_NAMES[lang?.code as keyof typeof LANGUAGE_CODE_NAMES] || lang.label,\n      value: lang?.code || '',\n      href:\n        urlOverrides?.fullSite?.[lang?.code as keyof typeof LANGUAGE_CODE_NAMES] ||\n        lang?.siteUrl ||\n        '',\n      opensNewTab: true,\n    })),\n  ];\n  const resOnlyLanguages: LanguagesDict = [\n    ...cmsResOnlyLanguages.map((lang) => ({\n      label: LANGUAGE_CODE_NAMES[lang?.code as keyof typeof LANGUAGE_CODE_NAMES] || lang.label,\n      value: lang?.code || '',\n      href:\n        urlOverrides?.resOnly?.[lang.code as keyof typeof LANGUAGE_CODE_NAMES] ||\n        lang?.bookingUrl ||\n        '',\n      opensNewTab: true,\n    })),\n  ];\n\n  const supportedFullSiteLanguages = fullSiteLanguages.map((lang) => lang.value);\n  const netNewFullSiteLanguages = Object.keys(urlOverrides?.fullSite || {}).filter(\n    (lang) => !supportedFullSiteLanguages.includes(lang)\n  );\n\n  if (netNewFullSiteLanguages.length) {\n    fullSiteLanguages.push(\n      ...netNewFullSiteLanguages.map((lang) => ({\n        label: LANGUAGE_CODE_NAMES[lang as keyof typeof LANGUAGE_CODE_NAMES],\n        value: lang,\n        href: urlOverrides?.fullSite?.[lang as keyof typeof LANGUAGE_CODE_NAMES] || '',\n        opensNewTab: true,\n      }))\n    );\n  }\n\n  const supportedResOnlyLanguages = resOnlyLanguages.map((lang) => lang.value);\n  const netNewResOnlyLanguages = Object.keys(urlOverrides?.resOnly || {}).filter(\n    (lang) =>\n      !supportedResOnlyLanguages.includes(lang) && !supportedFullSiteLanguages.includes(lang)\n  );\n\n  if (netNewResOnlyLanguages.length) {\n    resOnlyLanguages.push(\n      ...netNewResOnlyLanguages.map((lang) => ({\n        label: LANGUAGE_CODE_NAMES[lang as keyof typeof LANGUAGE_CODE_NAMES],\n        value: lang,\n        href: urlOverrides?.resOnly?.[lang as keyof typeof LANGUAGE_CODE_NAMES] || '',\n        opensNewTab: true,\n      }))\n    );\n  }\n\n  const sortedFullSiteLanguages = sortRtlFirst(\n    filterLanguagesWithLabel(fullSiteLanguages).sort((a, b) => a.label.localeCompare(b.label))\n  );\n  const sortedResOnlyLanguages = sortRtlFirst(\n    filterLanguagesWithLabel(resOnlyLanguages).sort((a, b) => a.label.localeCompare(b.label))\n  );\n  const allLanguages = useMemo(\n    () => [...sortedFullSiteLanguages, ...sortedResOnlyLanguages],\n    [sortedFullSiteLanguages, sortedResOnlyLanguages]\n  );\n\n  return {\n    allLanguages,\n    loading,\n    sortedFullSiteLanguages,\n    sortedResOnlyLanguages,\n  };\n}\n\nexport function filterLanguagesWithLabel(languages: LanguagesDict) {\n  return languages.filter((lang) => {\n    if (!lang.label) {\n      logWarning(\n        'useLanguageSelectorLanguages',\n        `Language selector label missing for ${lang.value}`\n      );\n    }\n    return lang.label;\n  });\n}\n\nexport function getI18nSafeLangCode(code: string) {\n  if (code === 'zh_CN') {\n    return 'zh-hans';\n  }\n  if (code === 'zh_HK') {\n    return 'zh-hant';\n  }\n  const safeLangCode = code.split('_')[0];\n  return safeLangCode?.toLowerCase() ?? 'en';\n}\n\nexport function makeLanguageUrl(newLocale: string, removeUrlParams?: boolean) {\n  const languageUrl = isBrowser\n    ? window.location.href.replace(\n        RegExp(`/${window.location.pathname.split('/')[1]}/`),\n        `/${newLocale}/`\n      )\n    : '';\n  return removeUrlParams ? languageUrl.split('?')[0] : languageUrl;\n}\n\nexport function sortRtlFirst(languages: LanguagesDict) {\n  const rtlLangs = languages.filter((lang) => isRtl(lang.value));\n  const ltrLangs = languages.filter((lang) => !isRtl(lang.value));\n  return [...rtlLangs, ...ltrLangs];\n}\n","import type { ElementRef } from 'react';\nimport { useEffect, useRef } from 'react';\nimport * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { useLanguageSelectorLanguages } from './hooks/useLanguageSelectorLanguages';\nimport type { PopupContext } from '@dx-ui/osc-popup';\nimport { Popup, PopupButton, PopupContent, usePopup } from '@dx-ui/osc-popup';\nimport { LANGUAGE_CODE_NAMES } from './osc-language-code-names';\nimport { Link } from '@dx-ui/osc-link';\nimport classnames from 'classnames';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport set from 'lodash/set';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\nimport { getKeyDownNavigation } from '@dx-ui/utilities-accessibility';\nimport { getSafeLanguage } from '@dx-ui/framework-react-query';\n\ntype UrlOverride = {\n  [locale in keyof typeof LANGUAGE_CODE_NAMES]?: string;\n};\n\nexport type LanguageSelectorPropsBase = {\n  appName: string;\n  buttonOptions?: {\n    className?: string;\n    styles?: React.CSSProperties;\n    hoverStyles?: React.CSSProperties;\n  };\n  ctyhocn?: string;\n  labelOptions?: {\n    className?: string;\n    styles?: React.CSSProperties;\n  };\n  locale: string;\n  theme?: Exclude<CmsBrandComponentTheme, 'light'>;\n  onLanguageSelection?: (languageValue: string) => void;\n  popupOptions?: {\n    removeUrlParams?: boolean;\n    includeTitles?: boolean;\n  };\n  urlOverrides?: {\n    fullSite?: UrlOverride;\n    resOnly?: UrlOverride;\n  };\n  wrapperClassName?: string;\n};\n\nexport type LanguageSelectorProps = LanguageSelectorPropsBase & React.ComponentProps<'div'>;\n\nexport function LanguageSelector({\n  appName = '',\n  buttonOptions,\n  ctyhocn = '',\n  locale = 'en',\n  labelOptions,\n  popupOptions,\n  wrapperClassName,\n  urlOverrides,\n  theme,\n  onLanguageSelection,\n  ...rest\n}: LanguageSelectorProps) {\n  const [selectedLanguage, setSelectedLanguage] = React.useState<{\n    code: string;\n    href: string;\n  }>();\n  const [buttonHover, setButtonHover] = React.useState(false);\n  const { t } = useTranslation('osc-language-selector');\n  const popupButtonRef = useRef<ElementRef<'button'>>(null);\n  const linksContainerRef = useRef<ElementRef<'div'>>(null);\n  const { loading, allLanguages, sortedFullSiteLanguages, sortedResOnlyLanguages } =\n    useLanguageSelectorLanguages({\n      appName,\n      ctyhocn,\n      removeUrlParams: popupOptions?.removeUrlParams,\n      urlOverrides,\n    });\n\n  useEffect(() => {\n    if (!loading && !selectedLanguage?.code) {\n      const getSelectedLanguage = (locale: string) => ({\n        code: locale,\n        href: allLanguages.find((lang) => lang.value === locale)?.href || '',\n      });\n\n      setSelectedLanguage(getSelectedLanguage(getSafeLanguage(locale) ?? ''));\n    }\n  }, [allLanguages, loading, locale, selectedLanguage?.code]);\n\n  const focusFirstLink = React.useCallback(() => {\n    linksContainerRef.current?.querySelector('a')?.focus();\n  }, []);\n\n  const handleLinkKeyDown = getKeyDownNavigation({\n    elements: Array.from(linksContainerRef.current?.querySelectorAll('a') || []),\n    initiatingRef: popupButtonRef,\n  });\n\n  const trackLinkClick = React.useCallback((language: string) => {\n    if (window?.digitalData && window?._satellite) {\n      set(window.digitalData, 'action.clickID', 'languageswitch');\n      set(window.digitalData, 'page.pageInfo.language', language);\n      window._satellite?.track?.('global_click');\n    } else {\n      console.warn('digitalData or _satellite not found'); // eslint-disable-line no-console\n    }\n  }, []);\n\n  return (\n    <div className={classnames('flex gap-2 text-sm sm:text-base', wrapperClassName)} {...rest}>\n      <Popup>\n        <PopupContextState>\n          {({ isOpen }) => (\n            <>\n              <div className=\"flex items-baseline gap-2\">\n                <span\n                  className={classnames('flex font-semibold', labelOptions?.className, {\n                    'text-text-inverse': theme === 'dark',\n                  })}\n                  style={labelOptions?.styles}\n                  aria-hidden=\"true\"\n                >\n                  {t('language')}\n                </span>\n                {loading ? (\n                  <div className=\"bg-border h-6 w-24 animate-pulse self-center\" />\n                ) : (\n                  <PopupButton\n                    ref={popupButtonRef}\n                    className={classnames('inline-flex items-center', buttonOptions?.className, {\n                      'text-text-inverse': theme === 'dark',\n                    })}\n                    onClick={() => sendReward('engaged-language-selector')}\n                    onArrowDownWhenOpen={focusFirstLink}\n                    style={{\n                      ...buttonOptions?.styles,\n                      ...(buttonHover ? buttonOptions?.hoverStyles : null),\n                    }}\n                    onMouseEnter={() => setButtonHover(true)}\n                    onMouseLeave={() => setButtonHover(false)}\n                  >\n                    <span className=\"sr-only\">{t('language')}</span>\n                    {selectedLanguage?.code\n                      ? LANGUAGE_CODE_NAMES[\n                          selectedLanguage.code as keyof typeof LANGUAGE_CODE_NAMES\n                        ]\n                      : null}{' '}\n                    <DownArrowIcon\n                      className={classnames('size-6 transition-all', {\n                        '-scale-y-100': isOpen,\n                        'text-text-inverse': theme === 'dark',\n                      })}\n                    />\n                  </PopupButton>\n                )}\n              </div>\n              {loading ? null : (\n                <PopupContent popupStyles={{ maxHeight: '80%', overflowY: 'auto' }}>\n                  <div\n                    ref={linksContainerRef}\n                    className=\"OneLinkKeepLinks flex min-w-[192px] flex-col gap-2\"\n                  >\n                    {sortedFullSiteLanguages.length ? (\n                      <div>\n                        {popupOptions?.includeTitles ? (\n                          <p className=\"border-border mb-1 border-b pb-2 font-bold\">\n                            {t('hotelSite')}\n                          </p>\n                        ) : null}\n                        <ul className=\"divide-border divide-y\">\n                          {sortedFullSiteLanguages.map((lang) => (\n                            <ListItem\n                              key={lang.value}\n                              label={lang.label}\n                              language={lang.value}\n                              linkProps={{\n                                onClick: () => {\n                                  trackLinkClick(lang.value);\n                                  onLanguageSelection?.(lang.value);\n                                },\n                                onKeyDown: handleLinkKeyDown,\n                                isNewWindow: lang.opensNewTab,\n                                url: lang.href,\n                              }}\n                            />\n                          ))}\n                        </ul>\n                      </div>\n                    ) : null}\n                    {sortedResOnlyLanguages.length ? (\n                      <div>\n                        {popupOptions?.includeTitles ? (\n                          <p className=\"border-border mb-1 border-b pb-2 font-bold\">\n                            {t('bookingOnly')}\n                          </p>\n                        ) : null}\n                        <ul>\n                          {sortedResOnlyLanguages.map((lang) => (\n                            <ListItem\n                              key={lang.value}\n                              label={lang.label}\n                              language={lang.value}\n                              linkProps={{\n                                onClick: () => trackLinkClick(lang.value),\n                                onKeyDown: handleLinkKeyDown,\n                                isNewWindow: lang.opensNewTab,\n                                url: lang.href,\n                              }}\n                            />\n                          ))}\n                        </ul>\n                      </div>\n                    ) : null}\n                  </div>\n                </PopupContent>\n              )}\n            </>\n          )}\n        </PopupContextState>\n      </Popup>\n    </div>\n  );\n}\n\nfunction ListItem({\n  label,\n  language,\n  linkProps,\n}: {\n  label: string;\n  language: string;\n  linkProps: React.ComponentProps<typeof Link>;\n}) {\n  return (\n    <li\n      key={`popup-${language}`}\n      className={classnames('flex py-2', {\n        'justify-end': isRtl(language),\n      })}\n      lang={language}\n    >\n      <bdi>\n        <Link rel=\"noopener noreferrer\" {...linkProps}>\n          {label}{' '}\n        </Link>\n      </bdi>\n    </li>\n  );\n}\n\nfunction PopupContextState({ children }: { children: (args0: PopupContext) => React.ReactNode }) {\n  const context = usePopup();\n  return children(context);\n}\n\nfunction DownArrowIcon(props: React.ComponentProps<'svg'>) {\n  return (\n    <svg viewBox=\"0 0 31 31\" version=\"1.1\" {...props}>\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"transparent\" fillRule=\"evenodd\">\n        <g transform=\"translate(1, 1)\" strokeWidth=\"2\" stroke=\"currentColor\">\n          <polyline strokeLinecap=\"round\" points=\"9,12 14.5,18 20,12\" />\n        </g>\n      </g>\n    </svg>\n  );\n}\n\nexport default LanguageSelector;\n","export * from './lib/osc-language-selector';\n","import { useEffect, useRef, useState } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport cx from 'classnames';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\n\nexport type DrawerPanelProps = {\n  isOpen: boolean;\n  children: React.ReactNode;\n  alignment: 'left' | 'right';\n  /**\n   *  Id of the body of your entire app, used to select for all dom elements within app without affecting elements that sit outside the app\n   */\n  appWrapperId: string;\n  /**\n   *  Id of the wrapper element you want to keep interactive while the panel is open. Example: Navigation header while nav menu is open\n   */\n  interactiveElementWrapperId: string;\n  panelProps?: React.ComponentProps<'div'>;\n  /**\n   * Allows you to choose a specific point to return focus to or allow for default returnFocus\n   */\n  returnFocus?: () => boolean;\n};\n\nexport const DrawerPanel = ({\n  isOpen,\n  children,\n  alignment,\n  appWrapperId,\n  interactiveElementWrapperId,\n  panelProps,\n  returnFocus,\n}: DrawerPanelProps) => {\n  const [isRightPanelVisible, setIsRightPanelVisible] = useState(false);\n  useEffect(() => {\n    if (!isOpen) {\n      if (alignment === 'right') setIsRightPanelVisible(false);\n      document.body.style.overflow = 'auto';\n      if (nonInteractiveElements.current)\n        nonInteractiveElements.current.forEach((nonInteractiveElement) => {\n          if (nonInteractiveElement) {\n            nonInteractiveElement.removeAttribute('aria-hidden');\n          }\n        });\n    } else {\n      document.body.style.overflow = 'hidden';\n      const nonInteractiveElems = document?.querySelectorAll(\n        // children of element with interactiveElementWrapperId will not have aria-hidden=\"true\" applied\n        `#${appWrapperId} *:not(#${interactiveElementWrapperId}, #${interactiveElementWrapperId} *):not([aria-hidden=\"true\"])`\n      );\n      nonInteractiveElems.forEach((nonInteractiveElement) => {\n        if (nonInteractiveElement) {\n          nonInteractiveElement.setAttribute('aria-hidden', 'true');\n        }\n      });\n      /** interactiveElementWrapper should always be available in the accessibility tree,\n       *  the selector above will also set aria-hidden on any parents of the interactiveElementWrapper in between it and element with appWrapperId\n       * This function removes aria hidden from the drawer's parents */\n      let drawerWrapper: Element | null = document?.querySelector(\n        `#${interactiveElementWrapperId}`\n      );\n      const els: Element[] = [];\n      while (drawerWrapper) {\n        els.push(drawerWrapper);\n        drawerWrapper = drawerWrapper.parentElement;\n      }\n      els?.forEach((navParentElement) => {\n        if (navParentElement) {\n          navParentElement.removeAttribute('aria-hidden');\n        }\n      });\n      nonInteractiveElements.current = nonInteractiveElems;\n    }\n  }, [isOpen, alignment, appWrapperId, interactiveElementWrapperId]);\n\n  const nonInteractiveElements = useRef<NodeListOf<Element> | undefined>();\n\n  return (\n    <FocusLock disabled={!isOpen} returnFocus={returnFocus ? returnFocus : true}>\n      <div\n        className={cx(\n          'bg-bg border-border brand-ou:bg-secondary absolute top-0 z-50 h-screen w-80 overflow-y-scroll border-t transition-all',\n          {\n            'ltr:motion-safe:animate-slideInLeft rtl:motion-safe:animate-slideInRight':\n              isOpen && alignment === 'left',\n            'ltr:motion-safe:animate-slideInRight rtl:motion-safe:animate-slideInLeft':\n              isOpen && alignment === 'right',\n            'end-0': alignment === 'right',\n            'hidden -translate-x-full': !isOpen,\n          }\n        )}\n        onAnimationEnd={() => {\n          if (alignment === 'right') setIsRightPanelVisible(true);\n        }}\n        hidden={!isOpen}\n        data-testid={`panelWindow-${alignment}`}\n        {...panelProps}\n      >\n        {/* Right side drawer panel needs to be faded in after animation is completed to avoid focus jump. */}\n        {alignment === 'right' ? (\n          isRightPanelVisible || (getIsReducedMotion() && isOpen) ? (\n            <div className=\"animate-fadein\">{children}</div>\n          ) : null\n        ) : (\n          children\n        )}\n      </div>\n    </FocusLock>\n  );\n};\n","export * from './lib/drawer';\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 Smb_MemberIdAndStatusDocument = {\n  operationName: 'programAccounts',\n  operationString: `query programAccounts($guestId: BigInt!, $language: String!) {\n  programAccounts(guestId: $guestId, language: $language) {\n    accountId\n    accountName\n    accountStatus\n    memberId\n    memberStatus\n  }\n}`,\n  originalOpName: 'smb_MemberIdAndStatus',\n};\nexport function useSmb_MemberIdAndStatusQuery<\n  TData = Types.Smb_MemberIdAndStatusQuery,\n  TError = DXError\n>(\n  variables: Types.Smb_MemberIdAndStatusQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Smb_MemberIdAndStatusQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Smb_MemberIdAndStatusQuery, TError, TData>({\n    queryKey: [Smb_MemberIdAndStatusDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideSmb_MemberIdAndStatusQuery(\n  queryClient: QueryClient,\n  variables: Types.Smb_MemberIdAndStatusQueryVariables,\n  options?: FetchQueryOptions<Types.Smb_MemberIdAndStatusQuery>\n) {\n  return queryClient.fetchQuery<Types.Smb_MemberIdAndStatusQuery>({\n    queryKey: [Smb_MemberIdAndStatusDocument, variables],\n    ...options,\n  });\n}\n\nexport const Smb_ProgramAccountMemberDocument = {\n  operationName: 'programAccountMember',\n  operationString: `query programAccountMember($guestId: BigInt!, $language: String!, $input: ProgramAccountsSmbMemberInput!) {\n  programAccountMember(guestId: $guestId, language: $language, input: $input) {\n    accountId\n    guestId\n    emailAddress: emailAddressMasked\n    emailLastVerifiedDateFmt(language: $language, format: \"short\")\n    memberId\n    status\n    role\n  }\n}`,\n  originalOpName: 'smb_ProgramAccountMember',\n};\nexport function useSmb_ProgramAccountMemberQuery<\n  TData = Types.Smb_ProgramAccountMemberQuery,\n  TError = DXError\n>(\n  variables: Types.Smb_ProgramAccountMemberQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Smb_ProgramAccountMemberQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Smb_ProgramAccountMemberQuery, TError, TData>({\n    queryKey: [Smb_ProgramAccountMemberDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideSmb_ProgramAccountMemberQuery(\n  queryClient: QueryClient,\n  variables: Types.Smb_ProgramAccountMemberQueryVariables,\n  options?: FetchQueryOptions<Types.Smb_ProgramAccountMemberQuery>\n) {\n  return queryClient.fetchQuery<Types.Smb_ProgramAccountMemberQuery>({\n    queryKey: [Smb_ProgramAccountMemberDocument, variables],\n    ...options,\n  });\n}\n","import { sendReward } from '@dx-ui/framework-conductrics';\nimport set from 'lodash/set';\n\nimport { useAuth } from '@dx-ui/framework-auth-provider';\n\nimport {\n  useSmb_MemberIdAndStatusQuery,\n  useSmb_ProgramAccountMemberQuery,\n} from '../lib/gql/queries';\nimport { env } from '@dx-ui/framework-env';\nimport type { Mvts, UserLinks } from './types';\nimport { useRouter } from 'next/router';\n\nconst navigationInteractionGoal = 'g-6gRqwMh3Pt';\n\nexport const sendInteractionReward = () => {\n  sendReward(navigationInteractionGoal);\n};\n\nexport function removeSpacesAndAmpersands(str: string) {\n  return str.replace(/\\s+|&/g, '').toLowerCase();\n}\n\nexport function trackNavClickBasedOnLabel(label: string, dropdownLabel?: string) {\n  const value = removeSpacesAndAmpersands(`gh_${dropdownLabel ? `${dropdownLabel}_` : ''}${label}`);\n\n  trackNavClick(value);\n}\n\nexport function trackNavClick(value: string) {\n  if (window?.digitalData && window?._satellite && value) {\n    set(window.digitalData, 'click.clickID', value);\n    window._satellite?.track?.('global_click');\n  }\n}\n\nconst replaceLang = (stringValue: string, lang: string) => stringValue?.replace('__LANG__', lang);\n\nconst DEFAULT_OCODE = 'JHTNW';\n\n/** Returns the full set of potential nav links, including optional links like SMB and Go Hilton */\nexport function getBaseNavLinksFromEnv(lang: string, isAuthenticated: boolean) {\n  const signInUrl = replaceLang(\n    env('DX_AUTH_UI', 'https://www.hilton.com/__LANG__/auth2/guest/login/'),\n    lang\n  );\n\n  const signUpUrl = replaceLang(\n    `${env('OHW_BASE_URL')}__LANG__/hilton-honors/join/?ocode=${DEFAULT_OCODE}`,\n    lang\n  );\n  const environmentBaseUrl = env('OHW_BASE_URL', 'https://www.hilton.com/');\n\n  return {\n    signInLink: { url: signInUrl },\n    signUpLink: { url: signUpUrl },\n    accountLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/my-account/` },\n    honorsActivityLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/activity/` },\n    smbMemberLink: { url: `${environmentBaseUrl}${lang}/business/manage/` },\n    honorsPointsLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/points/` },\n    honorsProfileLink: { url: `${environmentBaseUrl}${lang}/hilton-honors/guest/profile/` },\n    friendsAndFamilyLink: {\n      url: env('TMTP_MANAGE_FAMILY_AND_FRIENDS_LINK', 'https://tmtp.hilton.com/tmtp/main.html'),\n    },\n    hgvMaxLink: {\n      url: env(\n        'EXTERNAL_HGV_PROGRAM_DETAILS_URL',\n        'https://help.hilton.com/s/article/HGV-Max-rate'\n      ),\n    },\n    goHiltonLink: {\n      url: env(\n        'EXTERNAL_TMTP_PROGRAM_DETAILS_URL',\n        'https://help.hilton.com/s/article/What-is-the-Go-Hilton-employee-program'\n      ),\n    },\n    findStayLink: {\n      url: isAuthenticated\n        ? `${environmentBaseUrl}${lang}/hilton-honors/guest/activity/`\n        : `${environmentBaseUrl}${lang}/book/reservation/find/`,\n    },\n  } as const satisfies UserLinks;\n}\n\nexport function useProgramMember({\n  programAccountId,\n  shouldFetchSmbMemberIdAndStatus = false,\n}: Partial<{\n  programAccountId: number | null | undefined;\n  shouldFetchSmbMemberIdAndStatus: boolean;\n}> = {}) {\n  const { guestId, guestInfo } = useAuth();\n  const { locale = 'en', query } = useRouter();\n\n  const programAccountIdParam = isNaN(Number(query?.programAccountId))\n    ? undefined\n    : Number(query?.programAccountId);\n\n  const accountId = programAccountId || programAccountIdParam;\n\n  const { data, isLoading } = useSmb_MemberIdAndStatusQuery(\n    { guestId: guestId as number, language: locale },\n    {\n      enabled: !!guestId && (!!guestInfo?.hhonors?.isSMBMember || shouldFetchSmbMemberIdAndStatus),\n    }\n  );\n\n  let mostRelevantProgramAccount = data?.programAccounts?.[0];\n\n  if ((data?.programAccounts?.length || 0) > 1 && accountId) {\n    mostRelevantProgramAccount = data?.programAccounts.filter(\n      (programAccount) => programAccount?.accountId === accountId\n    )?.[0];\n  }\n\n  const { data: programAccountData, isLoading: memberDataLoading } =\n    useSmb_ProgramAccountMemberQuery(\n      {\n        guestId: guestId as number,\n        language: locale,\n        input: {\n          accountId: accountId || (mostRelevantProgramAccount?.accountId as number),\n          memberId: mostRelevantProgramAccount?.memberId as number,\n        },\n      },\n      {\n        enabled:\n          !!guestId &&\n          !!mostRelevantProgramAccount?.memberId &&\n          Boolean(accountId || mostRelevantProgramAccount?.accountId),\n      }\n    );\n\n  const member = {\n    accountId,\n    ...programAccountData?.programAccountMember,\n    memberDataLoading,\n    isLoading,\n  };\n  return member;\n}\n\nexport function getNHCBP5758MVTVariant(mvts?: Mvts) {\n  const variant = mvts?.['5758']?.variant || 'A';\n\n  const isDefaultVariant = variant === 'A';\n  const isGlowVariant = variant === 'E';\n  const isSpeechBubble = variant === 'B' || variant === 'C' || variant === 'D';\n\n  return { variant, isDefaultVariant, isGlowVariant, isSpeechBubble };\n}\n","import type { HeaderProps } from './types';\nimport { useTranslation } from 'next-i18next';\n\nexport const Logo: React.FC<Pick<HeaderProps, 'brand' | 'theme'>> = ({ brand, theme }) => {\n  const { t } = useTranslation('osc-header');\n  const altText =\n    brand.code === 'WW'\n      ? t('hiltonForTheStay')\n      : brand.code === 'OU'\n      ? `${t('hiltonForTheStay')}, ${brand.name}`\n      : brand.code === 'LX'\n      ? `${t('hiltonForTheStay')}, SLH`\n      : brand.name;\n\n  return (\n    <img\n      src={\n        theme === 'dark'\n          ? `/modules/assets/svgs/logos/${brand.code}_inverted.svg`\n          : `/modules/assets/svgs/logos/${brand.code}.svg`\n      }\n      //Logo for worldwide has marketing text. So only when WW is passed use custom alt text override\n      alt={altText}\n      className=\"header-logo\"\n    />\n  );\n};\n\nexport const HeaderLogoLink: React.FC<\n  Pick<HeaderProps, 'brand' | 'theme' | 'heading'> & Pick<React.ComponentProps<'a'>, 'className'>\n> = ({ brand, className, theme, heading }) => {\n  const { t } = useTranslation('osc-header');\n\n  const Wrapper = heading ? 'h1' : 'span';\n\n  return (\n    <Wrapper aria-label={heading ? heading : undefined} className={className}>\n      <a\n        data-testid=\"brand-logo-link\"\n        href={brand.url}\n        className=\"brand-ou:lg:w-72 brand-lx:lg:w-44 relative block h-14 w-28 overflow-hidden\"\n        {...(!!brand.onClick && { onClick: brand.onClick })}\n        {...(!!brand.target && { target: brand.target })}\n        {...(brand?.target === '_blank' && { rel: 'noreferrer' })}\n      >\n        <Logo theme={theme} brand={brand} />\n        <span className=\"sr-only\">{brand?.target === '_blank' ? `, ${t('newTab')}` : ''}</span>\n      </a>\n    </Wrapper>\n  );\n};\n","/* eslint-disable react/jsx-no-duplicate-props */\nimport * as React from 'react';\nimport { PopupButton, PopupContent, usePopup } from '@dx-ui/osc-popup';\nimport { sendInteractionReward } from '../header.utilities';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { useTranslation } from 'next-i18next';\nimport type { LoginResponse } from '@dx-ui/osc-login';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport { Link } from '@dx-ui/osc-link';\nimport cx from 'classnames';\nimport type { HeaderProps } from '../types';\nimport Icon, { type IconNames } from '@dx-ui/osc-icon';\n\ntype IconName = (typeof IconNames)[number];\n\ntype NavItemSection = 'navigation' | 'user';\n\ntype NavItemProps = Omit<React.ComponentProps<'li'>, 'className' | 'children'> &\n  Pick<HeaderProps, 'theme'> & {\n    isOpen?: boolean;\n    children: React.ReactElement;\n  };\n\nexport function NavItem({ children, theme, isOpen = false, ...listItemProps }: NavItemProps) {\n  const isDark = theme === 'dark';\n\n  const spacedChild = React.cloneElement(children, {\n    className: cx(children.props.className, 'flex-1 self-stretch'),\n  });\n\n  return (\n    <li\n      {...listItemProps}\n      className={cx('group flex h-full items-center px-1 pt-1 text-sm', {\n        'nav-list-item': !theme,\n        'nav-list-item-dark': isDark,\n        'nav-list-item-active': isOpen && !theme,\n        'nav-list-item-active-dark': isOpen && isDark,\n      })}\n    >\n      {spacedChild}\n    </li>\n  );\n}\n\nexport function NavItemVisual({\n  label,\n  icon,\n  indicator,\n  hasRotatedIndicator,\n  theme,\n  section,\n}: {\n  label: string;\n  theme: 'light' | 'dark' | undefined;\n  icon?: IconName;\n  indicator?: IconName;\n  section: NavItemSection;\n  hasRotatedIndicator?: boolean;\n}) {\n  const isDark = theme === 'dark';\n\n  return (\n    <>\n      <span className={cx('block min-h-5', section === 'user' ? 'nav-item-text' : null)}>\n        {label}\n      </span>\n\n      {icon ? (\n        <div className={cx('ps-2')}>\n          <Icon\n            name={icon}\n            className={cx(\n              isDark ? 'nav-icon-dark' : 'nav-icon',\n              'group-focus-within:hidden group-hover:hidden'\n            )}\n            wrapper=\"span\"\n          />\n          <Icon\n            name={icon}\n            variant=\"solid\"\n            className={cx(\n              isDark ? 'nav-icon-active-dark' : 'nav-icon-active',\n              'hidden group-focus-within:block group-hover:block'\n            )}\n            wrapper=\"span\"\n          />\n        </div>\n      ) : null}\n\n      {indicator ? (\n        <div>\n          <Icon\n            name={indicator}\n            className={cx(\n              hasRotatedIndicator ? 'rotate-180' : null,\n              'group-focus-within:hidden group-hover:hidden'\n            )}\n            wrapper=\"span\"\n          />\n          <Icon\n            name={indicator}\n            className={cx(\n              hasRotatedIndicator ? 'rotate-180' : null,\n              'hidden group-focus-within:block group-hover:block'\n            )}\n            wrapper=\"span\"\n          />\n        </div>\n      ) : null}\n    </>\n  );\n}\n\ntype NavItemWithLinkProps = Omit<Link, 'className' | 'children' | 'icon'> & {\n  theme: 'dark' | undefined;\n  section: NavItemSection;\n  label: string;\n  icon?: React.ReactElement;\n  namedIcon?: IconName;\n  isWide?: boolean;\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\n//TODO: make the focus ring here take up the full box, like with the dropdowns. Also check ItemWithModal\nexport const NavItemWithLink: React.FC<NavItemWithLinkProps> = ({\n  theme,\n  namedIcon,\n  section,\n  label,\n  isWide,\n  experimentationConfiguration,\n  ...rest\n}) => {\n  return (\n    <NavItem theme={theme} data-testid=\"with-link\">\n      <Link\n        underline={false}\n        {...rest}\n        data-conductrics-goal={experimentationConfiguration?.goal}\n        data-conductrics-value={experimentationConfiguration?.value}\n        className={cx('flex items-center whitespace-nowrap', isWide ? 'p-2' : 'p-1', {\n          'nav-main-link': section === 'navigation',\n        })}\n      >\n        <NavItemVisual section={section} theme={theme} label={label} icon={namedIcon} />\n      </Link>\n    </NavItem>\n  );\n};\n\nexport type TNavItemWithModal = {\n  /** Specify the title for the Dialog */\n  title: string;\n  /** callback to run after login attempt */\n  onLoginAttempt: React.ComponentProps<typeof LoginIFrame>['onLoginAttempt'];\n  /** Name of the button to display */\n  buttonName?: string;\n  /** aria-label of the button */\n  buttonLabel: string;\n  buttonIcon?: IconName;\n  onClick?: () => void;\n  theme: 'dark' | undefined;\n  section: NavItemSection;\n};\n\nexport const NavItemWithModal: React.FC<React.PropsWithChildren<TNavItemWithModal>> = ({\n  theme,\n  section,\n  buttonLabel,\n  buttonIcon,\n  onClick,\n  title,\n  onLoginAttempt,\n  children,\n}) => {\n  const [showDialog, setShowDialog] = React.useState<boolean>(false);\n  const open = () => {\n    sendInteractionReward();\n    onClick?.();\n    setShowDialog(true);\n  };\n  const close = () => setShowDialog(false);\n\n  const handleLogin = (response: LoginResponse) => {\n    onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n\n  const arrayChildren = React.Children.toArray(children);\n\n  const [t] = useTranslation('osc-login');\n\n  return (\n    <>\n      <NavItem theme={theme} data-testid=\"with-modal\">\n        <button\n          data-testid=\"with-modal\"\n          type=\"button\"\n          className=\"group flex h-full items-center whitespace-nowrap px-1 text-sm\"\n          onClick={open}\n        >\n          <NavItemVisual\n            label={buttonLabel ?? t('signIn')}\n            icon={buttonIcon}\n            theme={theme}\n            section={section}\n          />\n        </button>\n      </NavItem>\n      <Dialog isOpen={showDialog} onDismiss={close} size=\"md\" title={title}>\n        {React.Children.map(arrayChildren, (child) => {\n          if (React.isValidElement(child) && child.type === LoginIFrame) {\n            return React.cloneElement(\n              child as React.ReactElement<React.ComponentProps<typeof LoginIFrame>>,\n              {\n                onLoginAttempt: handleLogin,\n                onClose: close,\n              }\n            );\n          }\n          return child;\n        })}\n      </Dialog>\n    </>\n  );\n};\n\ntype TNavItemWithPopup = {\n  section: NavItemSection;\n  onClick?: () => void;\n  theme: 'dark' | undefined;\n  popupButtonRef?: React.RefObject<HTMLButtonElement>;\n  label: string;\n  icon?: IconName;\n  indicator?: IconName;\n  rotateOnOpen?: boolean;\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\nexport const NavItemWithPopup: React.FC<React.PropsWithChildren<TNavItemWithPopup>> = ({\n  children,\n  label,\n  icon,\n  rotateOnOpen,\n  onClick,\n  theme,\n  popupButtonRef,\n  section,\n  indicator,\n  experimentationConfiguration,\n}) => {\n  const { isOpen } = usePopup();\n\n  return (\n    <>\n      <NavItem theme={theme} isOpen={isOpen} data-testid=\"with-popup\">\n        <PopupButton\n          ref={popupButtonRef}\n          data-conductrics-goal={experimentationConfiguration?.goal}\n          data-conductrics-value={experimentationConfiguration?.value}\n          onClick={() => {\n            sendInteractionReward();\n            onClick?.();\n          }}\n          className={cx('flex items-center whitespace-nowrap p-2', {\n            'nav-main-link': section === 'navigation',\n          })}\n        >\n          <NavItemVisual\n            theme={theme}\n            label={label}\n            section={section}\n            indicator={indicator}\n            icon={icon}\n            hasRotatedIndicator={!isOpen && rotateOnOpen}\n          />\n        </PopupButton>\n      </NavItem>\n      <PopupContent\n        className=\"motion-safe:animate-fadein !popup-margin !w-screen !p-0\"\n        popupStyles={{ left: 0 }}\n      >\n        {children}\n      </PopupContent>\n    </>\n  );\n};\n","import * as React from 'react';\nimport { sendInteractionReward } from '../../header.utilities';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { useTranslation } from 'next-i18next';\nimport type { LoginResponse } from '@dx-ui/osc-login';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport { NavItemVisual } from '../nav-items';\nimport type { TNavItemWithModal } from '../nav-items';\nimport cx from 'classnames';\nimport { Link } from '@dx-ui/osc-link';\nimport type { HeaderProps } from '../../types';\nimport { type IconNames } from '@dx-ui/osc-icon';\n\ntype IconName = (typeof IconNames)[number];\n\ntype NavItemSection = 'navigation' | 'user';\n\nexport const NavItemWithModalAndGlow: React.FC<React.PropsWithChildren<TNavItemWithModal>> = ({\n  theme,\n  section,\n  buttonLabel,\n  buttonIcon,\n  onClick,\n  title,\n  onLoginAttempt,\n  children,\n}) => {\n  const [showDialog, setShowDialog] = React.useState(false);\n\n  const open = () => {\n    sendInteractionReward();\n    onClick?.();\n    setShowDialog(true);\n  };\n  const close = () => setShowDialog(false);\n\n  const handleLogin = (response: LoginResponse) => {\n    onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n\n  const arrayChildren = React.Children.toArray(children);\n\n  const [t] = useTranslation('osc-login');\n\n  return (\n    <>\n      <li className=\"flex items-center justify-center\">\n        <button\n          className=\"btn btn-primary-outline flex items-center py-1 pe-3 ps-4 shadow-[0_0_15px_rgb(0,144,147)] transition-shadow duration-300 ease-in-out hover:shadow-none\"\n          data-testid=\"with-modal\"\n          type=\"button\"\n          onClick={open}\n        >\n          <NavItemVisual\n            label={buttonLabel ?? t('signIn')}\n            icon={buttonIcon}\n            theme={theme}\n            section={section}\n          />\n        </button>\n      </li>\n      <Dialog isOpen={showDialog} onDismiss={close} size=\"md\" title={title}>\n        {React.Children.map(arrayChildren, (child) => {\n          if (React.isValidElement(child) && child.type === LoginIFrame) {\n            return React.cloneElement(\n              child as React.ReactElement<React.ComponentProps<typeof LoginIFrame>>,\n              {\n                onLoginAttempt: handleLogin,\n                onClose: close,\n              }\n            );\n          }\n          return child;\n        })}\n      </Dialog>\n    </>\n  );\n};\n\ntype NavItemWithLinkProps = Omit<Link, 'className' | 'children' | 'icon'> & {\n  theme: 'dark' | undefined;\n  section: NavItemSection;\n  label: string;\n  icon?: React.ReactElement;\n  namedIcon?: IconName;\n  isWide?: boolean;\n  experimentationConfiguration?: CmsExperimentationConfiguration;\n};\n\ntype NavItemProps = Omit<React.ComponentProps<'li'>, 'className' | 'children'> &\n  Pick<HeaderProps, 'theme'> & {\n    isOpen?: boolean;\n    children: React.ReactElement;\n  };\n\nexport function NavItem({ children, ...listItemProps }: NavItemProps) {\n  const spacedChild = React.cloneElement(children, {\n    className: cx(children.props.className, 'flex-1 self-stretch'),\n  });\n\n  return (\n    <li\n      {...listItemProps}\n      className=\"hover:text-primary group flex h-full items-center border-b-8 border-transparent px-1 pt-1 text-sm hover:underline\"\n    >\n      {spacedChild}\n    </li>\n  );\n}\n\nexport const NavItemWithLinkGlow: React.FC<NavItemWithLinkProps> = ({\n  theme,\n  namedIcon,\n  section,\n  label,\n  isWide,\n  experimentationConfiguration,\n  ...rest\n}) => {\n  return (\n    <NavItem theme={theme} data-testid=\"with-link\">\n      <Link\n        underline={false}\n        {...rest}\n        data-conductrics-goal={experimentationConfiguration?.goal}\n        data-conductrics-value={experimentationConfiguration?.value}\n        className={cx('flex items-center whitespace-nowrap', isWide ? 'p-2' : 'p-1', {\n          'nav-main-link': section === 'navigation',\n        })}\n      >\n        <NavItemVisual section={section} theme={theme} label={label} icon={namedIcon} />\n      </Link>\n    </NavItem>\n  );\n};\n","import { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { Link } from '@dx-ui/osc-link';\n\nimport Icon from '@dx-ui/osc-icon';\nimport type { HeaderProps, TDrawerLink } from '../types';\nimport { trackNavClick, trackNavClickBasedOnLabel } from '../header.utilities';\nimport { getLocaleFormattedNumber, replaceLang } from '@dx-ui/framework-i18n';\nimport { useRouter } from 'next/router';\n\nexport function NavigationPopupContents({\n  subMenu,\n  label,\n}: {\n  subMenu: TDrawerLink[];\n  label: string;\n}) {\n  const { locale = 'en' } = useRouter();\n\n  return (\n    <div className=\"container flex-1 py-5\">\n      <MenuList>\n        {subMenu.map(\n          ({ label: subMenuLabel, link: { experimentationConfiguration, ...link }, onClick }) => (\n            <MenuListItem key={subMenuLabel}>\n              <Link\n                {...link}\n                url={replaceLang(link?.url, locale)}\n                data-conductrics-goal={experimentationConfiguration?.goal}\n                data-conductrics-value={experimentationConfiguration?.value}\n                underline={false}\n                className=\"nav-drawer-link-text\"\n                anchorClassName=\"nav-drawer-link p-3 hover:nav-drawer-link-active focus:nav-drawer-link-active brand-ey:focus:font-normal brand-ey:focus:bg-tertiary-alt brand-ey:focus:border-b-primary-alt brand-ou:focus:bg-bg-light\"\n                onClick={(event) => {\n                  trackNavClickBasedOnLabel(subMenuLabel, label);\n                  onClick?.();\n                  link?.onClick?.(event);\n                }}\n              >\n                {subMenuLabel}\n              </Link>\n            </MenuListItem>\n          )\n        )}\n      </MenuList>\n    </div>\n  );\n}\n\nexport type UserPopupContentsProps = Pick<\n  HeaderProps,\n  | 'userLinks'\n  | 'shouldOpenAccountLinksInNewWindow'\n  | 'shouldSuppressHonorsAccountLinks'\n  | 'onSignOut'\n> & {\n  user: Exclude<HeaderProps['user'], undefined>;\n};\n\nexport default function UserPopupContents({\n  user,\n  userLinks,\n  shouldOpenAccountLinksInNewWindow,\n  shouldSuppressHonorsAccountLinks,\n  onSignOut,\n}: UserPopupContentsProps) {\n  const { locale = 'en' } = useRouter();\n  const [t] = useTranslation('osc-header');\n\n  const formattedHonorsPointsTotal = getLocaleFormattedNumber(user?.honorsPoints, { locale });\n\n  return (\n    <div className=\"container flex py-5\">\n      <div className=\"flex items-center\">\n        <div className=\"bg-hilton-alt flex size-20 shrink-0 items-center justify-center rounded-full\">\n          <Icon name=\"user\" size=\"4xl\" />\n        </div>\n        <div className=\"ms-5\">\n          <p className=\"brand-ey:font-normal mb-1 text-sm font-bold\">\n            {t('greetings', { username: user.name })}\n          </p>\n          <p className=\"mb-1 capitalize\">\n            <span className=\"brand-ey:font-normal text-sm font-bold underline\">\n              {user.honorsTier}\n            </span>{' '}\n            {t('status')}\n          </p>\n          <p className=\"brand-ey:font-normal mb-1 text-sm\">\n            {t('honorsPointsTotal', { honorsPointsTotal: formattedHonorsPointsTotal })}\n          </p>\n          {user.hhonorsNumber ? (\n            <p className=\"brand-ey:font-normal mb-1 text-sm\">\n              {t('hiltonHonorsNumber', { hhonorsNumber: user.hhonorsNumber })}\n            </p>\n          ) : null}\n        </div>\n      </div>\n      <div className=\"ms-5 flex-1 xl:ms-10\">\n        <MenuList>\n          {userLinks?.accountLink ? (\n            <MegaUserLink\n              url={userLinks?.accountLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorshome');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('hiltonHonorsHome')}\n            </MegaUserLink>\n          ) : null}\n          {userLinks?.honorsActivityLink && !shouldSuppressHonorsAccountLinks ? (\n            <MegaUserLink\n              url={userLinks?.honorsActivityLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorsactivity');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('activity')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.honorsPointsLink?.url && !shouldSuppressHonorsAccountLinks ? (\n            <MegaUserLink\n              url={userLinks.honorsPointsLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorspoints');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('pointsLabel')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.honorsProfileLink?.url && !shouldSuppressHonorsAccountLinks ? (\n            <MegaUserLink\n              url={userLinks.honorsProfileLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hiltonhonorsprofile');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('profile')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.goHiltonLink?.url ? (\n            <MegaUserLink\n              url={userLinks.goHiltonLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_gohiltonprogramdetails');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('goHiltonProgramDetails')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.friendsAndFamilyLink?.url ? (\n            <MegaUserLink\n              url={userLinks.friendsAndFamilyLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_managefriendsandfamily');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('manageFriendsAndFamily')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.hgvMaxLink?.url ? (\n            <MegaUserLink\n              url={userLinks.hgvMaxLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_hgvmaxratedetails');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('hgvMaxRateDetails')}\n            </MegaUserLink>\n          ) : null}\n\n          {userLinks?.smbMemberLink?.url ? (\n            <MegaUserLink\n              url={userLinks.smbMemberLink.url}\n              onClick={() => {\n                trackNavClick('gh_membername_managehiltonforbusiness');\n              }}\n              isNewWindow={shouldOpenAccountLinksInNewWindow}\n            >\n              {t('manageHiltonForBusiness')}\n            </MegaUserLink>\n          ) : null}\n          <MenuListItem>\n            <button\n              className=\"nav-drawer-link nav-drawer-link-text hover:nav-drawer-link-active focus:nav-drawer-link-active brand-ey:focus:bg-tertiary-alt brand-ey:focus:border-b-primary-alt brand-ou:focus:bg-bg-light w-full whitespace-nowrap text-left\"\n              onClick={async () => {\n                trackNavClick('gh_membername_signout');\n                await onSignOut();\n              }}\n              type=\"button\"\n            >\n              {t('signOut')}\n            </button>\n          </MenuListItem>\n        </MenuList>\n      </div>\n    </div>\n  );\n}\n\nfunction MenuList({ children, ...listProps }: React.ComponentProps<'ul'>) {\n  return (\n    <ul {...listProps} className={cx('columns-3 gap-6', listProps.className)}>\n      {children}\n    </ul>\n  );\n}\n\nfunction MenuListItem({ children, ...listItemProps }: React.ComponentProps<'li'>) {\n  return (\n    <li {...listItemProps} data-testid=\"menu-list-item\" className=\"py-3\">\n      <span className=\"border-border brand-ey:hover:font-normal brand-ey:hover:bg-tertiary-alt brand-ey:hover:border-b-primary-alt brand-ou:border-primary brand-ou:hover:bg-bg-light block break-inside-avoid border-b-2 py-3 hover:font-bold \">\n        {children}\n      </span>\n    </li>\n  );\n}\n\nfunction MegaUserLink({\n  url,\n  onClick,\n  children,\n  isNewWindow,\n}: {\n  url: string;\n  onClick: () => void;\n  children: React.ReactNode;\n  isNewWindow?: boolean;\n}) {\n  return (\n    <MenuListItem>\n      <Link\n        url={url}\n        underline={false}\n        className=\"nav-drawer-link-text whitespace-nowrap\"\n        anchorClassName=\"nav-drawer-link hover:nav-drawer-link-active focus:nav-drawer-link-active brand-ey:focus:bg-tertiary-alt brand-ey:focus:border-b-primary-alt brand-ou:focus:bg-bg-light\"\n        onClick={onClick}\n        isNewWindow={isNewWindow}\n      >\n        {children}\n      </Link>\n    </MenuListItem>\n  );\n}\n","\"use client\";\n\n// packages/react/popover/src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n  const {\n    __scopePopover,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = false\n  } = props;\n  const popperScope = usePopperScope(__scopePopover);\n  const triggerRef = React.useRef(null);\n  const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n  const [open = false, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen,\n    onChange: onOpenChange\n  });\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    PopoverProvider,\n    {\n      scope: __scopePopover,\n      contentId: useId(),\n      triggerRef,\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      hasCustomAnchor,\n      onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n      onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n      modal,\n      children\n    }\n  ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...anchorProps } = props;\n    const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n    React.useEffect(() => {\n      onCustomAnchorAdd();\n      return () => onCustomAnchorRemove();\n    }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n  }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...triggerProps } = props;\n    const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    const trigger = /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.contentId,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n    return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n  }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n  const { __scopePopover, forceMount, children, container } = props;\n  const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar PopoverContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    const isRightClickOutsideRef = React.useRef(false);\n    React.useEffect(() => {\n      const content = contentRef.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n      PopoverContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: true,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          event.preventDefault();\n          if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(\n          props.onPointerDownOutside,\n          (event) => {\n            const originalEvent = event.detail.originalEvent;\n            const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n            const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n            isRightClickOutsideRef.current = isRightClick;\n          },\n          { checkForDefaultPrevented: false }\n        ),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault(),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nvar PopoverContentNonModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    const hasInteractedOutsideRef = React.useRef(false);\n    const hasPointerDownOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      PopoverContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          props.onCloseAutoFocus?.(event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          props.onInteractOutside?.(event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = context.triggerRef.current?.contains(target);\n          if (targetIsTrigger) event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }\n);\nvar PopoverContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopePopover,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      disableOutsidePointerEvents,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      ...contentProps\n    } = props;\n    const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    useFocusGuards();\n    return /* @__PURE__ */ jsx(\n      FocusScope,\n      {\n        asChild: true,\n        loop: true,\n        trapped: trapFocus,\n        onMountAutoFocus: onOpenAutoFocus,\n        onUnmountAutoFocus: onCloseAutoFocus,\n        children: /* @__PURE__ */ jsx(\n          DismissableLayer,\n          {\n            asChild: true,\n            disableOutsidePointerEvents,\n            onInteractOutside,\n            onEscapeKeyDown,\n            onPointerDownOutside,\n            onFocusOutside,\n            onDismiss: () => context.onOpenChange(false),\n            children: /* @__PURE__ */ jsx(\n              PopperPrimitive.Content,\n              {\n                \"data-state\": getState(context.open),\n                role: \"dialog\",\n                id: context.contentId,\n                ...popperScope,\n                ...contentProps,\n                ref: forwardedRef,\n                style: {\n                  ...contentProps.style,\n                  // re-namespace exposed content custom properties\n                  ...{\n                    \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n                    \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n                    \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n                    \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n                    \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n                  }\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...closeProps } = props;\n    const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopePopover);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n  Anchor2 as Anchor,\n  Arrow2 as Arrow,\n  Close,\n  Content2 as Content,\n  Popover,\n  PopoverAnchor,\n  PopoverArrow,\n  PopoverClose,\n  PopoverContent,\n  PopoverPortal,\n  PopoverTrigger,\n  Portal,\n  Root2 as Root,\n  Trigger,\n  createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import Icon from '@dx-ui/osc-icon';\nimport * as Popover from '@radix-ui/react-popover';\nimport cx from 'classnames';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { useEffect } from 'react';\ntype SpeechBubbleProps = {\n  showSpeechBubble: boolean;\n  variant: string;\n  closeSpeechBubble: () => void;\n  onInlineButtonClick: () => void;\n  containerRef?: Element | null;\n  contentStyles?: string;\n};\n//The internal radix's logic traps focus inside the popover. This is a workaround\nconst getDisplayedFocusableElements = () => {\n  const body = document.querySelector('body');\n\n  if (body) {\n    const focusableElements = body.querySelectorAll(\n      'a, button, input, textarea, select, details, summary, [tabindex]:not([tabindex=\"-1\"]), iframe, area'\n    );\n\n    const displayedFocusableElements = Array.from(focusableElements).filter((element) => {\n      const style = window.getComputedStyle(element);\n      return (\n        style.display !== 'none' &&\n        style.visibility !== 'hidden' &&\n        (element as HTMLElement).offsetWidth > 0 &&\n        (element as HTMLElement).offsetHeight > 0\n      );\n    });\n\n    return displayedFocusableElements as HTMLElement[];\n  }\n};\n\nexport const SpeechBubble: React.FC<React.PropsWithChildren<SpeechBubbleProps>> = ({\n  closeSpeechBubble,\n  showSpeechBubble,\n  contentStyles,\n  children,\n  variant,\n  containerRef,\n  onInlineButtonClick,\n}) => {\n  const onSpeechBubbleButtonClick = () => {\n    sendReward('g-JtxVq7s7u9');\n    onInlineButtonClick?.();\n  };\n  //The internal radix's logic traps focus inside the popover. This is a workaround\n  const onKeyDownCloseButton = (e: React.KeyboardEvent) => {\n    const displayedFocusableElements = getDisplayedFocusableElements();\n\n    if (e.shiftKey && e.key === 'Tab' && displayedFocusableElements) {\n      e.preventDefault();\n\n      //of the currently focused element\n      const currentIndex = Array.prototype.indexOf.call(\n        displayedFocusableElements,\n        document.activeElement\n      );\n      //in the list of displayed focusable items\n      const previousIndex =\n        (currentIndex - 1 + displayedFocusableElements.length) % displayedFocusableElements.length;\n\n      displayedFocusableElements[previousIndex]?.focus();\n    }\n  };\n  //The internal radix's logic traps focus inside the popover. This is a workaround\n  const onKeyDownInlineButton = (e: React.KeyboardEvent) => {\n    const displayedFocusableElements = getDisplayedFocusableElements();\n\n    if (!e.shiftKey && e.key === 'Tab' && displayedFocusableElements) {\n      e.preventDefault();\n      //of the currently focused element\n      const currentIndex = Array.prototype.indexOf.call(\n        displayedFocusableElements,\n        document.activeElement\n      );\n      //in the list of displayed focusable items\n      const nextIndex = (currentIndex + 1) % displayedFocusableElements.length;\n\n      displayedFocusableElements[nextIndex]?.focus();\n    }\n  };\n\n  //This is another workaround to remove the focus guards that radix injects under the hood\n  //This is not a good long term solution, and we might need to rethink using radix for a speech bubble\n  //This is for the MVT test only\n  useEffect(() => {\n    if (showSpeechBubble) {\n      //remove existing focus guards\n      const focusGuards = document.querySelectorAll('span[data-radix-focus-guard]');\n      focusGuards.forEach((el) => el.remove());\n\n      // Select the parent node where the focus guards are added\n      const parentNode = document.body;\n\n      const config: MutationObserverInit = { childList: true, subtree: false };\n\n      const callback: MutationCallback = (mutationsList) => {\n        for (const mutation of mutationsList) {\n          if (mutation.type === 'childList') {\n            mutation.addedNodes.forEach((node) => {\n              if (\n                node.nodeType === 1 &&\n                (node as HTMLElement).hasAttribute('data-radix-focus-guard')\n              ) {\n                (node as HTMLElement).remove();\n              }\n            });\n          }\n        }\n      };\n      const observer = new MutationObserver(callback);\n      observer.observe(parentNode, config);\n\n      return () => {\n        observer.disconnect();\n      };\n    }\n  }, [showSpeechBubble]);\n\n  return (\n    <div>\n      <Popover.Root open={showSpeechBubble}>\n        <Popover.Trigger asChild>{children}</Popover.Trigger>\n        <Popover.Portal container={containerRef}>\n          <Popover.Content\n            className={cx(\n              'bg-tertiary z-10 flex w-[80vw] max-w-[178px] flex-col rounded-md shadow-lg sm:max-w-[266px]',\n              contentStyles\n            )}\n            align=\"end\"\n            hideWhenDetached\n            onEscapeKeyDown={closeSpeechBubble}\n            aria-label=\"Sign in message\"\n            onOpenAutoFocus={(event) => event.preventDefault()}\n          >\n            <div className=\"flex justify-end\">\n              <Popover.Close\n                className=\"text-bg\"\n                aria-label=\"Close sign in message\"\n                onClick={closeSpeechBubble}\n                onKeyDown={onKeyDownCloseButton}\n              >\n                <Icon name=\"close\" size=\"md\" />\n              </Popover.Close>\n            </div>\n            <p className=\"text-bg px-4 pb-4\" id=\"sign-in-note\">\n              {variant === 'B' ? (\n                <>\n                  Get exclusive rates and benefits{' '}\n                  <button\n                    onClick={onSpeechBubbleButtonClick}\n                    onKeyDown={onKeyDownInlineButton}\n                    type=\"button\"\n                    className=\"underline\"\n                  >\n                    with Hilton Honors.\n                  </button>\n                </>\n              ) : null}\n              {variant === 'C' ? (\n                <>\n                  <button\n                    onClick={onSpeechBubbleButtonClick}\n                    onKeyDown={onKeyDownInlineButton}\n                    type=\"button\"\n                    className=\"underline\"\n                  >\n                    Join or sign in\n                  </button>\n                  <span> to unlock Hilton Honors benefits.</span>\n                </>\n              ) : null}\n              {variant === 'D' ? (\n                <>\n                  <span>Check out faster—</span>\n                  <button\n                    onClick={onSpeechBubbleButtonClick}\n                    onKeyDown={onKeyDownInlineButton}\n                    type=\"button\"\n                    className=\"underline\"\n                  >\n                    join or sign in\n                  </button>\n                  <span> to Hilton Honors.</span>\n                </>\n              ) : null}\n            </p>\n            <Popover.Arrow\n              className=\"fill-tertiary lg:ml-[36px]\"\n              width={15}\n              height={10}\n              aria-hidden={true}\n            />\n          </Popover.Content>\n        </Popover.Portal>\n      </Popover.Root>\n    </div>\n  );\n};\n\nexport default SpeechBubble;\n","import { LoginIFrame } from '@dx-ui/osc-login';\nimport type { LoginResponse, LoginBaseProps } from '@dx-ui/osc-login';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport * as React from 'react';\nimport { SpeechBubble } from './speech-bubble';\nimport { sendInteractionReward } from '../../header.utilities';\nimport { sendReward } from '@dx-ui/framework-conductrics';\n\ntype NavItemWithSpeechBubbleProps = {\n  title: LoginBaseProps['title'];\n  frameSrc: LoginBaseProps['frameSrc'];\n  options?: LoginBaseProps['options'];\n  onLoginAttempt: React.ComponentProps<typeof LoginIFrame>['onLoginAttempt'];\n  variant: string;\n  buttonClassName: LoginBaseProps['buttonClassName'];\n  onClick?: () => void;\n  onDialogOpen?: () => void;\n};\n\nexport const NavItemWithSpeechBubble = ({\n  onLoginAttempt,\n  title,\n  options = {},\n  frameSrc,\n  variant,\n  buttonClassName,\n  onClick,\n  onDialogOpen,\n  children,\n}: React.PropsWithChildren<NavItemWithSpeechBubbleProps>) => {\n  const [showDialog, setShowDialog] = React.useState(false);\n  const [showSpeechBubble, setShowSpeechBubble] = React.useState(true);\n\n  const [speechBubbleContainer, setSpeechBubbleContainer] = React.useState<\n    HTMLDivElement | undefined\n  >(undefined);\n\n  const buttonRef = React.useRef<React.ElementRef<'button'>>(null);\n\n  const onSignInClick = () => {\n    onClick?.();\n    onDialogOpen?.();\n    setShowDialog(true);\n    setShowSpeechBubble(false);\n    sendInteractionReward();\n    sendReward('nav-sign-in-click');\n  };\n\n  const close = () => setShowDialog(false);\n\n  const closeSpeechBubble = () => {\n    setShowSpeechBubble(false);\n    buttonRef?.current?.focus();\n  };\n\n  const setRef = (node: HTMLDivElement) => {\n    if (node) {\n      setSpeechBubbleContainer(node);\n    }\n  };\n\n  const handleLogin = async (response: LoginResponse) => {\n    // eslint-disable-next-line @typescript-eslint/await-thenable\n    await onLoginAttempt?.(response);\n    if (!response.error) {\n      close();\n    }\n  };\n  return (\n    <>\n      <Dialog\n        title={title}\n        isOpen={showDialog}\n        onDismiss={close}\n        size=\"md\"\n        dialogTrigger={\n          <SpeechBubble\n            closeSpeechBubble={closeSpeechBubble}\n            showSpeechBubble={showSpeechBubble}\n            variant={variant}\n            containerRef={speechBubbleContainer}\n            onInlineButtonClick={() => {\n              closeSpeechBubble?.();\n              setShowDialog(true);\n              onDialogOpen?.();\n            }}\n          >\n            <button\n              data-testid=\"with-modal\"\n              type=\"button\"\n              className={buttonClassName}\n              onClick={onSignInClick}\n              ref={buttonRef}\n              aria-describedby=\"sign-in-note\"\n            >\n              {children}\n            </button>\n          </SpeechBubble>\n        }\n      >\n        <LoginIFrame\n          frameSrc={frameSrc}\n          options={options}\n          data-e2e=\"loginIframe\"\n          onLoginAttempt={handleLogin}\n          onClose={close}\n          title={title}\n        />\n      </Dialog>\n      <div ref={setRef} />\n    </>\n  );\n};\n\nexport default NavItemWithSpeechBubble;\n","import { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { Link } from '@dx-ui/osc-link';\nimport { Popup } from '@dx-ui/osc-popup';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport type { MegaMenuProps } from '../types';\nimport {\n  sendInteractionReward,\n  trackNavClickBasedOnLabel,\n  trackNavClick,\n  getNHCBP5758MVTVariant,\n} from '../header.utilities';\nimport { LanguageSelector } from '@dx-ui/osc-language-selector';\nimport { sendReward, Status, useConductricsSelection } from '@dx-ui/framework-conductrics';\nimport { Logo } from '../header.logo';\nimport { useRef } from 'react';\nimport { NavItemVisual, NavItemWithLink, NavItemWithModal, NavItemWithPopup } from './nav-items';\nimport { NavItemWithModalAndGlow, NavItemWithLinkGlow } from './mvtest-nhcbp-5758/nav-item-glow';\nimport UserPopupContents, { NavigationPopupContents } from './popup-contents';\nimport { NavItemWithSpeechBubble } from './mvtest-nhcbp-5758/nav-item-speech-bubble';\nimport { useRouter } from 'next/router';\nimport { replaceLang } from '@dx-ui/framework-i18n';\n\nexport function MegaMenu({\n  isFluid,\n  suppressLogo = false,\n  shouldSuppressHonorsAccountLinks,\n  shouldSuppressFindStay,\n  shouldSuppressJoinAndSignIn,\n  shouldOpenAccountLinksInNewWindow,\n  brand,\n  mainNavLinks,\n  user,\n  languageSelectorOptions,\n  loginOptions,\n  onSignInAttempt,\n  userLinks,\n  onSignOut,\n  heading,\n  theme,\n  mvts,\n  SignUpComponent,\n}: MegaMenuProps) {\n  const userNavProps = {\n    user,\n    userLinks,\n    onSignInAttempt,\n    onSignOut,\n    loginOptions,\n    languageSelectorOptions,\n    theme,\n    mvts,\n    shouldSuppressHonorsAccountLinks,\n    shouldSuppressFindStay,\n    shouldSuppressJoinAndSignIn,\n    shouldOpenAccountLinksInNewWindow,\n    SignUpComponent,\n  };\n  const isDark = theme === 'dark';\n  const headingLevelProps = heading\n    ? {\n        role: 'heading',\n        'aria-level': 1,\n        'aria-label': heading,\n      }\n    : {};\n\n  return (\n    <div className=\"bg-transparent\">\n      <div\n        className={cx({\n          'container-fluid': isFluid,\n          container: !isFluid,\n        })}\n      >\n        <div className=\"relative flex flex-wrap\">\n          {suppressLogo ? null : (\n            <div className=\"flex min-h-[4.5rem] items-center\" {...headingLevelProps}>\n              <Link\n                url={brand.url}\n                target={brand.target}\n                onClick={sendInteractionReward}\n                // once nav is implemented on all pages for OHW make w-72 for all brands per UX/UI\n                anchorClassName=\"relative block h-14 w-28 brand-ou:lg:w-72 brand-lx:lg:w-72 me-1\"\n                showNewWindowIcon={false}\n              >\n                <Logo theme={theme} brand={brand} />\n              </Link>\n            </div>\n          )}\n          <div className=\"absolute end-0 top-0\">\n            <UserNav {...userNavProps} />\n          </div>\n        </div>\n      </div>\n      <div\n        className={cx({\n          'nav-bottom-link-area': !isDark,\n          'nav-bottom-link-area-dark': isDark,\n        })}\n      >\n        <div\n          className={cx({\n            'container-fluid': isFluid,\n            container: !isFluid,\n          })}\n        >\n          <div className=\"flex overflow-auto\" data-testid=\"header-links-container\">\n            {mainNavLinks?.length ? <MainNav theme={theme} mainNavLinks={mainNavLinks} /> : null}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\ntype UserNavProps = Pick<\n  MegaMenuProps,\n  | 'loginOptions'\n  | 'onSignInAttempt'\n  | 'onSignOut'\n  | 'user'\n  | 'userLinks'\n  | 'languageSelectorOptions'\n  | 'theme'\n  | 'shouldSuppressHonorsAccountLinks'\n  | 'shouldSuppressFindStay'\n  | 'shouldSuppressJoinAndSignIn'\n  | 'shouldOpenAccountLinksInNewWindow'\n  | 'SignUpComponent'\n  | 'mvts'\n>;\n\nfunction UserNav({\n  loginOptions,\n  onSignInAttempt,\n  onSignOut,\n  user,\n  languageSelectorOptions,\n  userLinks,\n  theme,\n  shouldSuppressHonorsAccountLinks,\n  shouldSuppressFindStay,\n  shouldSuppressJoinAndSignIn,\n  shouldOpenAccountLinksInNewWindow,\n  SignUpComponent,\n  mvts,\n}: UserNavProps) {\n  const [t] = useTranslation(['osc-header', 'osc-login']);\n  function useFindStayTest() {\n    const { selection, isLoaded } = useConductricsSelection('a-oWnxRSIvy6Dz', Status.OK);\n    return {\n      variant1: isLoaded && selection?.choice === 'B',\n      variant2: isLoaded && selection?.choice === 'C',\n      variant3: isLoaded && selection?.choice === 'D',\n    };\n  }\n\n  const defaultOptions: React.ComponentProps<typeof LoginIFrame> = {\n    frameSrc: userLinks?.signInLink?.url || '',\n    title: t('osc-login:signIn'),\n    onLoginAttempt: onSignInAttempt,\n  };\n\n  const userButtonLinkRef = useRef<HTMLButtonElement>(null);\n  const isDark = theme === 'dark';\n  const { variant1, variant2, variant3 } = useFindStayTest();\n\n  const { isDefaultVariant, isGlowVariant, isSpeechBubble, variant } = getNHCBP5758MVTVariant(mvts);\n\n  return (\n    <nav className=\"relative ms-auto flex min-h-[4.5rem]\" aria-label={t('hiltonHonors')}>\n      <ul className=\"flex\">\n        {languageSelectorOptions ? (\n          <li className=\"flex items-center pb-2 pe-2 pt-1\">\n            <LanguageSelector theme={theme} {...languageSelectorOptions} />\n          </li>\n        ) : null}\n        {userLinks?.findStayLink && !shouldSuppressFindStay && !isGlowVariant ? (\n          <NavItemWithLink\n            onClick={() => {\n              sendInteractionReward();\n              sendReward('find-stay-click');\n              trackNavClick('gh_findstay');\n            }}\n            url={userLinks?.findStayLink.url}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n            showNewWindowIcon={false}\n            theme={theme}\n            section=\"user\"\n            isWide\n            {...(variant1\n              ? {\n                  namedIcon: 'calendar',\n                  label: t('yourStays'),\n                }\n              : variant2\n              ? {\n                  namedIcon: 'calendar-search',\n                  label: t('findStay'),\n                }\n              : variant3\n              ? {\n                  namedIcon: 'calendar-search',\n                  label: t('yourStays'),\n                }\n              : {\n                  namedIcon: 'calendar',\n                  label: t('findStay'),\n                })}\n          />\n        ) : null}\n\n        {userLinks?.findStayLink && !shouldSuppressFindStay && isGlowVariant ? (\n          <NavItemWithLinkGlow\n            onClick={() => {\n              sendInteractionReward();\n              sendReward('find-stay-click');\n              trackNavClick('gh_findstay');\n            }}\n            url={userLinks?.findStayLink.url}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n            showNewWindowIcon={false}\n            theme={theme}\n            section=\"user\"\n            isWide\n            namedIcon=\"calendar\"\n            label={t('findStay')}\n          />\n        ) : null}\n\n        {user ? (\n          <Popup>\n            <NavItemWithPopup\n              section=\"user\"\n              theme={theme}\n              popupButtonRef={userButtonLinkRef}\n              onClick={() => {\n                trackNavClick('gh_membername');\n                sendReward('profile-name-click');\n              }}\n              label={t('greetings', { username: user.name })}\n              icon=\"user-circle\"\n            >\n              <UserPopupContents\n                user={user}\n                userLinks={userLinks}\n                shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n                shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n                onSignOut={onSignOut}\n              />\n            </NavItemWithPopup>\n          </Popup>\n        ) : (userLinks?.signInLink || userLinks?.signUpLink || SignUpComponent) &&\n          !shouldSuppressJoinAndSignIn ? (\n          <>\n            {userLinks?.signUpLink || SignUpComponent ? (\n              SignUpComponent ? (\n                <SignUpComponent\n                  loggedInButtonRef={userButtonLinkRef}\n                  className=\"nav-item-text mx-1\"\n                >\n                  {t('signUp')}\n                </SignUpComponent>\n              ) : userLinks?.signUpLink ? (\n                isGlowVariant ? (\n                  <NavItemWithLinkGlow\n                    section=\"user\"\n                    {...userLinks.signUpLink}\n                    underline={false}\n                    showNewWindowIcon={false}\n                    label={t('signUp')}\n                    theme={theme}\n                    onClick={() => {\n                      sendInteractionReward();\n                      sendReward('nav-join-click');\n                      trackNavClick('gh_join_signin');\n                    }}\n                  />\n                ) : (\n                  <NavItemWithLink\n                    section=\"user\"\n                    {...userLinks.signUpLink}\n                    underline={false}\n                    showNewWindowIcon={false}\n                    label={t('signUp')}\n                    theme={theme}\n                    onClick={() => {\n                      sendInteractionReward();\n                      sendReward('nav-join-click');\n                      trackNavClick('gh_join_signin');\n                    }}\n                  />\n                )\n              ) : null\n            ) : null}\n\n            {isGlowVariant ? <div className=\"w-4\" /> : null}\n\n            {(userLinks?.signUpLink || userLinks?.signUpComponent) &&\n            userLinks?.signInLink &&\n            !isGlowVariant ? (\n              <div\n                aria-hidden={true}\n                className=\"nav-list-divider-container group flex h-full items-center pt-1 text-sm\"\n              >\n                <div className={isDark ? 'nav-list-divider-dark' : 'nav-list-divider'} />\n              </div>\n            ) : null}\n\n            {userLinks?.signInLink && isDefaultVariant ? (\n              <NavItemWithModal\n                section=\"user\"\n                theme={theme}\n                onLoginAttempt={defaultOptions.onLoginAttempt}\n                title={defaultOptions.title}\n                onClick={() => {\n                  trackNavClick('gh_join_signin');\n                  sendReward('nav-sign-in-click');\n                }}\n                buttonIcon=\"user-circle\"\n                buttonLabel={t('osc-login:signIn')}\n              >\n                <LoginIFrame data-e2e=\"loginIframe\" {...defaultOptions} {...loginOptions} />\n              </NavItemWithModal>\n            ) : null}\n\n            {userLinks?.signInLink && isGlowVariant ? (\n              <NavItemWithModalAndGlow\n                section=\"user\"\n                theme={theme}\n                onLoginAttempt={defaultOptions.onLoginAttempt}\n                title={defaultOptions.title}\n                onClick={() => {\n                  trackNavClick('gh_join_signin');\n                  sendReward('nav-sign-in-click');\n                }}\n                buttonIcon=\"user-circle\"\n                buttonLabel={t('osc-login:signIn')}\n              >\n                <LoginIFrame data-e2e=\"loginIframe\" {...defaultOptions} {...loginOptions} />\n              </NavItemWithModalAndGlow>\n            ) : null}\n            {userLinks?.signInLink && isSpeechBubble ? (\n              <li className=\"nav-list-item flex h-full items-center px-1 pt-1 text-sm\">\n                <NavItemWithSpeechBubble\n                  {...defaultOptions}\n                  variant={variant}\n                  buttonClassName=\"flex h-full items-center whitespace-nowrap px-1 text-sm\"\n                  onClick={() => {\n                    trackNavClick('gh_join_signin');\n                  }}\n                  {...loginOptions}\n                >\n                  <NavItemVisual\n                    label={t('osc-login:signIn')}\n                    icon=\"user-circle\"\n                    theme={theme}\n                    section=\"user\"\n                  />\n                </NavItemWithSpeechBubble>\n              </li>\n            ) : null}\n          </>\n        ) : null}\n      </ul>\n    </nav>\n  );\n}\n\ntype MainNavProps = Required<Pick<MegaMenuProps, 'mainNavLinks'>> & {\n  theme?: Exclude<CmsBrandComponentTheme, 'light'>;\n};\n\nfunction MainNav({ mainNavLinks, theme }: MainNavProps) {\n  const { locale = 'en' } = useRouter();\n\n  return (\n    <div className=\"flex min-h-[4.5rem] items-center\">\n      <div className=\"size-full overflow-x-visible\">\n        <ul className=\"flex h-full items-center rtl:space-x-reverse\">\n          {mainNavLinks.map(({ label, subMenu, link, onClick }) => {\n            if (!subMenu?.length && link?.url) {\n              return (\n                <NavItemWithLink\n                  {...link}\n                  url={replaceLang(link?.url, locale)}\n                  section=\"navigation\"\n                  label={label}\n                  isWide\n                  key={label}\n                  theme={theme}\n                  onClick={(event) => {\n                    sendInteractionReward();\n                    trackNavClickBasedOnLabel(label);\n                    onClick?.();\n                    link?.onClick?.(event);\n                  }}\n                />\n              );\n            }\n            if (subMenu?.length) {\n              return (\n                <Popup key={label}>\n                  <NavItemWithPopup\n                    section=\"navigation\"\n                    label={label}\n                    indicator=\"arrowhead-small-up\"\n                    rotateOnOpen\n                    theme={theme}\n                    onClick={() => {\n                      trackNavClickBasedOnLabel(label);\n                    }}\n                    experimentationConfiguration={link?.experimentationConfiguration}\n                  >\n                    <NavigationPopupContents subMenu={subMenu} label={label} />\n                  </NavItemWithPopup>\n                </Popup>\n              );\n            }\n            return null;\n          })}\n        </ul>\n      </div>\n    </div>\n  );\n}\n\nexport default MegaMenu;\n","import { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport type { TDrawerItem, TDrawerList } from '../types';\nimport { Link } from '@dx-ui/osc-link';\nimport Icon from '@dx-ui/osc-icon';\nimport { trackNavClickBasedOnLabel } from '../header.utilities';\nimport cx from 'classnames';\nimport { useRouter } from 'next/router';\nimport { replaceLang } from '@dx-ui/framework-i18n';\n\nexport const DrawerList = ({ menuItems, isOpen, onClose }: TDrawerList) => {\n  const [nextItem, setNextItem] = useState<TDrawerItem | undefined>();\n  const [nextItemIndex, setNextItemIndex] = useState<number>();\n  const [selectedItem, setSelectedItem] = useState<TDrawerItem | undefined>();\n  const [selectedItemIndex, setSelectedItemIndex] = useState<number>();\n  const backButtonRef = useRef<HTMLButtonElement>(null);\n  const [isFadingOut, setIsFadingOut] = useState(false);\n  const lastSelectedButton = useRef<HTMLButtonElement>(null);\n  const { t } = useTranslation('osc-header');\n  const { locale = 'en' } = useRouter();\n\n  useEffect(() => {\n    if (!isOpen) setSelectedItem(undefined);\n  }, [isOpen]);\n\n  const goBack = () => {\n    setIsFadingOut(true);\n    setNextItem(undefined);\n    setTimeout(() => {\n      lastSelectedButton?.current?.focus();\n    }, 350);\n  };\n\n  const focusOnBack = () => {\n    setTimeout(() => {\n      backButtonRef?.current?.focus();\n    }, 50);\n  };\n\n  const itemSelected = (menuItem: TDrawerItem, index: number) => {\n    setIsFadingOut(true);\n    setNextItem(menuItem);\n    setNextItemIndex(index);\n  };\n\n  return (\n    <div\n      className={isFadingOut ? 'animate-fadeout opacity-0' : 'animate-fadein'}\n      onAnimationEnd={() => {\n        if (isFadingOut) {\n          setIsFadingOut(false);\n          setSelectedItem(nextItem);\n          setSelectedItemIndex(nextItemIndex);\n          focusOnBack();\n        }\n      }}\n    >\n      <div className=\"border-border brand-ey:border-b-primary-alt brand-ou:border-b-primary relative border-b px-4 py-3\">\n        <button onClick={onClose} type=\"button\" className=\"px-2\">\n          <Icon name=\"close\" className=\"m-auto\" />\n          <span className=\"brand-ey:font-normal brand-wa:font-normal text-xs font-semibold\">\n            {t('close')}\n            <span className=\"sr-only\">{t('menu')}</span>\n          </span>\n        </button>\n      </div>\n      {selectedItem ? (\n        <button\n          ref={backButtonRef}\n          onClick={goBack}\n          className={cx(\n            'bg-bg-alt nav-main-link border-primary flex h-12 w-full items-center border-s-8 pe-2 ps-4 text-left',\n            'brand-ey:bg-tertiary-alt brand-ey:border-b-primary-alt brand-ey:border-b',\n            'brand-hi-refresh:bg-bg-light',\n            'brand-lx:bg-bg-light',\n            'brand-ou:bg-bg-light brand-ou:border-b-primary brand-ou:border-b'\n          )}\n          aria-expanded=\"true\"\n          type=\"button\"\n        >\n          <Icon name=\"arrowhead-small-right\" className=\"me-3 rotate-180 rtl:rotate-0\" />\n          <span>{selectedItem.label}</span>\n        </button>\n      ) : null}\n\n      {selectedItem ? (\n        <ul>\n          {selectedItem.subMenu?.map((menuItem) =>\n            menuItem.link?.url ? (\n              <li key={menuItem.label}>\n                <Link\n                  anchorClassName=\"block nav-drawer-link brand-ey:focus:bg-tertiary-alt brand-lx:focus:bg-bg-light brand-ou:focus:bg-bg-light\"\n                  underline={false}\n                  className={cx(\n                    'border-border flex h-12 items-center border-b ps-4',\n                    'brand-ey:hover:bg-tertiary-alt brand-ey:border-b-primary-alt',\n                    'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n                    'brand-lx:hover:bg-bg-light',\n                    'brand-ou:hover:bg-bg-light brand-ou:border-b-primary'\n                  )}\n                  url={replaceLang(menuItem.link.url, locale)}\n                  isNewWindow={menuItem.link.isNewWindow}\n                  onClick={(event) => {\n                    trackNavClickBasedOnLabel(menuItem.label, selectedItem.label);\n                    menuItem.onClick?.();\n                    menuItem.link?.onClick?.(event);\n                  }}\n                  data-conductrics-goal={menuItem.link.experimentationConfiguration?.goal}\n                  data-conductrics-value={menuItem.link.experimentationConfiguration?.value}\n                >\n                  {menuItem.label}\n                </Link>\n              </li>\n            ) : null\n          )}\n        </ul>\n      ) : (\n        // If no submenu is currently selected, show main set of menu items\n        <ul>\n          {menuItems.map((menuItem, index) => {\n            if (menuItem?.subMenu?.length) {\n              return (\n                <li key={menuItem.label}>\n                  <button\n                    ref={selectedItemIndex === index ? lastSelectedButton : null}\n                    onClick={() => {\n                      itemSelected(menuItem, index);\n                      trackNavClickBasedOnLabel(menuItem.label);\n                    }}\n                    className={cx(\n                      'nav-main-link border-border animate-fadein flex h-12 w-full items-center justify-between border-b ps-4 text-left',\n                      'brand-ey:hover:bg-tertiary-alt brand-ey:border-b-primary-alt brand-ey:focus:bg-tertiary-alt',\n                      'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n                      'brand-lx:hover:bg-bg-light brand-lx:focus:bg-bg-light',\n                      'brand-ou:hover:bg-bg-light brand-ou:border-b-primary brand-ou:focus:bg-bg-light'\n                    )}\n                    aria-expanded=\"false\"\n                    type=\"button\"\n                    data-conductrics-goal={menuItem.link?.experimentationConfiguration?.goal}\n                    data-conductrics-value={menuItem.link?.experimentationConfiguration?.value}\n                  >\n                    <span>{menuItem.label}</span>\n                    <Icon name=\"arrowhead-small-right\" className=\"me-3 ms-auto rtl:rotate-180\" />\n                  </button>\n                </li>\n              );\n            } else if (menuItem.link?.url) {\n              return (\n                <li key={menuItem.label}>\n                  <Link\n                    anchorClassName=\"block brand-ey:focus:bg-tertiary-alt brand-ou:focus:bg-bg-light\"\n                    underline={false}\n                    className={cx(\n                      'nav-main-link border-border flex h-12 items-center border-b ps-4',\n                      'brand-ey:hover:bg-tertiary-alt brand-ey:border-b-primary-alt',\n                      'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n                      'brand-ou:hover:bg-bg-light brand-ou:border-b-primary'\n                    )}\n                    url={replaceLang(menuItem.link.url, locale)}\n                    isNewWindow={menuItem.link.isNewWindow}\n                    onClick={(event) => {\n                      trackNavClickBasedOnLabel(menuItem.label);\n                      menuItem.onClick?.();\n                      menuItem.link?.onClick?.(event);\n                    }}\n                    data-conductrics-goal={menuItem.link.experimentationConfiguration?.goal}\n                    data-conductrics-value={menuItem.link.experimentationConfiguration?.value}\n                  >\n                    {menuItem.label}\n                  </Link>\n                </li>\n              );\n            }\n            return null;\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import { getBaseNavLinksFromEnv } from '../header.utilities';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport type { UserLinks } from '../types';\nimport { useRouter } from 'next/router';\n\nexport const useActiveUserLinks = (): UserLinks => {\n  const { guestInfo, isAuthenticated } = useAuth();\n  const { locale, asPath } = useRouter();\n\n  const navLinks = getBaseNavLinksFromEnv(locale || 'en', isAuthenticated);\n\n  const isB2BMember = guestInfo?.hhonors?.isB2BMember;\n  const isHGVMax = Boolean(guestInfo?.hhonors?.isOwnerHGVNew) || asPath.includes('hgv-max');\n\n  const isTMTPTeamMember =\n    guestInfo?.hhonors?.isOwner ||\n    guestInfo?.hhonors?.isTeamMember ||\n    guestInfo?.hhonors?.isOwnerHGV;\n\n  const isTMTPNonTeamMember =\n    guestInfo?.hhonors?.isTeamMemberSpouse ||\n    guestInfo?.hhonors?.isFamilyAndFriends ||\n    guestInfo?.hhonors?.isLongTenure10 ||\n    guestInfo?.hhonors?.isLongTenure20;\n\n  return {\n    ...navLinks,\n    smbMemberLink: isB2BMember ? navLinks?.smbMemberLink : undefined,\n    friendsAndFamilyLink: isTMTPTeamMember ? navLinks?.friendsAndFamilyLink : undefined,\n    goHiltonLink: isTMTPNonTeamMember || isTMTPTeamMember ? navLinks?.goHiltonLink : undefined,\n    hgvMaxLink: isHGVMax ? navLinks?.hgvMaxLink : undefined,\n  };\n};\n","import { useRef, useState } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport { Login } from '@dx-ui/osc-login';\nimport { useTranslation } from 'next-i18next';\nimport { Link } from '@dx-ui/osc-link';\nimport { DrawerPanel } from '@dx-ui/osc-drawer';\nimport cx from 'classnames';\nimport MegaMenu from './mega-menu';\nimport { DrawerList } from './nav-drawer-list';\nimport Icon from '@dx-ui/osc-icon';\nimport { getNHCBP5758MVTVariant, sendInteractionReward, trackNavClick } from '../header.utilities';\nimport { LanguageSelector } from '@dx-ui/osc-language-selector';\nimport { sendReward } from '@dx-ui/framework-conductrics';\nimport { HeaderLogoLink } from '../header.logo';\nimport type { TBrandHeaderBody } from '../types';\nimport { useRouter } from 'next/router';\nimport { getLocaleFormattedNumber } from '@dx-ui/framework-i18n';\nimport { useActiveUserLinks } from '../hooks/useActiveUserLinks';\nimport { NavItemWithSpeechBubble } from './mvtest-nhcbp-5758/nav-item-speech-bubble';\n\nexport const BrandHeaderBody = ({\n  menuItems,\n  brand,\n  loginOptions,\n  user,\n  SignUpComponent,\n  wrapperId,\n  onSignInAttempt,\n  languageSelectorOptions,\n  onSignOut,\n  isFluid,\n  suppressLogo,\n  shouldSuppressFindStay,\n  shouldSuppressJoinAndSignIn,\n  shouldOpenAccountLinksInNewWindow,\n  shouldSuppressHonorsAccountLinks,\n  heading,\n  theme,\n  mvts,\n}: TBrandHeaderBody) => {\n  const [isMenuOpen, setIsMenuOpen] = useState(false);\n  const [isAccountOpen, setIsAccountOpen] = useState(false);\n  const { t } = useTranslation(['osc-header', 'osc-login']);\n  const userLoggedInButtonRef = useRef<HTMLButtonElement>(null);\n\n  const activeUserLinks = useActiveUserLinks();\n\n  const closeMenus = () => {\n    setIsMenuOpen(false);\n    setIsAccountOpen(false);\n    document.removeEventListener('keydown', handleKeyDown);\n  };\n\n  const handleKeyDown = (e: KeyboardEvent) => {\n    if (e.key === 'Escape') {\n      closeMenus();\n    }\n  };\n\n  const addEscapeKeyListener = () => {\n    document.addEventListener('keydown', handleKeyDown);\n  };\n\n  const removeEscapeKeyListener = () => {\n    document.removeEventListener('keydown', handleKeyDown);\n  };\n\n  const menuPressed = () => {\n    sendInteractionReward();\n    if (isAccountOpen) setIsAccountOpen(false);\n    if (isMenuOpen) {\n      setIsMenuOpen(false);\n      removeEscapeKeyListener();\n    } else {\n      addEscapeKeyListener();\n      setIsMenuOpen(true);\n    }\n  };\n\n  const accountPressed = () => {\n    sendInteractionReward();\n    sendReward('profile-name-click');\n    setIsMenuOpen(false);\n    if (isAccountOpen) {\n      setIsAccountOpen(false);\n      removeEscapeKeyListener();\n    } else {\n      setIsAccountOpen(true);\n      addEscapeKeyListener();\n    }\n  };\n\n  const closeMainMenu = () => {\n    setIsMenuOpen(false);\n  };\n\n  const closeAccount = () => {\n    setIsAccountOpen(false);\n  };\n\n  const isDark = theme === 'dark';\n\n  const joinButtonClasses = cx(\n    'brand-wa:font-normal brand-ey:font-normal border-border brand-lx:border-primary m-auto inline-block border-e pe-2 text-xs font-semibold',\n    {\n      'text-text-inverse': isDark,\n    }\n  );\n\n  const { isGlowVariant, isSpeechBubble, variant } = getNHCBP5758MVTVariant(mvts);\n\n  return (\n    <>\n      <nav\n        id=\"drawer-nav\"\n        className={cx('bg-bg z-50 lg:hidden', {\n          'bg-bg brand-ou:bg-secondary': !theme,\n          'bg-bg-dark': isDark,\n        })}\n      >\n        <div\n          className={cx('flex content-center items-center p-2 md:px-8 lg:px-10', {\n            'sm:h-16': !!languageSelectorOptions,\n            'h-min px-2 py-1': !languageSelectorOptions,\n          })}\n        >\n          {menuItems && menuItems.length > 0 ? (\n            <button\n              className={cx('me-2 w-12', {\n                'self-end sm:self-center': !!languageSelectorOptions,\n              })}\n              onClick={menuPressed}\n              type=\"button\"\n              aria-expanded={isMenuOpen}\n              id=\"menu-open-button\"\n            >\n              <Icon\n                name=\"menu\"\n                size=\"md\"\n                className={cx('m-auto block', {\n                  'text-text-inverse': isDark,\n                })}\n              />\n              <span\n                className={cx('brand-wa:font-normal brand-ey:font-normal text-xs font-semibold', {\n                  'text-text-inverse': isDark,\n                })}\n              >\n                <span className=\"sr-only\">{t('open')}</span>\n                {t('menu')}\n              </span>\n            </button>\n          ) : null}\n          {!suppressLogo ? (\n            <HeaderLogoLink\n              theme={theme}\n              brand={brand}\n              className={cx({\n                'self-end sm:self-center': !!languageSelectorOptions,\n              })}\n              heading={heading}\n            />\n          ) : null}\n          <div className=\"ms-auto flex flex-col items-center gap-x-2 sm:flex-row\">\n            {languageSelectorOptions ? (\n              <div className=\"pb-5 sm:pb-0\">\n                <LanguageSelector theme={theme} {...languageSelectorOptions} />\n              </div>\n            ) : null}\n            <div className=\"ms-auto flex items-center gap-x-2\">\n              {activeUserLinks?.findStayLink && !shouldSuppressFindStay ? (\n                <Link\n                  className=\"mb-1\"\n                  anchorClassName=\"text-center min-w-16 w-min align-middle\"\n                  underline={false}\n                  url={activeUserLinks?.findStayLink.url}\n                  isNewWindow={shouldOpenAccountLinksInNewWindow}\n                  showNewWindowIcon={false}\n                  onClick={() => {\n                    sendInteractionReward();\n                    sendReward('find-stay-click');\n                    trackNavClick('gh_findstay');\n                  }}\n                >\n                  {isGlowVariant && !user ? (\n                    <span className=\"brand-wa:font-normal brand-ey:font-normal hover:text-primary inline-block text-xs font-semibold hover:underline\">\n                      {t('findStay')}\n                    </span>\n                  ) : (\n                    <>\n                      <Icon\n                        name=\"calendar\"\n                        size=\"md\"\n                        className={cx('m-auto block', {\n                          'nav-icon': !theme,\n                          'text-text-inverse': isDark,\n                        })}\n                      />\n                      <span\n                        className={cx(\n                          'brand-wa:font-normal brand-ey:font-normal inline-block text-xs font-semibold',\n                          {\n                            'text-text-inverse': isDark,\n                          }\n                        )}\n                      >\n                        {t('findStay')}\n                      </span>\n                    </>\n                  )}\n                </Link>\n              ) : null}\n              {isGlowVariant && !user ? <div className=\"bg-border h-7 w-px\" /> : null}\n              {user ? (\n                <button\n                  className=\"items-center\"\n                  onClick={() => {\n                    trackNavClick('gh_membername');\n                    accountPressed();\n                  }}\n                  aria-expanded={isAccountOpen}\n                  type=\"button\"\n                >\n                  <Icon\n                    name=\"user-circle\"\n                    size=\"md\"\n                    className={cx('m-auto block', {\n                      'nav-icon': !theme,\n                      'nav-icon-dark': isDark,\n                    })}\n                  />\n                  <span\n                    className={cx(\n                      'brand-ey:font-normal brand-wa:font-normal break-all text-xs font-semibold',\n                      {\n                        'text-text-inverse': isDark,\n                      }\n                    )}\n                  >\n                    {t('greetings', { username: user.name })}\n                  </span>\n                </button>\n              ) : (activeUserLinks?.signInLink || activeUserLinks?.signUpLink) &&\n                !shouldSuppressJoinAndSignIn ? (\n                <div className={cx('flex flex-col', { 'pt-7': !isGlowVariant })}>\n                  <div className=\"flex items-center\">\n                    {activeUserLinks?.signUpLink && !SignUpComponent ? (\n                      <div className={cx('h-fit', { 'ms-1': isGlowVariant })}>\n                        <Link\n                          {...activeUserLinks.signUpLink}\n                          showNewWindowIcon={false}\n                          underline={false}\n                          className={\n                            isGlowVariant\n                              ? 'hover:text-primary inline-block pe-2 text-xs font-semibold hover:underline'\n                              : joinButtonClasses\n                          }\n                          onClick={() => {\n                            sendInteractionReward();\n                            sendReward('nav-join-click');\n                            trackNavClick('gh_join_signin');\n                          }}\n                        >\n                          {t('signUp')}\n                        </Link>\n                      </div>\n                    ) : null}\n                    {SignUpComponent ? (\n                      <div className=\"h-fit\">\n                        <SignUpComponent\n                          className={joinButtonClasses}\n                          loggedInButtonRef={userLoggedInButtonRef}\n                        >\n                          {t('signUp')}\n                        </SignUpComponent>\n                      </div>\n                    ) : null}\n                    {activeUserLinks.signInLink && isSpeechBubble ? (\n                      <div\n                        className=\"ps-2\"\n                        onClick={() => {\n                          sendInteractionReward();\n                          trackNavClick('gh_join_signin');\n                        }}\n                      >\n                        <NavItemWithSpeechBubble\n                          frameSrc={activeUserLinks?.signInLink?.url || ''}\n                          title={t('osc-login:signIn')}\n                          onLoginAttempt={onSignInAttempt}\n                          variant={variant}\n                          buttonClassName={cx(\n                            'brand-wa:!font-normal brand-ey:font-normal text-xs font-semibold',\n                            {\n                              'text-text-inverse': isDark,\n                            }\n                          )}\n                          onDialogOpen={() => {\n                            setIsMenuOpen(false);\n                            setIsAccountOpen(false);\n                          }}\n                          {...loginOptions}\n                        >\n                          <Icon\n                            name=\"user-circle\"\n                            size=\"md\"\n                            className={cx('-ms-[22px] -mt-7 block', {\n                              'nav-icon': !theme,\n                              'nav-icon-dark': isDark,\n                            })}\n                          />\n                          <span>{t('osc-login:signIn')}</span>\n                        </NavItemWithSpeechBubble>\n                      </div>\n                    ) : null}\n                    {activeUserLinks.signInLink && !isSpeechBubble ? (\n                      <div\n                        className=\"ps-2\"\n                        onClick={() => {\n                          sendInteractionReward();\n                          trackNavClick('gh_join_signin');\n                        }}\n                      >\n                        {!isGlowVariant ? (\n                          <Icon\n                            name=\"user-circle\"\n                            size=\"md\"\n                            className={cx('-ms-[22px] -mt-7 block', {\n                              'nav-icon': !theme,\n                              'nav-icon-dark': isDark,\n                            })}\n                          />\n                        ) : null}\n                        <Login\n                          frameSrc={activeUserLinks?.signInLink?.url || ''}\n                          title={t('osc-login:signIn')}\n                          onLoginAttempt={onSignInAttempt}\n                          hideIcon={true}\n                          onOpen={() => {\n                            setIsMenuOpen(false);\n                            setIsAccountOpen(false);\n                          }}\n                          buttonClassName={\n                            isGlowVariant\n                              ? 'btn btn-primary-outline text-xs font-semibold transition-shadow duration-300 ease-in-out shadow-[0_0_15px_rgb(0,144,147)] hover:shadow-none'\n                              : cx(\n                                  'brand-wa:!font-normal brand-ey:font-normal text-xs font-semibold',\n                                  {\n                                    'text-text-inverse': isDark,\n                                  }\n                                )\n                          }\n                          {...loginOptions}\n                        />\n                      </div>\n                    ) : null}\n                  </div>\n                </div>\n              ) : null}\n            </div>\n          </div>\n        </div>\n        {(isMenuOpen || isAccountOpen) && (\n          <div\n            className=\"bg-overlay animate-fadein absolute top-0 z-50 h-screen w-full overflow-hidden backdrop-blur-[2px]\"\n            data-testid=\"backgroundOverlay\"\n            onClick={closeMenus}\n          />\n        )}\n        {menuItems && menuItems.length > 0 ? (\n          <div\n            data-testid=\"menuWindow\"\n            className={cx({ visible: isMenuOpen, invisible: !isMenuOpen })}\n          >\n            <DrawerPanel\n              isOpen={isMenuOpen}\n              alignment=\"left\"\n              appWrapperId={wrapperId}\n              interactiveElementWrapperId=\"drawer-nav\"\n              returnFocus={() => {\n                document.getElementById('menu-open-button')?.focus();\n                return false;\n              }}\n            >\n              <DrawerList isOpen={isMenuOpen} menuItems={menuItems} onClose={closeMainMenu} />\n            </DrawerPanel>\n          </div>\n        ) : null}\n        <DrawerPanel\n          isOpen={isAccountOpen}\n          alignment=\"right\"\n          appWrapperId={wrapperId}\n          interactiveElementWrapperId=\"drawer-nav\"\n        >\n          {user && isAccountOpen ? (\n            <AccountSection\n              user={user}\n              userLinks={activeUserLinks}\n              onClose={closeAccount}\n              onSignOut={onSignOut}\n              shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n              shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n            />\n          ) : null}\n        </DrawerPanel>\n      </nav>\n\n      <nav className=\"hidden lg:block\">\n        <MegaMenu\n          isFluid={isFluid}\n          suppressLogo={suppressLogo}\n          shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n          shouldSuppressFindStay={shouldSuppressFindStay}\n          shouldSuppressJoinAndSignIn={shouldSuppressJoinAndSignIn}\n          shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n          brand={brand}\n          onSignInAttempt={onSignInAttempt}\n          onSignOut={onSignOut}\n          user={user}\n          userLinks={activeUserLinks}\n          mainNavLinks={menuItems}\n          languageSelectorOptions={languageSelectorOptions}\n          loginOptions={loginOptions}\n          heading={heading}\n          theme={theme}\n          mvts={mvts}\n          SignUpComponent={SignUpComponent}\n        />\n      </nav>\n    </>\n  );\n};\n\nexport type TAccountSection = Pick<\n  TBrandHeaderBody,\n  | 'userLinks'\n  | 'onSignOut'\n  | 'shouldSuppressHonorsAccountLinks'\n  | 'shouldOpenAccountLinksInNewWindow'\n> &\n  Required<Pick<TBrandHeaderBody, 'user'>> & {\n    onClose: () => void;\n  };\n\nconst AccountUserLink = ({\n  url,\n  onClick,\n  children,\n  isNewWindow,\n}: {\n  url: string;\n  onClick: () => void;\n  children: React.ReactNode;\n  isNewWindow?: boolean;\n}) => {\n  return (\n    <Link\n      anchorClassName={cx(\n        'border-border block px-6 py-2',\n        'brand-ey:border-primary-alt brand-ey:hover:bg-tertiary-alt brand-ey:focus:bg-tertiary-alt',\n        'brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n        'brand-lx:hover:bg-bg-light brand-lx:focus:bg-bg-light',\n        'brand-ou:border-primary brand-ou:hover:bg-bg-light brand-ou:focus:bg-bg-light'\n      )}\n      className=\"brand-ey:font-normal brand-gu:font-normal brand-gu:font-mono brand-hi-refresh:font-normal brand-nd:font-medium brand-nd:font-mono text-text font-bold\"\n      underline={false}\n      url={url}\n      onClick={onClick}\n      isNewWindow={isNewWindow}\n    >\n      {children}\n    </Link>\n  );\n};\n\nconst AccountSection = ({\n  user,\n  userLinks,\n  onClose,\n  onSignOut,\n  shouldSuppressHonorsAccountLinks,\n  shouldOpenAccountLinksInNewWindow,\n}: TAccountSection) => {\n  const { locale = 'en' } = useRouter();\n\n  const { t } = useTranslation('osc-header');\n  const formattedHonorsPointsTotal = getLocaleFormattedNumber(user.honorsPoints, { locale });\n\n  return (\n    <FocusLock returnFocus>\n      <div className=\"border-border brand-ey:border-primary-alt brand-ou:border-primary relative mb-2 border-b px-4 py-3\">\n        <button onClick={onClose} type=\"button\" className=\"px-2\">\n          <Icon name=\"close\" size=\"md\" className=\"m-auto\" />\n          <span className=\"brand-ey:font-normal brand-wa:font-normal text-xs font-semibold\">\n            {t('close')}\n            <span className=\"sr-only\">{t('closeAccountDetails')}</span>\n          </span>\n        </button>\n      </div>\n      <div className=\"flex\">\n        <div className=\"px-4\">\n          <div className=\"bg-hilton-alt flex size-12 items-center justify-center rounded-full p-2\">\n            <Icon name=\"user\" size=\"xl\" />\n          </div>\n        </div>\n        <div className=\"brand-ey:font-normal brand-gu:font-normal brand-gu:font-mono brand-hi-refresh:font-normal brand-nd:font-medium brand-nd:font-mono font-bold\">\n          <span>{t('greetings', { username: user.name })}</span>\n          <div className=\"capitalize\">\n            <span className=\"underline\">{user.honorsTier}</span> {t('status')}\n          </div>\n          <div>{t('honorsPointsTotal', { honorsPointsTotal: formattedHonorsPointsTotal })}</div>\n          {user.hhonorsNumber ? (\n            <div>{t('hiltonHonorsNumber', { hhonorsNumber: user.hhonorsNumber })}</div>\n          ) : null}\n        </div>\n      </div>\n      <div className=\"border-border brand-ey:border-primary-alt brand-ou:border-primary mt-4 divide-y divide-solid border-y\">\n        {userLinks?.accountLink?.url ? (\n          <AccountUserLink\n            url={userLinks.accountLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorshome');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('hiltonHonorsHome')}\n          </AccountUserLink>\n        ) : null}\n        {userLinks?.honorsProfileLink?.url ? (\n          <AccountUserLink\n            url={userLinks.honorsProfileLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorsprofile');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('profile')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.honorsActivityLink?.url && !shouldSuppressHonorsAccountLinks ? (\n          <AccountUserLink\n            url={userLinks.honorsActivityLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorsactivity');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('activity')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.honorsPointsLink?.url && !shouldSuppressHonorsAccountLinks ? (\n          <AccountUserLink\n            url={userLinks.honorsPointsLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hiltonhonorspoints');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('pointsLabel')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.goHiltonLink?.url ? (\n          <AccountUserLink\n            url={userLinks.goHiltonLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_gohiltonprogramdetails');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('goHiltonProgramDetails')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.friendsAndFamilyLink?.url ? (\n          <AccountUserLink\n            url={userLinks.friendsAndFamilyLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_managefriendsandfamily');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('manageFriendsAndFamily')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.hgvMaxLink?.url ? (\n          <AccountUserLink\n            url={userLinks.hgvMaxLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_hgvmaxratedetails');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('hgvMaxRateDetails')}\n          </AccountUserLink>\n        ) : null}\n\n        {userLinks?.smbMemberLink?.url ? (\n          <AccountUserLink\n            url={userLinks.smbMemberLink.url}\n            onClick={() => {\n              trackNavClick('gh_membername_managehiltonforbusiness');\n            }}\n            isNewWindow={shouldOpenAccountLinksInNewWindow}\n          >\n            {t('manageHiltonForBusiness')}\n          </AccountUserLink>\n        ) : null}\n\n        <button\n          className={cx(\n            'text-text border-border block w-full px-6 py-2 text-left font-bold rtl:text-start',\n            'brand-ey:font-normal brand-ey:border-primary-alt brand-ey:hover:bg-tertiary-alt brand-ey:focus:bg-tertiary-alt',\n            'brand-gu:font-normal brand-gu:font-mono',\n            'brand-hi-refresh:font-normal brand-hi-refresh:hover:bg-bg-light brand-hi-refresh:focus:bg-bg-light',\n            'brand-lx:hover:bg-bg-light brand-lx:focus:bg-bg-light',\n            'brand-nd:font-medium brand-nd:font-mono',\n            'brand-ou:border-primary brand-ou:hover:bg-bg-light brand-ou:focus:bg-bg-light'\n          )}\n          onClick={async () => {\n            trackNavClick('gh_membername_signout');\n            onClose();\n            await onSignOut();\n          }}\n          type=\"button\"\n        >\n          {t('signOut')}\n        </button>\n      </div>\n    </FocusLock>\n  );\n};\n","import type * as React from 'react';\nimport cx from 'classnames';\nimport Icon from '@dx-ui/osc-icon';\nimport type { IconProps } from '@dx-ui/osc-icon';\n\nexport type BannerNotificationProps = {\n  /** Content to be displayed in banner notification. */\n  children: React.ReactNode;\n  /** The status to be use. */\n  status: 'error' | 'success' | 'normal';\n  customIcon?: IconProps;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst STATUS_ROLE_MAPPER = Object.freeze({\n  error: 'assertive',\n  success: 'polite',\n  normal: 'polite',\n});\n\n/**\n * Displays a banner notification message with an icon.\n */\nexport const BannerNotification = ({\n  status,\n  children,\n  className,\n  customIcon,\n  ...rest\n}: BannerNotificationProps) => {\n  return (\n    <div\n      className={cx(\n        'flex w-full items-center gap-x-2 p-4 sm:px-6',\n        {\n          'bg-danger-alt text-danger': status === 'error',\n          'bg-success-alt text-success': status === 'success',\n          'bg-bg-alt text-bg-inverse': status === 'normal',\n        },\n        className\n      )}\n      aria-live={STATUS_ROLE_MAPPER[status]}\n      aria-atomic={true}\n      data-testid=\"bannerNotification\"\n      {...rest}\n    >\n      {customIcon ? (\n        <Icon {...customIcon} />\n      ) : (\n        <>\n          {status === 'error' && <Icon name=\"close-circle\" variant=\"solid\" />}\n          {status === 'success' && <Icon name=\"check-circle\" variant=\"solid\" />}\n        </>\n      )}\n      {children}\n    </div>\n  );\n};\n","export * from './lib/banner-notification';\n","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n  #client;\n  #currentResult = void 0;\n  #currentMutation;\n  #mutateOptions;\n  constructor(client, options) {\n    super();\n    this.#client = client;\n    this.setOptions(options);\n    this.bindMethods();\n    this.#updateResult();\n  }\n  bindMethods() {\n    this.mutate = this.mutate.bind(this);\n    this.reset = this.reset.bind(this);\n  }\n  setOptions(options) {\n    const prevOptions = this.options;\n    this.options = this.#client.defaultMutationOptions(options);\n    if (!shallowEqualObjects(this.options, prevOptions)) {\n      this.#client.getMutationCache().notify({\n        type: \"observerOptionsUpdated\",\n        mutation: this.#currentMutation,\n        observer: this\n      });\n    }\n    if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n      this.reset();\n    } else if (this.#currentMutation?.state.status === \"pending\") {\n      this.#currentMutation.setOptions(this.options);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#currentMutation?.removeObserver(this);\n    }\n  }\n  onMutationUpdate(action) {\n    this.#updateResult();\n    this.#notify(action);\n  }\n  getCurrentResult() {\n    return this.#currentResult;\n  }\n  reset() {\n    this.#currentMutation?.removeObserver(this);\n    this.#currentMutation = void 0;\n    this.#updateResult();\n    this.#notify();\n  }\n  mutate(variables, options) {\n    this.#mutateOptions = options;\n    this.#currentMutation?.removeObserver(this);\n    this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n    this.#currentMutation.addObserver(this);\n    return this.#currentMutation.execute(variables);\n  }\n  #updateResult() {\n    const state = this.#currentMutation?.state ?? getDefaultState();\n    this.#currentResult = {\n      ...state,\n      isPending: state.status === \"pending\",\n      isSuccess: state.status === \"success\",\n      isError: state.status === \"error\",\n      isIdle: state.status === \"idle\",\n      mutate: this.mutate,\n      reset: this.reset\n    };\n  }\n  #notify(action) {\n    notifyManager.batch(() => {\n      if (this.#mutateOptions && this.hasListeners()) {\n        const variables = this.#currentResult.variables;\n        const context = this.#currentResult.context;\n        if (action?.type === \"success\") {\n          this.#mutateOptions.onSuccess?.(action.data, variables, context);\n          this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n        } else if (action?.type === \"error\") {\n          this.#mutateOptions.onError?.(action.error, variables, context);\n          this.#mutateOptions.onSettled?.(\n            void 0,\n            action.error,\n            variables,\n            context\n          );\n        }\n      }\n      this.listeners.forEach((listener) => {\n        listener(this.#currentResult);\n      });\n    });\n  }\n};\nexport {\n  MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport { MutationObserver, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { noop, shouldThrowError } from \"./utils.js\";\nfunction useMutation(options, queryClient) {\n  const client = useQueryClient(queryClient);\n  const [observer] = React.useState(\n    () => new MutationObserver(\n      client,\n      options\n    )\n  );\n  React.useEffect(() => {\n    observer.setOptions(options);\n  }, [observer, options]);\n  const result = React.useSyncExternalStore(\n    React.useCallback(\n      (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n      [observer]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  const mutate = React.useCallback(\n    (variables, mutateOptions) => {\n      observer.mutate(variables, mutateOptions).catch(noop);\n    },\n    [observer]\n  );\n  if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n    throw result.error;\n  }\n  return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n  useMutation\n};\n//# sourceMappingURL=useMutation.js.map","import type * as Types from './types';\n\nimport {\n  useQuery,\n  useMutation,\n  type QueryClient,\n  type FetchQueryOptions,\n  type UseQueryOptions,\n  type UseMutationOptions,\n} from '@tanstack/react-query';\n\nexport const Countries_AddressOptionsDocument = {\n  operationName: 'countries_AddressOptions',\n  operationString: `query countries_AddressOptions($language: String!, $code: String, $type: AddressOptionsAddressType) {\n  countries(language: $language, filter: {code: $code}) {\n    code\n    name\n    addressOptions(type: $type) {\n      name\n      label\n      maxLength\n      required\n    }\n    states(sort: {by: name, order: asc}) {\n      value: code\n      name\n    }\n  }\n}`,\n  originalOpName: 'countries_AddressOptions',\n};\nexport function useCountries_AddressOptionsQuery<\n  TData = Types.Countries_AddressOptionsQuery,\n  TError = unknown\n>(\n  variables: Types.Countries_AddressOptionsQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Countries_AddressOptionsQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Countries_AddressOptionsQuery, TError, TData>({\n    queryKey: [Countries_AddressOptionsDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideCountries_AddressOptionsQuery(\n  queryClient: QueryClient,\n  variables: Types.Countries_AddressOptionsQueryVariables,\n  options?: FetchQueryOptions<Types.Countries_AddressOptionsQuery>\n) {\n  return queryClient.fetchQuery<Types.Countries_AddressOptionsQuery>({\n    queryKey: [Countries_AddressOptionsDocument, variables],\n    ...options,\n  });\n}\n\nexport const GeocodeDocument = {\n  operationName: 'geocode',\n  operationString: `query geocode($postalCode: String, $language: String!) {\n  geocode(language: $language, postalCode: $postalCode) {\n    match {\n      address {\n        city\n        state\n      }\n    }\n  }\n}`,\n  originalOpName: 'geocode',\n};\nexport function useGeocodeQuery<TData = Types.GeocodeQuery, TError = unknown>(\n  variables: Types.GeocodeQueryVariables,\n  options?: Omit<UseQueryOptions<Types.GeocodeQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.GeocodeQuery, TError, TData>({\n    queryKey: [GeocodeDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGeocodeQuery(\n  queryClient: QueryClient,\n  variables: Types.GeocodeQueryVariables,\n  options?: FetchQueryOptions<Types.GeocodeQuery>\n) {\n  return queryClient.fetchQuery<Types.GeocodeQuery>({\n    queryKey: [GeocodeDocument, variables],\n    ...options,\n  });\n}\n\nexport const Brand_CountriesDocument = {\n  operationName: 'brand_countries',\n  operationString: `query brand_countries($after: String, $containsHotels: Boolean, $first: Int, $language: String!, $countryFilter: CountryFilterInput, $regionFilter: CountryStateFilterInput, $cityFilter: CountryCityFilterInput, $getStates: Boolean = false, $getCities: Boolean = false, $getMarketing: Boolean = false, $getCCSMarketing: Boolean = false) {\n  countries(\n    after: $after\n    containsHotels: $containsHotels\n    filter: $countryFilter\n    first: $first\n    language: $language\n    sort: {by: name}\n  ) {\n    code\n    callingCode\n    dataSubjectRights\n    marketingConsent @include(if: $getMarketing)\n    marketingOptIn @include(if: $getMarketing)\n    marketingOptInForHGV @include(if: $getMarketing)\n    marketingOptin @include(if: $getCCSMarketing) {\n      dataSubjectRights\n      marketingOptinRules {\n        category\n        optIns {\n          autoOptIn\n          _id\n          customerTextExternal\n          name\n          subscriptionCodes\n          termsAndConditionsBook\n          termsAndConditionsJoin\n        }\n      }\n    }\n    name: displayName\n    states(filter: $regionFilter) @include(if: $getStates) {\n      name\n      code\n      personalDataRequest\n      value: code\n      cities(filter: $cityFilter, sort: {by: name, order: asc}) @include(if: $getCities) {\n        name\n        value: name\n        brandCodes\n      }\n    }\n    cities(filter: $cityFilter, onlyIfNoStates: true, sort: {by: name, order: asc}) @include(if: $getCities) {\n      name\n      value: name\n      brandCodes\n    }\n  }\n}`,\n  originalOpName: 'brand_countries',\n};\nexport function useBrand_CountriesQuery<TData = Types.Brand_CountriesQuery, TError = unknown>(\n  variables: Types.Brand_CountriesQueryVariables,\n  options?: Omit<UseQueryOptions<Types.Brand_CountriesQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.Brand_CountriesQuery, TError, TData>({\n    queryKey: [Brand_CountriesDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideBrand_CountriesQuery(\n  queryClient: QueryClient,\n  variables: Types.Brand_CountriesQueryVariables,\n  options?: FetchQueryOptions<Types.Brand_CountriesQuery>\n) {\n  return queryClient.fetchQuery<Types.Brand_CountriesQuery>({\n    queryKey: [Brand_CountriesDocument, variables],\n    ...options,\n  });\n}\n\nexport const CreateGuestDocument = {\n  operationName: 'createGuest',\n  operationString: `mutation createGuest($input: EnrollInput!, $language: String!, $recaptchaInput: RecaptchaInput) {\n  createGuest(input: $input, language: $language, recaptchaInput: $recaptchaInput) {\n    data {\n      guestId\n      hhonorsNumber\n    }\n    error {\n      code\n      context\n      message\n      notifications {\n        code\n        fields\n        message\n      }\n    }\n  }\n}`,\n  originalOpName: 'createGuest',\n};\nexport function useCreateGuestMutation<TError = unknown, TContext = unknown>(\n  options: UseMutationOptions<\n    Types.CreateGuestMutation,\n    TError,\n    [typeof CreateGuestDocument, Types.CreateGuestMutationVariables],\n    TContext\n  > = {}\n) {\n  return useMutation<\n    Types.CreateGuestMutation,\n    TError,\n    [typeof CreateGuestDocument, Types.CreateGuestMutationVariables],\n    TContext\n  >({\n    ...options,\n  });\n}\nexport const Languages_DefaultCountryCodeDocument = {\n  operationName: 'languages_defaultCountryCode',\n  operationString: `query languages_defaultCountryCode($language: String!) {\n  languages(language: $language, filter: {languageCodeOHW: $language}) {\n    defaultCountryCode\n  }\n}`,\n  originalOpName: 'languages_defaultCountryCode',\n};\nexport function useLanguages_DefaultCountryCodeQuery<\n  TData = Types.Languages_DefaultCountryCodeQuery,\n  TError = unknown\n>(\n  variables: Types.Languages_DefaultCountryCodeQueryVariables,\n  options?: Omit<\n    UseQueryOptions<Types.Languages_DefaultCountryCodeQuery, TError, TData>,\n    'queryKey'\n  >\n) {\n  return useQuery<Types.Languages_DefaultCountryCodeQuery, TError, TData>({\n    queryKey: [Languages_DefaultCountryCodeDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideLanguages_DefaultCountryCodeQuery(\n  queryClient: QueryClient,\n  variables: Types.Languages_DefaultCountryCodeQueryVariables,\n  options?: FetchQueryOptions<Types.Languages_DefaultCountryCodeQuery>\n) {\n  return queryClient.fetchQuery<Types.Languages_DefaultCountryCodeQuery>({\n    queryKey: [Languages_DefaultCountryCodeDocument, variables],\n    ...options,\n  });\n}\n","export const AutoComplete = {\n  ADDRESSLINE1: 'address-line1',\n  ADDRESSLINE2: 'address-line2',\n  CITY: 'address-level2',\n  COUNTRY: 'country',\n  CURRENTPASSWORD: 'current-password',\n  EMAIL: 'email',\n  FAMILYNAME: 'family-name',\n  GIVENNAME: 'given-name',\n  NAME: 'name',\n  NEWPASSWORD: 'new-password',\n  OFF: 'off',\n  POSTALCODE: 'postal-code',\n  STATE: 'address-level1',\n  STREETADDRESS: 'street-address',\n  TEL: 'tel',\n  TELNATIONAL: 'tel-national',\n  USERNAME: 'username',\n  CREDITCARD: 'cc-number',\n} as const;\n","import { useFormContext } from 'react-hook-form';\nimport { FormInput, FormSelect } from '@dx-ui/osc-form';\nimport { useCountries_AddressOptionsQuery, useGeocodeQuery } from './queries/generated/queries';\nimport type { AddressOptionsAddressType } from '@dx-ui/gql-types';\nimport { useCallback, useState, useEffect } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { AutoComplete } from './auto-complete';\n\nconst getAutoComplete = (name: string) => {\n  switch (name) {\n    case 'addressLine1':\n    case 'businessAddressLine1':\n      return AutoComplete.ADDRESSLINE1;\n    case 'addressLine2':\n    case 'businessAddressLine2':\n      return AutoComplete.ADDRESSLINE2;\n    case 'city':\n      return AutoComplete.CITY;\n    case 'state':\n      return AutoComplete.STATE;\n    case 'postalCode':\n      return AutoComplete.POSTALCODE;\n    default:\n      return '';\n  }\n};\n\nexport const Modes = {\n  Add: 'add',\n  Edit: 'edit',\n} as const;\n\nexport type ModesType = (typeof Modes)[keyof typeof Modes];\n\nexport function AddressFields({\n  code = 'US',\n  language = 'en',\n  type = 'nonBusiness',\n  groupName,\n  componentState = Modes.Add,\n  setLoadingGeocode,\n}: {\n  code: string;\n  groupName?: string;\n  language?: string;\n  type?: AddressOptionsAddressType;\n  componentState?: ModesType;\n  setLoadingGeocode?: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n  const [t] = useTranslation('osc-join-form-form');\n  const {\n    setError,\n    clearErrors,\n    setValue,\n    watch,\n    formState: { touchedFields },\n    register,\n    getFieldState,\n  } = useFormContext();\n\n  const [isZipInvalid, setIsZipInvalid] = useState(false);\n\n  const shouldHideCityAndStateFields =\n    code === 'US' && !isZipInvalid && componentState === Modes.Add;\n\n  const getFieldKey = useCallback(\n    (field: string): string => (groupName ? `${groupName}.${field}` : field),\n    [groupName]\n  );\n\n  const isPostalCodeTouched = getFieldState(getFieldKey('postalCode'))?.isTouched;\n\n  const zipCode = watch(getFieldKey('postalCode'));\n  const city = watch(getFieldKey('city'));\n  const state = watch(getFieldKey('state'));\n\n  const { data: addressFieldData } = useCountries_AddressOptionsQuery(\n    { language, code, type },\n    { enabled: !!code }\n  );\n  const states = addressFieldData?.countries?.[0]?.states || [];\n\n  // Set 'Please select' option as default for state select element\n  useEffect(() => {\n    if (componentState === Modes.Add) {\n      if (!touchedFields[getFieldKey('state')]) {\n        setValue(getFieldKey('state'), states.length > 0 ? 'pleaseSelect' : '');\n      }\n    }\n  }, [getFieldKey, setValue, states, touchedFields, componentState]);\n\n  const {\n    data: geoLocationData,\n    isLoading,\n    error,\n  } = useGeocodeQuery(\n    {\n      language,\n      postalCode: watch(getFieldKey('postalCode')),\n    },\n    {\n      enabled:\n        !!/^(?!0{5,})\\d{5}(-\\d{4})?$/.test(zipCode) &&\n        code === 'US' &&\n        !(componentState === Modes.Edit && !isPostalCodeTouched),\n    }\n  );\n\n  useEffect(() => {\n    if (geoLocationData) {\n      if (\n        !geoLocationData?.geocode?.match?.address?.city ||\n        !geoLocationData?.geocode?.match?.address?.state\n      ) {\n        setIsZipInvalid(true);\n        setValue(getFieldKey('city'), '');\n        setValue(getFieldKey('state'), 'pleaseSelect');\n        setError(getFieldKey('postalCode'), {\n          type: 'validate',\n          message: t('address.zipCode.error_lookup'),\n        });\n      } else {\n        clearErrors(getFieldKey('postalCode'));\n        clearErrors(getFieldKey('city'));\n        setValue(getFieldKey('city'), geoLocationData?.geocode?.match?.address?.city);\n        setValue(getFieldKey('state'), geoLocationData?.geocode?.match?.address?.state);\n        setIsZipInvalid(false);\n      }\n    } else if (error) {\n      const errors = JSON.parse(JSON.stringify(error));\n      for (const error of errors.graphQLErrors) {\n        if (error?.message === 'Not Found') {\n          setIsZipInvalid(true);\n          setValue(getFieldKey('city'), '');\n          setValue(getFieldKey('state'), 'pleaseSelect');\n          setError(getFieldKey('postalCode'), {\n            type: 'validate',\n            message: t('address.zipCode.error_lookup'),\n          });\n        }\n      }\n    }\n  }, [geoLocationData, setValue, getFieldKey, setError, t, clearErrors, error]);\n\n  useEffect(() => {\n    // set state to enable/ disable submit button depending on geocode query\n    if (setLoadingGeocode) {\n      if (isLoading) setLoadingGeocode(true);\n      else setLoadingGeocode(false);\n    }\n  }, [isLoading, setLoadingGeocode]);\n\n  const fields = addressFieldData?.countries?.[0]?.addressOptions;\n  if (!fields || !/^\\w{2}$/.test(code)) {\n    return null;\n  }\n\n  return (\n    <>\n      {fields.map(({ name, label, required }) => {\n        if (shouldHideCityAndStateFields && (name === 'state' || name === 'city')) {\n          return <input key={getFieldKey(name)} type=\"hidden\" {...register(getFieldKey(name))} />;\n        }\n\n        if (name === 'state' && states.length > 0) {\n          return (\n            <FormSelect\n              label={label}\n              labelClassName=\"w-full\"\n              name={getFieldKey(name)}\n              key={getFieldKey(name)}\n              autoComplete={AutoComplete.STATE}\n              optional={!required}\n              registerOptions={{\n                validate: (value) => {\n                  if (!required) {\n                    return true;\n                  }\n                  return value === 'pleaseSelect' || !value\n                    ? code === 'US'\n                      ? t('address.state.error')\n                      : t('address.province.error')\n                    : true;\n                },\n              }}\n            >\n              <option disabled hidden value=\"pleaseSelect\">\n                {t('pleaseSelect')}\n              </option>\n              {states.map((state) => (\n                <option value={state.value} key={state.value}>\n                  {state.name}\n                </option>\n              ))}\n            </FormSelect>\n          );\n        }\n\n        return (\n          <FormInput\n            label={label}\n            labelClassName=\"w-full flex-grow\"\n            name={getFieldKey(name)}\n            autoComplete={getAutoComplete(name)}\n            loading={name === 'postalCode' && isLoading}\n            optional={!required}\n            key={getFieldKey(name)}\n            registerOptions={{\n              validate: (value: string) => {\n                if (!required || (!!value && name !== 'postalCode')) {\n                  return true;\n                }\n                switch (name) {\n                  case 'addressLine1':\n                  case 'businessAddressLine1':\n                    if (code === 'JP') {\n                      return t('address.district.error');\n                    }\n                    return t('address.addressLine1.error');\n                  case 'state':\n                    return t('address.province.error');\n                  case 'city':\n                    if (code === 'JP') {\n                      return t('address.ward.error');\n                    }\n                    return t('address.city.error');\n                  case 'postalCode':\n                    if (code === 'US') {\n                      if (/^(?!0{5,})\\d{5}(-\\d{4})?$/.test(value)) {\n                        if ((isZipInvalid || !geoLocationData?.geocode) && (!city || !state)) {\n                          return t('address.zipCode.error_lookup');\n                        }\n                        return true;\n                      }\n                      if (value === '' && (!city || !state) && type === 'nonBusiness') {\n                        return t('address.zipCode.invalid');\n                      }\n                      return value === ''\n                        ? t('address.zipCode.error')\n                        : t('address.zipCode.invalid');\n                    }\n                    return required && value ? true : t('address.postalCode.error');\n                  default:\n                    if (name === 'businessAddressLine1') return t('address.addressLine1.error');\n                    if (name === 'businessAddressLine2') return t('address.addressLine2.error');\n                    return t(`address.${name}.error` as unknown as TemplateStringsArray);\n                }\n              },\n            }}\n            {...(name === 'addressLine1' ||\n            name === 'businessAddressLine1' ||\n            name === 'addressLine2' ||\n            name === 'businessAddressLine2' ||\n            name === 'city'\n              ? { maxLength: 35 }\n              : {})}\n          />\n        );\n      })}\n    </>\n  );\n}\n","import { useId } from 'react';\nimport { get, useFormContext } from 'react-hook-form';\nimport { FormErrorIcon, FormLabel } from '@dx-ui/osc-form';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\n\nimport type { FormInputBase } from '@dx-ui/osc-form';\nimport type { FieldError } from 'react-hook-form';\nimport type { InputHTMLAttributes } from 'react';\n\ntype FormInputPasswordProps<T> = {\n  passwordCriteriaClassName?: string;\n} & Omit<T, 'name'>;\n\nexport const FormInputPassword: React.FC<\n  React.PropsWithChildren<\n    FormInputBase<FormInputPasswordProps<InputHTMLAttributes<HTMLInputElement>>>\n  >\n> = ({\n  label,\n  name,\n  required,\n  optional,\n  registerOptions,\n  labelClassName,\n  className,\n  containerClassName,\n  passwordCriteriaClassName,\n  ...rest\n}) => {\n  const id = useId();\n  const helperId = `input-helper-${id}`;\n  const [t] = useTranslation('osc-join-form-form');\n  const {\n    register,\n    formState: { errors, touchedFields },\n  } = useFormContext();\n\n  const fieldError: FieldError = get(errors, name);\n  const touchedField = get(touchedFields, name);\n  const hasError = !!fieldError;\n\n  const passRequirements = [\n    { type: 'mustBe', message: t('password.requirements.mustBe') },\n    { type: 'containUpper', message: t('password.requirements.containUpper') },\n    { type: 'containLower', message: t('password.requirements.containLower') },\n    { type: 'containOneNumber', message: t('password.requirements.containOneNumber') },\n  ];\n\n  return (\n    <div className={cx({ [containerClassName as string]: !!containerClassName })}>\n      <FormLabel\n        label={label}\n        required={required}\n        optional={optional}\n        hasError={hasError}\n        className={cx('self-start', {\n          [labelClassName as string]: !!labelClassName,\n        })}\n      >\n        <input\n          {...rest}\n          className={cx('form-input', {\n            [className as string]: !!className,\n            'form-error': hasError,\n          })}\n          aria-invalid={hasError}\n          aria-describedby={helperId}\n          {...register(name, {\n            validate: {\n              required: (value: string) =>\n                /^(?=.*[A-Z])(?=.*[a-z])((?=.*[0-9])|(?=.*[#?!@$%^&*-])).{8,32}$/.test(value) ||\n                t('password.error'),\n              mustBe: (value: string) => /.{8,32}/.test(value) || t('password.requirements.mustBe'),\n              containUpper: (value: string) =>\n                /(?=.*[A-Z])/.test(value) || t('password.requirements.containUpper'),\n              containLower: (value: string) =>\n                /(?=.*[a-z])/.test(value) || t('password.requirements.containLower'),\n              containOneNumber: (value: string) =>\n                /(?=.*[0-9])|(?=.*[#?!@$%^&*-])/.test(value) ||\n                t('password.requirements.containOneNumber'),\n            },\n            ...registerOptions,\n          })}\n        />\n      </FormLabel>\n      <ul\n        id={helperId}\n        className={cx('mt-2 grid gap-2 text-sm md:grid-cols-2', {\n          [passwordCriteriaClassName as string]: !!passwordCriteriaClassName,\n        })}\n      >\n        {passRequirements.map(({ message, type }) => {\n          const hasRequirementError = fieldError?.types?.[type];\n          return (\n            <li\n              key={`passRequirement-${type}`}\n              className={cx('flex items-center space-x-2 rtl:space-x-reverse', {\n                'text-danger': hasRequirementError,\n                'text-success': !hasRequirementError && touchedField,\n              })}\n            >\n              {hasRequirementError && <FormErrorIcon className=\"mt-0.5 shrink-0\" />}\n              {!hasRequirementError && !touchedField && (\n                <svg\n                  role=\"img\"\n                  aria-hidden\n                  viewBox=\"-2 0 8 8\"\n                  height=\"16\"\n                  width=\"16\"\n                  className=\"mt-0.5 shrink-0\"\n                >\n                  <circle cx=\"4\" cy=\"4\" r=\"1\" fill=\"#1D1D1D\" />\n                </svg>\n              )}\n              {!hasRequirementError && touchedField && (\n                <svg\n                  role=\"img\"\n                  aria-hidden\n                  viewBox=\"0 -1 8 7\"\n                  width=\"16\"\n                  height=\"16\"\n                  className=\"mt-0.5 shrink-0\"\n                >\n                  <path\n                    d=\"M1 3l2 2 4-5\"\n                    stroke=\"#1A9448\"\n                    fill=\"none\"\n                    fillRule=\"evenodd\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                  />\n                </svg>\n              )}\n              <span>{message}</span>\n            </li>\n          );\n        })}\n      </ul>\n    </div>\n  );\n};\n","export const email =\n  /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9-]{2,}$/;\nexport const phone = /^[0-9-()\\s]{7,15}$/;\nexport const postalCode =\n  /^(?!0{5,})(?:[ \\x2D0-9A-Za-z\\xA0\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2000-\\u200A\\u202F\\u205F\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3000\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]){2,10}$/;\nexport const country = /^[A-Z]{2}$/;\n","import { FormError, FormHelpMessage, FormLabel } from '@dx-ui/osc-form';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { useId, useMemo } from 'react';\nimport { get, useFormContext } from 'react-hook-form';\n\nimport { AutoComplete } from './auto-complete';\nimport { phone } from './form-validation-regex';\n\nimport type { FieldError } from 'react-hook-form';\nimport type { Brand_CountriesQuery } from './queries/generated/types';\n\ntype Options = Brand_CountriesQuery['countries'][number];\n\ntype Props = {\n  containerClassName?: string;\n  classname?: string;\n  defaultValue?: string;\n  label?: string;\n  labelClassName?: string;\n  loading?: boolean;\n  options: Options[];\n  required?: boolean;\n  personalInformationPage?: boolean;\n  name?: string;\n  addDefaultOption?: boolean;\n  isDisabled?: boolean;\n  phoneCountryError?: string;\n};\n\nexport const FormInputPhone: React.FC<React.PropsWithChildren<Props>> = ({\n  required,\n  options,\n  containerClassName,\n  classname,\n  labelClassName,\n  defaultValue,\n  label,\n  loading,\n  personalInformationPage,\n  name = 'phone',\n  addDefaultOption,\n  isDisabled,\n  phoneCountryError,\n}) => {\n  const id = useId();\n  const helperId = `input-helper-${id}`;\n  const helperPhoneId = `input-helper-phone-${id}`;\n  const errorId = `input-error-${id}`;\n  const [t] = useTranslation('osc-join-form-form');\n  const {\n    register,\n    formState: { errors },\n  } = useFormContext();\n\n  const phoneNumberFieldError: FieldError = get(errors, `${name}.phoneNumber`);\n  const phoneCountryFieldError: FieldError = get(errors, `${name}.phoneCountry`);\n  const hasError = !!phoneNumberFieldError || !!phoneCountryFieldError;\n\n  const getOptions = useMemo(\n    () =>\n      options?.map(({ name, code, callingCode }) => (\n        <option\n          key={`option-${code}`}\n          value={`${callingCode}${code}`}\n          {...(`${callingCode}${code}` === defaultValue ? { selected: true } : {})}\n        >{`+${callingCode} ${name}`}</option>\n      )),\n    [defaultValue, options]\n  );\n\n  return (\n    <div\n      className={cx({\n        [containerClassName as string]: !!containerClassName,\n      })}\n    >\n      <div\n        className={cx('flex flex-col gap-y-4', {\n          'lg:hidden': personalInformationPage,\n          hidden: !personalInformationPage,\n        })}\n      >\n        <FormLabel\n          label={t('phone.phoneCountryLabel')}\n          required={required}\n          hasError={!!phoneCountryFieldError}\n          className={cx({\n            [labelClassName as string]: !!labelClassName,\n          })}\n        >\n          <span className={cx('flex flex-col gap-y-4')}>\n            <select\n              defaultValue={defaultValue}\n              autoComplete={AutoComplete.COUNTRY}\n              className={cx('form-select w-1/3 overflow-hidden focus:relative focus:z-0', {\n                'w-1/3': !personalInformationPage,\n                'w-full lg:w-1/3': personalInformationPage,\n                'form-error': !!phoneCountryFieldError,\n                disabled: loading,\n                [classname as string]: !!classname,\n              })}\n              disabled={loading}\n              data-testid=\"phone.phoneCountry\"\n              aria-invalid={!!phoneCountryFieldError}\n              aria-describedby={helperId}\n              {...register(`${name}.phoneCountry`, {\n                required: { value: true, message: t('phone.phoneCountryError') },\n              })}\n            >\n              {addDefaultOption ? (\n                <option key=\"selectCountry\" value=\"\" disabled>\n                  {t('phone.phoneCountrySelectOption')}\n                </option>\n              ) : null}\n\n              {options?.map(({ name, code, callingCode }) => (\n                <option\n                  key={`option-${code}`}\n                  value={`${callingCode}${code}`}\n                >{`+${callingCode} ${name}`}</option>\n              ))}\n            </select>\n          </span>\n        </FormLabel>\n        {phoneCountryFieldError && <FormError id={errorId} error={phoneCountryFieldError} />}\n\n        <FormLabel\n          label={label || t('phone.label')}\n          required={required}\n          hasError={!!phoneNumberFieldError}\n          className={cx({\n            [labelClassName as string]: !!labelClassName,\n          })}\n        >\n          <span className={cx('flex flex-col gap-y-4 lg:flex-row')}>\n            <input\n              autoComplete={AutoComplete.TEL}\n              type=\"tel\"\n              className={cx('form-input -ml-0.5 -mt-2 flex-1 focus:relative focus:z-0 lg:mt-0', {\n                'form-error': !!phoneNumberFieldError,\n                [classname as string]: !!classname,\n              })}\n              aria-invalid={!!phoneNumberFieldError}\n              aria-describedby={`${errorId} ${helperId}`}\n              data-testid=\"phone.phoneNumber\"\n              maxLength={15}\n              {...register(`${name}.phoneNumber`, {\n                required: { value: true, message: t('phone.phoneNumberError') },\n                pattern: { value: phone, message: t('phone.phoneNumberError') },\n              })}\n            />\n          </span>\n        </FormLabel>\n        {phoneNumberFieldError && <FormError id={errorId} error={phoneNumberFieldError} />}\n        <FormHelpMessage id={helperId} loading={loading} />\n      </div>\n      <div className={cx({ 'hidden lg:block': personalInformationPage })}>\n        <FormLabel\n          label={label || t('phone.label')}\n          required={required}\n          hasError={hasError}\n          className={cx({\n            [labelClassName as string]: !!labelClassName,\n          })}\n        >\n          <span\n            className={cx('flex', {\n              'flex-row': !personalInformationPage,\n              'flex-col lg:flex-row gap-y-4': personalInformationPage,\n            })}\n          >\n            <select\n              defaultValue={defaultValue}\n              autoComplete={AutoComplete.COUNTRY}\n              className={cx('form-select w-1/3 overflow-hidden focus:relative focus:z-0', {\n                'w-1/3': !personalInformationPage,\n                'w-full lg:w-1/3': personalInformationPage,\n                'form-error': !!phoneCountryFieldError,\n                disabled: loading || isDisabled,\n                [classname as string]: !!classname,\n              })}\n              disabled={loading || isDisabled}\n              data-testid=\"phone.phoneCountry\"\n              aria-invalid={!!phoneCountryFieldError}\n              aria-describedby={helperId}\n              {...register(`${name}.phoneCountry`, {\n                required: {\n                  value: true,\n                  message: phoneCountryError ? phoneCountryError : t('phone.phoneCountryError'),\n                },\n              })}\n            >\n              {addDefaultOption ? (\n                <option key=\"selectCountry\" value=\"\" disabled>\n                  {t('phone.phoneCountrySelectOption')}\n                </option>\n              ) : null}\n              {getOptions}\n            </select>\n\n            <input\n              autoComplete={AutoComplete.TEL}\n              type=\"tel\"\n              className={cx('form-input -ml-0.5 flex-1 focus:relative focus:z-0', {\n                '-mt-2 lg:mt-0': personalInformationPage,\n                'form-error': !!phoneNumberFieldError,\n                [classname as string]: !!classname,\n              })}\n              aria-invalid={!!phoneNumberFieldError}\n              aria-describedby={`${errorId} ${helperPhoneId}`}\n              data-testid=\"phone.phoneNumber\"\n              maxLength={15}\n              {...register(`${name}.phoneNumber`, {\n                required: { value: true, message: t('phone.phoneNumberError') },\n                pattern: { value: phone, message: t('phone.phoneNumberError') },\n              })}\n              disabled={isDisabled}\n            />\n          </span>\n        </FormLabel>\n        {phoneCountryFieldError && <FormError id={errorId} error={phoneCountryFieldError} />}\n        {phoneNumberFieldError && <FormError id={errorId} error={phoneNumberFieldError} />}\n        <FormHelpMessage id={helperId} loading={loading} />\n        <FormHelpMessage\n          id={helperPhoneId}\n          loading={loading}\n          message={label || t('phone.label')}\n          className=\"!hidden\"\n        />\n      </div>\n    </div>\n  );\n};\n","import { Markdown } from '@dx-ui/osc-markdown';\nimport type { Brand_CountriesQuery } from './queries/generated/types';\nimport { Link } from '@dx-ui/osc-link';\nimport { FormInput } from '@dx-ui/osc-form';\nimport { useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nconst Paragraph = ({ children }: { children: ReactNode }) => <p className=\"mb-4\">{children}</p>;\nconst WrappedLink = ({ href, ...rest }: { href: string }) => <Link url={href} {...rest} />;\nconst CustomerExternalParagraph = ({ children }: { children: ReactNode }) => (\n  <p className=\"!mt-0 ml-8 text-sm\">{children}</p>\n);\n\nexport const MarketingContent = ({\n  selectedCountry,\n  setMarketingOptinsSelected,\n  language,\n  origin,\n}: {\n  selectedCountry: NonNullable<Brand_CountriesQuery>['countries'][0];\n  setMarketingOptinsSelected: React.Dispatch<React.SetStateAction<number[]>>;\n  language: string;\n  origin: string;\n}) => {\n  const marketingOptin = selectedCountry?.marketingOptin;\n  const rules = marketingOptin?.marketingOptinRules[0];\n  const optIns = useMemo(\n    () => rules?.optIns.filter((optIn) => !optIn?.autoOptIn) || [],\n    [rules?.optIns]\n  );\n  const termsAndConditions = useMemo(\n    () =>\n      rules?.optIns.find((optIn) => optIn?.termsAndConditionsJoin)?.termsAndConditionsJoin ?? '',\n    [rules?.optIns]\n  );\n\n  const handleMarketingOptinChange = (\n    event: React.ChangeEvent<HTMLInputElement>,\n    index: number\n  ) => {\n    setMarketingOptinsSelected((prevSelected) => {\n      const isChecked = event.target?.checked;\n      if (isChecked) {\n        return [...prevSelected, index];\n      } else {\n        return prevSelected.filter((i) => i !== index);\n      }\n    });\n  };\n\n  return (\n    <>\n      {optIns &&\n        optIns.map((optIn, index) => {\n          const { autoOptIn, customerTextExternal, name } = optIn;\n          if (autoOptIn) {\n            return null;\n          }\n          return (\n            <section key={optIn._id}>\n              <FormInput\n                name={`marketing.${index}`}\n                label={name}\n                type=\"checkbox\"\n                labelClassName=\"w-full\"\n                optional={true}\n                aria-describedby={`marketing-${index}`}\n                registerOptions={{\n                  onChange: (event) => handleMarketingOptinChange(event, index),\n                }}\n              />\n              {customerTextExternal && (\n                <Markdown\n                  language={language}\n                  origin={origin}\n                  options={{\n                    forceBlock: true,\n                    overrides: {\n                      p: CustomerExternalParagraph,\n                      a: {\n                        component: WrappedLink,\n                        props: {\n                          className: 'underline text-primary hover:text-primary-alt text-base',\n                          isNewWindow: true,\n                        },\n                      },\n                    },\n                  }}\n                >\n                  {customerTextExternal}\n                </Markdown>\n              )}\n            </section>\n          );\n        })}\n      <Markdown\n        origin={origin}\n        language={language}\n        options={{\n          forceBlock: true,\n          overrides: {\n            p: Paragraph,\n            a: {\n              component: WrappedLink,\n              props: {\n                className: 'underline text-primary hover:text-primary-alt text-base',\n                isNewWindow: true,\n              },\n            },\n          },\n        }}\n      >\n        {termsAndConditions}\n      </Markdown>\n    </>\n  );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { ActionDialog } from '@dx-ui/osc-dialog-v2';\nimport { FormInput } from '@dx-ui/osc-form';\nimport { Link } from '@dx-ui/osc-link';\nimport { Trans, useTranslation } from 'next-i18next';\n\nimport type { Dispatch, SetStateAction } from 'react';\nimport type { Brand_CountriesQuery } from './queries/generated/types';\n\ntype Props = {\n  isUSA: boolean;\n  isChina: boolean;\n  selectedCountry: Brand_CountriesQuery['countries'][0];\n  isMarketingOffersModalOpen: boolean;\n  setIsMarketingOffersModalOpen: Dispatch<SetStateAction<boolean>>;\n  language: string;\n  origin: string;\n};\n\nexport const MarketingContent = ({\n  isUSA,\n  isChina,\n  selectedCountry,\n  isMarketingOffersModalOpen,\n  setIsMarketingOffersModalOpen,\n  language,\n  origin,\n}: Props) => {\n  const [t] = useTranslation('osc-join-form-join');\n  const form = useFormContext();\n\n  if (!isUSA) {\n    if (selectedCountry?.marketingOptIn !== 'greenMarketingOptIn') {\n      return (\n        <>\n          <FormInput\n            name=\"marketingConsent\"\n            label={t('marketing.label')}\n            type=\"checkbox\"\n            labelClassName=\"w-full\"\n            optional={true}\n            aria-describedby=\"marketing\"\n          />\n          <p id=\"marketing\" className=\"!mt-0 ml-8 text-sm\">\n            <Trans t={t} i18nKey={isChina ? 'marketing_china.agreement' : 'marketing.agreement'}>\n              <Link url={`${origin}/${language}/p/global-privacy-statement/`} isNewWindow />\n            </Trans>\n          </p>\n          {/* Hide Offers checkbox - China only */}\n          {!isChina ? (\n            <>\n              <FormInput\n                name=\"marketingOffers\"\n                label={t('marketing_offers.label')}\n                type=\"checkbox\"\n                labelClassName=\"w-full\"\n                optional={true}\n                aria-describedby=\"marketing_offers\"\n              />\n              <p id=\"marketing_offers\" className=\"!mt-0 ml-8 text-sm\">\n                <Trans t={t} i18nKey=\"marketing_offers.agreement\">\n                  <Link url={`${origin}/${language}/p/global-privacy-statement/`} isNewWindow />\n                </Trans>\n              </p>\n              <FormInput\n                name=\"marketingGrandVacations\"\n                label={t('marketing_grandVacations.label')}\n                type=\"checkbox\"\n                labelClassName=\"w-full\"\n                optional={true}\n                aria-describedby=\"marketing_grandVacations\"\n              />\n              <p id=\"marketing_grandVacations\" className=\"!mt-0 ml-8 text-sm\">\n                <Trans t={t} i18nKey=\"marketing_grandVacations.agreement\">\n                  <Link\n                    url=\"https://www.hiltongrandvacations.com/en/privacy-policy.html\"\n                    isNewWindow\n                  />\n                </Trans>\n              </p>\n              <ActionDialog\n                buttonOptions={{\n                  cancel: {\n                    label: t('dialog.decline'),\n                  },\n                  confirm: {\n                    label: t('dialog.agree'),\n                  },\n                }}\n                onConfirm={() => setIsMarketingOffersModalOpen(false)}\n                onCancel={() => {\n                  setIsMarketingOffersModalOpen(false);\n                  form.setValue('marketingOffers', false);\n                }}\n                title={t('dialog.title')}\n                isOpen={isMarketingOffersModalOpen}\n                onDismiss={() => {\n                  setIsMarketingOffersModalOpen(!isMarketingOffersModalOpen);\n                  form.setValue('marketingOffers', false);\n                }}\n                size=\"lg\"\n              >\n                <p>{t('dialog.body')}</p>\n                <p className=\"my-4 text-sm\">{t('dialog.disclaimer')}</p>\n              </ActionDialog>\n            </>\n          ) : null}\n          <p>{t(isChina ? 'consent_china' : 'consent')}</p>\n          <p>\n            <Trans t={t} i18nKey={isChina ? 'agreement_china' : 'agreement'}>\n              <Link\n                url={`/${language}/hilton-honors/terms/`}\n                className=\"text-primary hover:text-primary-alt text-base\"\n                isNewWindow\n              />\n              <Link\n                url={`${origin}/${language}/p/global-privacy-statement/`}\n                className=\"text-primary hover:text-primary-alt text-base\"\n                isNewWindow\n              />\n            </Trans>\n          </p>\n        </>\n      );\n    }\n  }\n\n  return (\n    <>\n      {selectedCountry?.marketingOptInForHGV && (\n        <>\n          <FormInput\n            name=\"marketingGrandVacations\"\n            label={t('marketing_grandVacations.label')}\n            type=\"checkbox\"\n            labelClassName=\"w-full\"\n            optional={true}\n            aria-describedby=\"marketing_grandVacations\"\n          />\n          <p id=\"marketing_grandVacations\" className=\"!mt-0 ml-8 text-sm\">\n            <Trans t={t} i18nKey=\"marketing_grandVacations.agreement\">\n              <Link url=\"https://www.hiltongrandvacations.com/en/privacy-policy.html\" isNewWindow />\n            </Trans>\n          </p>\n          <p>{t('consent')}</p>\n        </>\n      )}\n      <p>\n        <Trans t={t} i18nKey={isUSA ? 'agreement_US' : 'agreement'}>\n          <Link\n            url={`/${language}/hilton-honors/terms/`}\n            className=\"text-primary hover:text-primary-alt text-base\"\n            isNewWindow\n          />\n          <Link\n            url={`${origin}/${language}/p/global-privacy-statement/`}\n            className=\"text-primary hover:text-primary-alt text-base\"\n            isNewWindow\n          />\n          <Link\n            url={`${origin}/${language}/p/global-privacy-statement/#CaliforniaRights`}\n            className=\"text-primary hover:text-primary-alt text-base\"\n            isNewWindow\n          />\n        </Trans>\n      </p>\n    </>\n  );\n};\n","import type { JoinFormMetrics } from '../types/join-form-analytics';\n\nexport const sendErrorAnalytics = (\n  metrics: JoinFormMetrics,\n  formErrors: string[],\n  formErrorsMessages: string[]\n) => {\n  metrics.setPageInfo('alertBoxText', formErrors);\n  metrics.trackEvent('alertBoxText');\n  metrics.setFormErrors([{ errors: formErrors.join('|') }]);\n  metrics.setFormErrorMessages(formErrorsMessages.join('|'));\n  metrics.setProperty('page.attributes.actionDetail', 'formError');\n  metrics.trackEvent('formErrorEvent');\n};\n","import { BannerNotification } from '@dx-ui/osc-banner-notification';\nimport { FormErrorIcon, FormInput, FormSelect } from '@dx-ui/osc-form';\nimport { Link } from '@dx-ui/osc-link';\nimport cx from 'classnames';\nimport { Trans, useTranslation } from 'next-i18next';\nimport { useEffect, useState } from 'react';\nimport type { FieldError, SubmitErrorHandler } from 'react-hook-form';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport type { ReactNode } from 'react';\n\nimport { AddressFields } from './address-fields';\nimport { FormInputPassword } from './password-fields';\nimport { FormInputPhone } from './phone-fields';\nimport { MarketingContent as MarketingContentCCS } from './marketing-content-css';\nimport { MarketingContent } from './marketing-content';\n\nimport {\n  CreateGuestDocument,\n  useBrand_CountriesQuery,\n  useCreateGuestMutation,\n  useLanguages_DefaultCountryCodeQuery,\n} from './queries/generated/queries';\n\nimport { AutoComplete } from './auto-complete';\nimport type { CreateGuestMutation, CreateGuestMutationVariables } from './queries/generated/types';\nimport { email } from './form-validation-regex';\nimport { Spinner } from '@dx-ui/osc-spinner';\nimport type { PageInfo } from '@dx-ui/config-metrics';\nimport type { JoinFormMetrics } from './types/join-form-analytics';\nimport { sendErrorAnalytics } from './utils/join-form-analytics';\nimport { logError } from '@dx-ui/framework-logger';\nimport { generateError } from '@dx-ui/utilities-generate-error';\nimport unset from 'lodash/unset';\nimport type { DXError } from '@dx-ui/types-graphql';\n\ntype BannerContent = { message: string; type: 'success' | 'error' } | null;\n\nconst GRAPH_ERRORS = {\n  WANTS_TOTP: 996,\n  TOTP_REMOVED: 995,\n  COMMUNICATIONS_ERROR: 1002,\n  RESERVATION_LOGIN_ERROR: 22,\n  RESERVATIONWITH24HRS_LOGIN_ERROR: 16,\n  CONFLICT_WITH_RESOURCE: 409,\n  SUCCESSFULL_REGISRATION_DELAYED_CONFIRMATION: 1000,\n} as const;\n\nconst EmailSubscription = {\n  PERSONALIZED_OFFERS: 'SGMT',\n  HILTON_MARKETING: 'HHPRM',\n  GRAND_VACATIONS: 'HGVC',\n  HHONORS_EMAIL: 'CUST',\n  THIRD_PARTY_MARKETING: '3PROM',\n} as const;\n\nconst USMarketingOptIn = {\n  hhonorsSubscriptions: [\n    EmailSubscription.HHONORS_EMAIL,\n    EmailSubscription.HILTON_MARKETING,\n    EmailSubscription.PERSONALIZED_OFFERS,\n    EmailSubscription.GRAND_VACATIONS,\n  ],\n  optOuts: {},\n};\n\ntype PageInfoKeys = keyof PageInfo;\n\nconst FORM_ERRORS_TO_FILTER = ['alertBoxText', 'formError', 'formErrorMessage'] as PageInfoKeys[];\n\nconst oCodes = [\n  'ADAPW',\n  'ANDEW',\n  'BRDEW',\n  'CIHCW',\n  'CNMP',\n  'DSKEW',\n  'DTITW',\n  'ESHCW',\n  'HHHTW',\n  'HHPCW',\n  'HITEW',\n  'HPHCW',\n  'IOSEW',\n  'JNHHW',\n  'NHBHW',\n  'NMUPW',\n  'OHWBW',\n  'OHWE',\n  'OHWGW',\n  'PYHTW',\n  'QQHTW',\n  'RUHCW',\n  'WAHCW',\n  'WFPAW',\n  'JHTNW',\n  'ASPEW',\n  'SMBEW',\n  'PEPEW',\n];\n\nexport type JoinInput = Omit<\n  CreateGuestMutationVariables['input'],\n  'username, propCode, country'\n> & {\n  country: string;\n  marketingOffers: boolean;\n  marketingConsent?: boolean;\n  marketingGrandVacations?: boolean;\n};\n\nexport interface Props {\n  /*\n   * Feature toggle on guest, disabled by default\n   */\n  isMarketabilityCCSEnabled?: boolean;\n  language: string;\n  /**\n   * Enrollment OCode, required\n   */\n  oCode: string;\n  /**\n   * Called after successful enrollment\n   */\n  onSuccess: (enrollResult: CreateGuestMutation) => void;\n  /*\n   * Metrics object, at a minimum needed these functions\n   */\n  metrics: JoinFormMetrics;\n\n  headline: ReactNode;\n  origin: string;\n}\n\nexport function JoinForm({\n  isMarketabilityCCSEnabled = false,\n  language,\n  oCode,\n  onSuccess,\n  metrics,\n  headline,\n  origin,\n}: Props) {\n  const [t] = useTranslation('osc-join-form-join');\n  const { t: tForm } = useTranslation('osc-join-form-form');\n  const [bannerContent, setBannerContent] = useState<BannerContent>(null);\n  const [marketingOptinsSelected, setMarketingOptinsSelected] = useState<number[]>([]);\n  const [isMarketingOffersModalOpen, setIsMarketingOffersModalOpen] = useState(false);\n  const { data: defaultCountryCodeData } = useLanguages_DefaultCountryCodeQuery({\n    language,\n  });\n\n  const isJapanesePage = language === 'ja';\n\n  const form = useForm<JoinInput>({\n    mode: 'onTouched',\n    criteriaMode: 'all',\n    defaultValues: {\n      address: {},\n      country: defaultCountryCodeData?.languages?.[0]?.defaultCountryCode || 'US',\n      phone: {\n        phoneCountry: `1US`,\n      },\n    },\n  });\n\n  const { watch, formState, setValue, handleSubmit } = form;\n  const { errors, isSubmitted } = formState;\n\n  const hasErrors = Object.keys(errors).length > 0;\n\n  useEffect(() => {\n    if (defaultCountryCodeData?.languages?.[0]?.defaultCountryCode) {\n      setValue('country', defaultCountryCodeData?.languages?.[0]?.defaultCountryCode);\n    }\n    if (isJapanesePage) {\n      setValue('phone.phoneCountry', '81JP');\n    }\n  }, [defaultCountryCodeData, isJapanesePage, setValue]);\n\n  const marketingOffersValue = watch('marketingOffers');\n  useEffect(() => {\n    if (marketingOffersValue) {\n      return setIsMarketingOffersModalOpen(true);\n    }\n  }, [marketingOffersValue]);\n\n  const hasPasswordFields = oCodes?.includes(oCode);\n\n  const [loadingGeocode, setLoadingGeocode] = useState(false);\n\n  const { data, isLoading: isLoadingCountries } = useBrand_CountriesQuery({\n    language,\n    getMarketing: true,\n    getCCSMarketing: isMarketabilityCCSEnabled,\n    countryFilter: { prohibited: false },\n  });\n\n  const createGuest = useCreateGuestMutation();\n\n  const countries =\n    [...(data?.countries || [])].sort((a, b) => Intl.Collator(language).compare(a.name, b.name)) ||\n    [];\n\n  const selectedCountry = countries.find(({ code }) => code === watch('country'))!;\n  const marketingOptIns = selectedCountry?.marketingOptin?.marketingOptinRules?.[0]?.optIns;\n\n  const isChina = selectedCountry?.code === 'CN';\n  const isUSA = selectedCountry?.code === 'US';\n\n  const getErrors = () => {\n    const elements: ReactNode[] = [];\n    Object.entries(errors).forEach(([key, value]) => {\n      if (value.message) {\n        const message = value.message;\n        elements.push(<li key={`joinPageErrorMsg${key}`}>{message}</li>);\n      }\n\n      // need to go in one level deeper\n      Object.entries(value).forEach(([innerKey, innerValue]) => {\n        if ((innerValue as FieldError).message) {\n          const message = (innerValue as FieldError).message;\n          elements.push(<li key={`joinPageErrorMsg${innerKey}`}>{message}</li>);\n        }\n      });\n    });\n    return elements;\n  };\n\n  const updateCreateGuestMutation = ({\n    address,\n    email,\n    name,\n    password,\n    phone,\n    country,\n    marketingGrandVacations,\n    marketingOffers,\n    marketingConsent,\n  }: JoinInput) => {\n    let hhonorsSubscriptions: string[] = [];\n    if (isMarketabilityCCSEnabled) {\n      const marketgOptinsAutoEnrolled = marketingOptIns?.filter((optin) => optin?.autoOptIn);\n      if (marketgOptinsAutoEnrolled && marketgOptinsAutoEnrolled.length) {\n        hhonorsSubscriptions = marketgOptinsAutoEnrolled.flatMap(\n          (optin) => optin.subscriptionCodes\n        );\n      }\n      if (marketingOptinsSelected.length && marketingOptIns && marketingOptIns.length) {\n        marketingOptinsSelected.forEach((i) => {\n          const codes = marketingOptIns[i]?.subscriptionCodes || [];\n          const list = [...hhonorsSubscriptions, ...codes];\n          hhonorsSubscriptions = [...list];\n        });\n      }\n    } else {\n      const isGreenMarketingOptIn = selectedCountry?.marketingOptIn === 'greenMarketingOptIn';\n      if (isGreenMarketingOptIn) {\n        hhonorsSubscriptions = [\n          ...hhonorsSubscriptions,\n          EmailSubscription.PERSONALIZED_OFFERS,\n          EmailSubscription.HILTON_MARKETING,\n        ];\n        if (selectedCountry?.marketingOptInForHGV) {\n          marketingGrandVacations && hhonorsSubscriptions.push(EmailSubscription.GRAND_VACATIONS);\n        } else {\n          hhonorsSubscriptions.push(EmailSubscription.GRAND_VACATIONS);\n        }\n      } else {\n        marketingOffers && hhonorsSubscriptions.push(EmailSubscription.PERSONALIZED_OFFERS);\n        marketingConsent && hhonorsSubscriptions.push(EmailSubscription.HILTON_MARKETING);\n        marketingGrandVacations && hhonorsSubscriptions.push(EmailSubscription.GRAND_VACATIONS);\n      }\n      hhonorsSubscriptions.push(EmailSubscription.HHONORS_EMAIL);\n    }\n    address.country = country;\n    const input: CreateGuestMutationVariables['input'] = {\n      address: {\n        ...address,\n        ...(address.state !== 'address' && { state: address.state }),\n        addressType: 'home',\n      },\n      email,\n      enrollSourceCode: oCode,\n      name,\n      password,\n      phone: {\n        phoneNumber: phone?.phoneNumber || '',\n        phoneCountry: phone?.phoneCountry?.replace(/\\D+/, ''),\n        phoneType: 'home',\n      },\n      preferredLanguage: language === 'id' ? 'en' : language,\n      privacyRequested: false,\n      subscriptions:\n        !isMarketabilityCCSEnabled && isUSA\n          ? USMarketingOptIn\n          : { hhonorsSubscriptions, optOuts: {} },\n    };\n\n    return new Promise((_resolve) => {\n      createGuest?.mutate([CreateGuestDocument, { language, input }], {\n        onSuccess: (data: CreateGuestMutation) => {\n          const errorCode = data?.createGuest?.error?.code;\n          if (errorCode) {\n            switch (errorCode) {\n              case GRAPH_ERRORS.SUCCESSFULL_REGISRATION_DELAYED_CONFIRMATION:\n              case GRAPH_ERRORS.CONFLICT_WITH_RESOURCE:\n                return setBannerContent({\n                  message: t(`submit_errors.${errorCode}`),\n                  type: 'error',\n                });\n              case 997:\n                if (\n                  isJapanesePage &&\n                  data?.createGuest?.error?.notifications?.some(({ code }) => code === 512)\n                ) {\n                  return setBannerContent({\n                    message: t(`submit_errors.997`),\n                    type: 'error',\n                  });\n                }\n                return setBannerContent({\n                  message: t(`submit_errors.500`),\n                  type: 'error',\n                });\n              default:\n                return setBannerContent({\n                  message: t(`submit_errors.500`),\n                  type: 'error',\n                });\n            }\n          }\n\n          const hHonorsNumber = data?.createGuest?.data?.hhonorsNumber;\n          const encodedName = window.btoa(encodeURIComponent(name.firstName));\n          const encodedNum = window.btoa(hHonorsNumber || '');\n          const encodedEmail = window.btoa(encodeURIComponent(email.emailAddress));\n          const encodedEnroll = window.btoa('true');\n\n          sessionStorage.setItem('first_name', encodedName);\n          sessionStorage.setItem('hhonors', encodedNum);\n          sessionStorage.setItem('email', encodedEmail);\n          sessionStorage.setItem('firstEnroll', encodedEnroll);\n          onSuccess(data);\n        },\n        onError: (data) => {\n          setBannerContent({\n            message: t('submit_errors.500'),\n            type: 'error',\n          });\n          logError('JOIN_FORM', generateError(data));\n        },\n      });\n    });\n  };\n\n  const handleFormSubmit = (formData: JoinInput) => {\n    if (window.digitalData?.page?.pageInfo) {\n      FORM_ERRORS_TO_FILTER.forEach((key) => unset(window?.digitalData?.page?.pageInfo, key));\n    }\n    updateCreateGuestMutation(formData)\n      .then((res) => res)\n      .catch((error: DXError) => {\n        throw error;\n      });\n  };\n\n  const handleInvalidForm: SubmitErrorHandler<JoinInput> = (fieldErrors) => {\n    // hasErrors above reads errors before validation is completed, missing new errors on submit.\n    // Using onInvalid ensures we get the final, updated errors.\n    const hasFieldErrors = Object.keys(fieldErrors).length > 0;\n    if (hasFieldErrors) {\n      const formErrors = Object.keys(errors).flatMap((key) => key);\n      const formErrorsMessages = (Object.keys(errors) as (keyof typeof errors)[])\n        .flatMap((key) => errors[key]?.message)\n        .filter((val): val is string => Boolean(val));\n\n      sendErrorAnalytics(metrics, formErrors, formErrorsMessages);\n    }\n  };\n\n  return (\n    <div className=\"container\">\n      {bannerContent ? (\n        <BannerNotification status={bannerContent?.type}>\n          <p className=\"font-bold sm:text-lg\">{bannerContent?.message}</p>\n        </BannerNotification>\n      ) : null}\n      <div className=\"mx-auto my-10 max-w-xl\">\n        {headline}\n        {hasErrors && isSubmitted && (\n          <div\n            role=\"alert\"\n            data-testid=\"form-errors\"\n            className={cx('bg-danger-alt text-danger w-full', {\n              'mb-4 p-4': hasErrors && isSubmitted,\n            })}\n          >\n            <h2 className=\"text-danger flex items-center space-x-2 font-semibold rtl:space-x-reverse\">\n              <FormErrorIcon />\n              <span>{t('form_error')}</span>\n            </h2>\n            <ul className=\"text-danger ml-10 rtl:space-x-reverse\">{getErrors()}</ul>\n          </div>\n        )}\n        <FormProvider {...form}>\n          <form\n            noValidate\n            method=\"post\"\n            onSubmit={handleSubmit(handleFormSubmit, handleInvalidForm)}\n            className=\"flex w-full flex-col space-y-4\"\n          >\n            <p>{tForm('requiredFields')}</p>\n            {isJapanesePage ? <p>{tForm('enterHiraganaCharacters')}</p> : null}\n            <FormInput\n              name=\"name.firstName\"\n              autoComplete={AutoComplete.GIVENNAME}\n              label={tForm('firstName.label')}\n              labelClassName=\"w-full\"\n              optional={false}\n              maxLength={18}\n              registerOptions={{\n                required: { value: true, message: tForm('firstName.error') },\n                minLength: { value: 1, message: tForm('firstName.error_minLength') },\n                pattern: { value: /^\\D+$/, message: tForm('firstName.error_noDigits') },\n              }}\n            />\n            <FormInput\n              name=\"name.lastName\"\n              autoComplete={AutoComplete.FAMILYNAME}\n              label={tForm('lastName.label')}\n              labelClassName=\"w-full\"\n              optional={false}\n              maxLength={18}\n              registerOptions={{\n                required: { value: true, message: tForm('lastName.error') },\n                minLength: { value: 1, message: tForm('lastName.error_minLength') },\n                pattern: { value: /^\\D+$/, message: tForm('lastName.error_noDigits') },\n              }}\n            />\n\n            <FormInputPhone\n              options={countries}\n              defaultValue=\"1US\"\n              loading={isLoadingCountries}\n              labelClassName=\"w-full\"\n            />\n\n            <FormInput\n              name=\"email.emailAddress\"\n              autoComplete={AutoComplete.EMAIL}\n              label={tForm('email.label')}\n              type=\"email\"\n              labelClassName=\"w-full\"\n              optional={false}\n              maxLength={64}\n              registerOptions={{\n                required: { value: true, message: tForm('email.error') },\n                pattern: { value: email, message: tForm('email.error') },\n              }}\n            />\n\n            <FormSelect\n              autoComplete={AutoComplete.COUNTRY}\n              labelClassName=\"w-full\"\n              label={tForm('address.country.label')}\n              name=\"country\"\n              loading={isLoadingCountries}\n              disabled={isLoadingCountries}\n            >\n              {countries.map(({ name, code }) => (\n                <option\n                  key={`option-${code}`}\n                  value={code}\n                  {...(code === watch('country') ? { selected: true } : {})}\n                >\n                  {name}\n                </option>\n              ))}\n            </FormSelect>\n\n            <AddressFields\n              code={watch('country')}\n              groupName=\"address\"\n              setLoadingGeocode={setLoadingGeocode}\n            />\n\n            {hasPasswordFields && (\n              <>\n                <FormInputPassword\n                  autoComplete={AutoComplete.NEWPASSWORD}\n                  type=\"password\"\n                  name=\"password\"\n                  label={tForm('password.label')}\n                  labelClassName=\"w-full\"\n                />\n                <FormInput\n                  autoComplete={AutoComplete.NEWPASSWORD}\n                  type=\"password\"\n                  name=\"confirmPassword\"\n                  label={tForm('confirmPassword.label')}\n                  labelClassName=\"w-full\"\n                  optional={false}\n                  containerClassName=\"!mb-10\"\n                  registerOptions={{\n                    validate: {\n                      shouldMatch: (value) =>\n                        (!!value && value === watch('password')) || tForm('confirmPassword.error'),\n                    },\n                  }}\n                />\n              </>\n            )}\n            <div className=\"space-y-10\">\n              {isMarketabilityCCSEnabled ? (\n                <MarketingContentCCS\n                  selectedCountry={selectedCountry}\n                  setMarketingOptinsSelected={setMarketingOptinsSelected}\n                  language={language}\n                  origin={origin}\n                />\n              ) : (\n                <MarketingContent\n                  isUSA={isUSA}\n                  isChina={isChina}\n                  selectedCountry={selectedCountry}\n                  isMarketingOffersModalOpen={isMarketingOffersModalOpen}\n                  setIsMarketingOffersModalOpen={setIsMarketingOffersModalOpen}\n                  language={language}\n                  origin={origin}\n                />\n              )}\n\n              <button\n                type=\"submit\"\n                className=\"btn btn-2xl btn-primary w-full\"\n                disabled={loadingGeocode || createGuest.isPending}\n              >\n                {createGuest.isPending ? (\n                  <>\n                    {tForm('submitting')} <Spinner className=\"ml-2 inline\" size=\"sm\" />\n                  </>\n                ) : (\n                  t('submit', { context: null })\n                )}\n              </button>\n\n              <p className=\"text-xs\">\n                <Trans t={t} i18nKey=\"termsAndConditions_disclaimer\">\n                  <Link\n                    url={`/${language}/hilton-honors/honors-discount-terms/`}\n                    className=\"text-primary hover:text-primary-alt text-xs\"\n                    isNewWindow\n                  />\n                </Trans>\n              </p>\n              <p className=\"!mt-6 text-xs\">{t('wiFi_disclaimer')}</p>\n              {(selectedCountry?.marketingConsent || selectedCountry?.marketingOptIn) && (\n                <>\n                  <p className=\"text-text-alt text-xs\">{t('gdprFootnote')}</p>\n                  <p className=\"text-text-alt !mt-6 text-xs\">{t('gdprFootnote2')}</p>\n                </>\n              )}\n            </div>\n          </form>\n        </FormProvider>\n      </div>\n    </div>\n  );\n}\n","export * from './join-form';\n","export * from './lib';\n","import { useEffect, useRef, useState, type ReactNode } from 'react';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport { JoinForm, type Props } from '@dx-ui/osc-join-form';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { LoginIFrame } from '@dx-ui/osc-login';\nimport { useTranslation } from 'next-i18next';\nimport Icon from '@dx-ui/osc-icon';\nimport { logError } from '@dx-ui/framework-logger';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\n/** This is a generic button component that will launch a modal with the join form when clicked. */\nexport function JoinModalButton({\n  children,\n  className,\n  language,\n  loginIFrameSrc,\n  metrics,\n  headline,\n  oCode = 'OHWGW',\n  onSuccessfulLogin,\n  onSuccessfulJoin,\n  onClick,\n}: {\n  children: ReactNode;\n  /** Wrapper button classname */\n  className?: string;\n  language: string;\n  loginIFrameSrc: string;\n  /** Metrics object from join form */\n  metrics: Props['metrics'];\n  headline?: Props['headline'];\n  oCode?: Props['oCode'];\n  onSuccessfulLogin?: () => void;\n  onSuccessfulJoin?: () => void;\n  onClick?: () => void;\n}) {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [showJoinFormContent, setShowJoinFormContent] = useState(false);\n  const [showLoginIframe, setShowLoginIframe] = useState(false);\n  const [newHonorsNumber, setNewHonorsNumber] = useState('');\n  const { login } = useAuth();\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const successMessageRef = useRef<HTMLParagraphElement>(null);\n  const { t } = useTranslation('osc-join-modal-button');\n  const origin = useOrigin();\n\n  const handleOpenModal = () => {\n    setIsModalOpen(true);\n    setShowJoinFormContent(true);\n    onClick?.();\n  };\n\n  const handleOpenLoginIframe = () => {\n    setShowLoginIframe(true);\n  };\n\n  const handleCloseModal = () => {\n    setIsModalOpen(false);\n    setShowLoginIframe(false);\n  };\n\n  return (\n    <Dialog\n      onDismiss={handleCloseModal}\n      isOpen={isModalOpen}\n      size={showLoginIframe ? 'md' : '2xl'}\n      title={showLoginIframe ? t('signIn') : t('joinForFree')}\n      dialogTrigger={\n        <button type=\"button\" className={className} onClick={handleOpenModal} ref={buttonRef}>\n          {children}\n        </button>\n      }\n    >\n      {showJoinFormContent ? (\n        <JoinForm\n          language={language}\n          oCode={oCode}\n          origin={origin}\n          headline={\n            headline || (\n              <h1 className=\"font-headline mb-2 text-center text-3xl\">{t('joinHiltonHonors')}</h1>\n            )\n          }\n          onSuccess={(data) => {\n            const honorsNumber = data?.createGuest?.data?.hhonorsNumber;\n            if (honorsNumber) {\n              onSuccessfulJoin?.();\n              setNewHonorsNumber(honorsNumber);\n              setShowJoinFormContent(false);\n              handleOpenLoginIframe();\n            }\n          }}\n          metrics={metrics}\n        />\n      ) : null}\n      {showLoginIframe ? (\n        <>\n          <div ref={successMessageRef} className=\"bg-success-alt text-success mt-5 flex p-2\">\n            <Icon name=\"check-circle\" variant=\"solid\" />\n            <p className=\"ml-2\">{t('welcomeMessage')}</p>\n          </div>\n          {newHonorsNumber ? (\n            <LoginIFrame\n              frameSrc={loginIFrameSrc}\n              title={t('signIn')}\n              options={{\n                username: newHonorsNumber,\n              }}\n              onLoginAttempt={(result) => {\n                if (result.data) {\n                  login(result)\n                    .then(() => {\n                      handleCloseModal();\n                      setShowLoginIframe(false);\n                      onSuccessfulLogin?.();\n                    })\n                    .catch((error) => {\n                      logError(\n                        'OSC_JOIN_MODAL_BUTTON',\n                        error,\n                        'Error logging in after successful join'\n                      );\n                    });\n                }\n              }}\n            />\n          ) : null}\n        </>\n      ) : null}\n    </Dialog>\n  );\n}\n\nfunction useOrigin() {\n  const [origin, setOrigin] = useState('https://www.hilton.com');\n  useEffect(() => {\n    if (isBrowser && window.location) {\n      const { protocol, hostname, port } = window.location;\n      const origin = `${protocol}//${hostname}${port ? `:${port}` : ''}`;\n      setOrigin(origin);\n    }\n  }, []);\n  return origin;\n}\n","export * from './lib/osc-join-modal-button';\n","import * as React from 'react';\nimport { Link } from '@dx-ui/osc-link';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { Login } from '@dx-ui/osc-login';\nimport Icon from '@dx-ui/osc-icon';\nimport { LanguageSelector } from '@dx-ui/osc-language-selector';\nimport type { HeaderProps, LinkWithExperimentationConfiguration } from './types';\nimport { BrandHeaderBody } from './brand-header-body/brand-header-body';\nimport { sendInteractionReward } from './header.utilities';\nimport {\n  Status,\n  sendReward,\n  setConductricsSelectionOK,\n  useConductricsSelection,\n} from '@dx-ui/framework-conductrics';\nimport { HeaderLogoLink } from './header.logo';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { JoinModalButton } from '@dx-ui/osc-join-modal-button';\nimport { useRouter } from 'next/router';\nimport { getLocaleFormattedNumber } from '@dx-ui/framework-i18n';\n\nconst HeaderMenuLink: React.FunctionComponent<\n  React.PropsWithChildren<LinkWithExperimentationConfiguration>\n> = (link) => {\n  const [t] = useTranslation('osc-header');\n  return (\n    <DropdownMenu.Item asChild={true}>\n      <a\n        href={link.url}\n        onClick={link.onClick}\n        className={cx(\n          'text-text hover:text-text-alt highlighted:bg-bg-alt block px-2 py-3',\n          link.className\n        )}\n        {...(link.adaDescription && {\n          'aria-label': `${link.adaDescription}${link.isNewWindow ? `, ${t('newTab')}` : ''}`,\n        })}\n        {...(link.isNewWindow && { target: '_blank', rel: 'noopener noreferrer' })}\n        data-conductrics-goal={link.experimentationConfiguration?.goal}\n        data-conductrics-value={link.experimentationConfiguration?.value}\n      >\n        {link.label}\n        {link.isNewWindow && !link.adaDescription ? (\n          <span className=\"sr-only\">\n            , <span>{t('newTab')}</span>\n          </span>\n        ) : null}\n      </a>\n    </DropdownMenu.Item>\n  );\n};\n\nconst joinModalConductricsTestAgent = 'a-ZPwsLcHilZ0e';\nfunction onSignInLinkClick() {\n  void setConductricsSelectionOK(joinModalConductricsTestAgent);\n}\n\nexport const Header = React.forwardRef<HTMLElement, HeaderProps>(\n  (\n    {\n      megaNavLinks,\n      brand,\n      isFluid,\n      mainNavLinks,\n      onSignOut,\n      onSignInAttempt,\n      suppressLogo = false,\n      shouldSuppressHonorsAccountLinks,\n      shouldSuppressFindStay,\n      shouldSuppressJoinAndSignIn,\n      shouldOpenAccountLinksInNewWindow,\n      user,\n      userLinks,\n      loginOptions,\n      children,\n      languageSelectorOptions,\n      showNewHeader,\n      theme,\n      heading,\n      wrapperId = '__next',\n      mvts,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const [t] = useTranslation(['osc-header', 'osc-login']);\n    const defaultOptions = {\n      frameSrc: userLinks?.signInLink?.url || '',\n      title: t('osc-login:signIn'),\n      onLoginAttempt: onSignInAttempt,\n    };\n    const commonHeaderBodyProps = {\n      brand,\n      isFluid,\n      mainNavLinks,\n      onSignOut,\n      onSignInAttempt,\n      suppressLogo,\n      user,\n      userLinks,\n      loginOptions,\n      children,\n      heading,\n    };\n\n    const isDark = theme === 'dark';\n    const joinFromModal = useJoinFromModalTest();\n\n    if (userLinks?.signUpLink) {\n      userLinks.signUpLink.onMouseDown = onSignInLinkClick;\n      userLinks.signUpLink.onKeyDown = function onKeyDown(event) {\n        if (event.key === 'Enter' || event.key === ' ') {\n          onSignInLinkClick();\n        }\n      };\n    }\n\n    const SignUpComponent = ({\n      children,\n      className,\n      loggedInButtonRef,\n    }: {\n      children: React.ReactNode;\n      className: string;\n      loggedInButtonRef: React.RefObject<HTMLButtonElement | null>;\n    }): React.ReactNode => {\n      return (\n        <JoinModalButton\n          onClick={onSignInLinkClick}\n          className={className}\n          language={languageSelectorOptions?.locale || 'en'}\n          loginIFrameSrc={userLinks?.signInLink?.url || ''}\n          onSuccessfulJoin={() => sendReward('g-XuedMeNnr5')}\n          onSuccessfulLogin={() => {\n            sendReward('g-bgQSVS0Q4h');\n            setTimeout(() => loggedInButtonRef?.current?.focus(), 1000);\n          }}\n          metrics={{\n            setPageInfo: () => {},\n            trackEvent: () => {},\n            setFormErrors: () => {},\n            setProperty: () => {},\n            setFormErrorMessages: () => {},\n          }}\n        >\n          {children}\n        </JoinModalButton>\n      );\n    };\n\n    return (\n      <>\n        <a href=\"#skipped\" className=\"btn-primary-text btn-xl sr-only focus:not-sr-only\">\n          {t('skipToContent')}\n        </a>\n        <header\n          className={cx('border-border border-b border-solid', {\n            'bg-bg-dark': isDark,\n          })}\n          data-testid=\"shared-header\"\n          ref={forwardedRef}\n          {...rest}\n        >\n          {megaNavLinks || showNewHeader ? (\n            <BrandHeaderBody\n              menuItems={megaNavLinks}\n              brand={brand}\n              onSignInAttempt={onSignInAttempt}\n              onSignOut={onSignOut}\n              wrapperId={wrapperId}\n              user={user}\n              SignUpComponent={joinFromModal ? SignUpComponent : undefined}\n              loginOptions={loginOptions}\n              languageSelectorOptions={languageSelectorOptions}\n              isFluid={isFluid}\n              suppressLogo={suppressLogo}\n              shouldSuppressHonorsAccountLinks={shouldSuppressHonorsAccountLinks}\n              shouldSuppressFindStay={shouldSuppressFindStay}\n              shouldSuppressJoinAndSignIn={shouldSuppressJoinAndSignIn}\n              shouldOpenAccountLinksInNewWindow={shouldOpenAccountLinksInNewWindow}\n              heading={heading}\n              theme={theme}\n              mvts={mvts}\n            />\n          ) : languageSelectorOptions ? (\n            <NewHeaderBody\n              {...commonHeaderBodyProps}\n              defaultOptions={defaultOptions}\n              languageSelectorOptions={languageSelectorOptions}\n            />\n          ) : (\n            <OldHeaderBody {...commonHeaderBodyProps} defaultOptions={defaultOptions} />\n          )}\n        </header>\n        {children}\n        <div id=\"skipped\" tabIndex={-1} />\n      </>\n    );\n  }\n);\n\ntype BodyProps = Pick<\n  HeaderProps,\n  | 'brand'\n  | 'isFluid'\n  | 'mainNavLinks'\n  | 'onSignOut'\n  | 'suppressLogo'\n  | 'user'\n  | 'userLinks'\n  | 'loginOptions'\n  | 'heading'\n> & {\n  defaultOptions: {\n    frameSrc: string;\n    title: string;\n    onLoginAttempt: HeaderProps['onSignInAttempt'];\n  };\n};\n\nfunction OldHeaderBody({\n  brand,\n  isFluid,\n  mainNavLinks,\n  onSignOut,\n  suppressLogo,\n  user,\n  userLinks,\n  loginOptions,\n  defaultOptions,\n  heading,\n}: BodyProps) {\n  return (\n    <div\n      className={cx('flex flex-wrap items-center pt-2 lg:py-2', {\n        'container-fluid': isFluid,\n        container: !isFluid,\n      })}\n    >\n      {suppressLogo ? null : <HeaderLogoLink brand={brand} heading={heading} />}\n      {mainNavLinks?.length ? <MainNav links={mainNavLinks} suppressLogo={suppressLogo} /> : null}\n      <UserNav\n        user={user}\n        userLinks={userLinks}\n        onSignOut={onSignOut}\n        loginOptions={loginOptions}\n        defaultOptions={defaultOptions}\n      />\n    </div>\n  );\n}\n\nfunction NewHeaderBody({\n  brand,\n  isFluid,\n  mainNavLinks,\n  onSignOut,\n  suppressLogo,\n  user,\n  userLinks,\n  loginOptions,\n  defaultOptions,\n  languageSelectorOptions,\n  heading,\n}: BodyProps & {\n  languageSelectorOptions: NonNullable<HeaderProps['languageSelectorOptions']>;\n}) {\n  return (\n    <div\n      className={cx('flex flex-wrap pt-1.5', {\n        'container-fluid': isFluid,\n        container: !isFluid,\n      })}\n    >\n      <div className=\"flex w-full flex-wrap items-center justify-between gap-x-5 gap-y-2 pb-2 sm:justify-end sm:gap-x-12 sm:pb-0\">\n        <LanguageSelector {...languageSelectorOptions} />\n        <div className=\"flex flex-wrap justify-end gap-x-2 gap-y-1.5 sm:flex-nowrap sm:gap-x-3\">\n          <UserNav\n            user={user}\n            userLinks={userLinks}\n            onSignOut={onSignOut}\n            loginOptions={loginOptions}\n            defaultOptions={defaultOptions}\n          />\n        </div>\n      </div>\n      <div className=\"w-full items-center lg:flex lg:pb-2\">\n        {suppressLogo ? null : <HeaderLogoLink brand={brand} heading={heading} />}\n        {mainNavLinks?.length ? <MainNav links={mainNavLinks} suppressLogo={suppressLogo} /> : null}\n      </div>\n    </div>\n  );\n}\n\nfunction UserNav({\n  user,\n  userLinks,\n  onSignOut,\n  loginOptions,\n  defaultOptions,\n}: Pick<BodyProps, 'user' | 'userLinks' | 'onSignOut' | 'loginOptions' | 'defaultOptions'>) {\n  const { i18n, t } = useTranslation('osc-header');\n  const { locale = 'en' } = useRouter();\n  const formattedHonorsPointsTotal = getLocaleFormattedNumber(user?.honorsPoints, { locale });\n  return (\n    <nav aria-label=\"Hilton Honors\" className=\"relative ms-auto\">\n      {user ? (\n        <DropdownMenu.Root dir={i18n.dir()} modal={false}>\n          <DropdownMenu.Trigger asChild>\n            <button\n              onClick={() => {\n                sendInteractionReward();\n                sendReward('profile-name-click');\n              }}\n              className=\"btn-text-text btn-xl flex items-center\"\n              type=\"button\"\n            >\n              <span className=\"brand-wa:font-normal\">\n                {t('greetings', { username: user.name })}\n              </span>\n              <Icon name=\"user-circle\" size=\"md\" variant=\"solid\" className=\"ms-2\" />\n            </button>\n          </DropdownMenu.Trigger>\n          <DropdownMenu.Portal>\n            <DropdownMenu.Content\n              align=\"end\"\n              className=\"bg-bg border-border divide-border absolute end-0 z-50 w-56 divide-y rounded border border-solid p-2 shadow-lg outline-none\"\n            >\n              <div className=\"flex flex-col px-2 py-3\">\n                <p className=\"leading-tight\">\n                  <span className=\"block font-bold\">{user.honorsTier}</span>\n                  <span>\n                    {t('points', {\n                      count: user.honorsPoints,\n                      points: formattedHonorsPointsTotal,\n                    })}\n                  </span>\n                </p>\n              </div>\n              {userLinks?.accountLink?.url ? (\n                <HeaderMenuLink\n                  onClick={(e) => {\n                    userLinks.accountLink?.onClick?.(e);\n                    sendInteractionReward();\n                  }}\n                  {...userLinks.accountLink}\n                  label={t('account')}\n                />\n              ) : null}\n              {/* Optional user links */}\n              {userLinks?.additionalLinks?.length\n                ? userLinks.additionalLinks.map((link) => (\n                    <HeaderMenuLink\n                      onClick={(e) => {\n                        link.onClick?.(e);\n                        sendInteractionReward();\n                      }}\n                      key={link.label}\n                      {...link}\n                    />\n                  ))\n                : null}\n              <button\n                className={cx(\n                  'text-text hover:text-text-alt highlighted:bg-bg-alt w-full px-2 py-3 text-start'\n                )}\n                onClick={onSignOut}\n                id=\"sign-out\"\n                type=\"button\"\n              >\n                {t('signOut')}\n              </button>\n            </DropdownMenu.Content>\n          </DropdownMenu.Portal>\n        </DropdownMenu.Root>\n      ) : userLinks?.signInLink || userLinks?.signUpLink ? (\n        <ul className=\"divide-border flex items-baseline divide-x rtl:divide-x-reverse\">\n          {userLinks.signUpLink ? (\n            <li className=\"px-2 first:ps-0 last:pe-0 sm:px-3\">\n              <Link\n                {...userLinks.signUpLink}\n                showNewWindowIcon={false}\n                data-osc-product=\"header-signup-link\"\n                underline={false}\n                className=\"btn btn-text-text sm:btn-xl brand-wa:!font-normal flex items-center sm:inline-flex\"\n                onClick={(e) => {\n                  userLinks.signUpLink?.onClick?.(e);\n                  sendReward('nav-join-click');\n                  sendInteractionReward();\n                }}\n              >\n                {t('signUp')}\n              </Link>\n            </li>\n          ) : null}\n          {userLinks.signInLink ? (\n            <li className=\"px-2 first:ps-0 last:pe-0 sm:px-3\">\n              <Login onOpen={sendInteractionReward} {...{ ...defaultOptions, ...loginOptions }} />\n            </li>\n          ) : null}\n        </ul>\n      ) : null}\n    </nav>\n  );\n}\n\nfunction MainNav({\n  links,\n  suppressLogo,\n}: {\n  links: LinkWithExperimentationConfiguration[];\n  suppressLogo: HeaderProps['suppressLogo'];\n}) {\n  const navRef = React.useRef<React.ElementRef<'div'>>(null);\n  const [isBeforeVisible, setBeforeVisible] = React.useState(false);\n  const [isAfterVisible, setAfterVisible] = React.useState(false);\n\n  const onChange = React.useCallback((rect: DOMRect | undefined) => {\n    const scrollLeft = navRef.current?.scrollLeft ?? 0;\n    const scrollWidth = navRef.current?.scrollWidth ?? 0;\n    const navWidth = rect?.width || 0;\n    const widthDiff = scrollWidth - navWidth;\n    const newBefore = scrollLeft > 5 && widthDiff > 0;\n    const newAfter = widthDiff > 0 && widthDiff - scrollLeft > 5;\n    setBeforeVisible(newBefore);\n    setAfterVisible(newAfter);\n  }, []);\n  const navRect = useRect({ ref: navRef, onResize: onChange });\n  const onNavScroll = React.useCallback(() => navRect && onChange(navRect), [onChange, navRect]);\n  return (\n    <nav\n      className={cx(\n        'flex-basis-full border-border lg:flex-basis-auto relative order-last -mx-4 mt-2 overflow-hidden border-t border-solid px-4 py-2 sm:-mx-8 sm:px-8 lg:order-none lg:mx-0 lg:mt-0 lg:grow lg:overflow-auto lg:border-t-0 lg:px-4',\n        {\n          'lg:ps-0': suppressLogo,\n          'header-nav-before': isBeforeVisible,\n          'header-nav-after': isAfterVisible,\n        }\n      )}\n    >\n      <div\n        ref={navRef}\n        onScroll={onNavScroll}\n        className=\"w-full overflow-x-scroll py-1 lg:overflow-x-visible lg:py-0\"\n      >\n        <ul className=\"flex flex-nowrap items-center space-x-6 rtl:space-x-reverse\">\n          {links.map(({ label, experimentationConfiguration, ...linkProps }) => (\n            <li\n              key={`main-nav-link-${label}`}\n              className=\"focus-within:text-text-alt hover:text-text-alt text-text\"\n            >\n              <Link\n                {...linkProps}\n                underline={false}\n                className=\"brand-wa:font-normal whitespace-nowrap text-base font-bold\"\n                onClick={(e) => {\n                  linkProps.onClick?.(e);\n                  sendInteractionReward();\n                }}\n                data-conductrics-goal={experimentationConfiguration?.goal}\n                data-conductrics-value={experimentationConfiguration?.value}\n              >\n                {label}\n              </Link>\n            </li>\n          ))}\n        </ul>\n      </div>\n    </nav>\n  );\n}\nfunction useJoinFromModalTest() {\n  const { selection, isLoaded } = useConductricsSelection(\n    joinModalConductricsTestAgent,\n    Status.PENDING\n  );\n  return isLoaded && selection?.choice === 'B';\n}\n\nHeader.displayName = 'Header';\n\nexport default Header;\n","import type { AgentsSelection } from '@dx-ui/framework-conductrics';\nimport type { TDrawerItem } from '../types';\n\nexport function filterMegaNavExperiments(\n  megaNavLinks: TDrawerItem[] | undefined,\n  experimentationAgents: AgentsSelection,\n  filterExperiments: (agents: AgentsSelection, config?: CmsExperimentationConfiguration) => boolean\n) {\n  if (!megaNavLinks) {\n    return;\n  }\n\n  return megaNavLinks\n    ?.map((item) => {\n      if (\n        item.link?.experimentationConfiguration &&\n        !filterExperiments(experimentationAgents, item.link?.experimentationConfiguration)\n      ) {\n        return null;\n      }\n\n      const subMenu =\n        item.subMenu?.filter((secondary) => {\n          if (!secondary.link?.experimentationConfiguration) {\n            return true;\n          }\n\n          return filterExperiments(\n            experimentationAgents,\n            secondary.link?.experimentationConfiguration\n          );\n        }) ?? [];\n\n      const drawerItem: TDrawerItem = {\n        ...item,\n      };\n\n      if (subMenu.length) {\n        drawerItem.subMenu = subMenu;\n      }\n\n      return drawerItem;\n    })\n    .filter((item) => !!item);\n}\n","import type { Agent, ConductricsSelection } from '@dx-ui/framework-conductrics';\nimport { useConductricsSelection, useShouldRenderExperiment } from '@dx-ui/framework-conductrics';\nimport { filterMegaNavExperiments } from '../util/filter-mega-nav-experiments';\nimport type { TDrawerItem } from '../types';\n\n/**\n * Filters mega nav links by Conductrics agent(s).\n * Conductrics agents are automatically fetched by this hook if links have an agent defined.\n */\nexport function useFilterMegaNavExperiments(megaNavLinks: TDrawerItem[] | undefined) {\n  const agents = findAgentsToFetch(megaNavLinks);\n  const selections = useConsistentConductricsSelection(agents);\n  const shouldRenderExperiment = useShouldRenderExperiment();\n  return filterMegaNavExperiments(megaNavLinks, selections, shouldRenderExperiment);\n}\n\n/**\n * Loop over navigation drawer items to find agent IDs that need to be fetched via Conductrics\n */\nfunction findAgentsToFetch(megaNavLinks?: TDrawerItem[]): Agent[] {\n  if (!megaNavLinks) {\n    return [];\n  }\n\n  const agents = new Set<string>();\n\n  for (const item of megaNavLinks) {\n    if (item.link?.experimentationConfiguration?.agentId) {\n      agents.add(item.link.experimentationConfiguration.agentId);\n    }\n\n    if (Array.isArray(item.subMenu)) {\n      for (const subMenuItem of item.subMenu) {\n        if (subMenuItem.link?.experimentationConfiguration?.agentId) {\n          agents.add(subMenuItem.link.experimentationConfiguration.agentId);\n        }\n      }\n    }\n  }\n\n  return Array.from(agents).map((agentId) => ({ agentId }));\n}\n\n/**\n * Always returns a Record<string, ConductricsSelection>\n *\n * useConductricsSelection will return an object that is of type `ConductricsSelection` instead of\n * Record<AgentID, ConductricsSelection> when there is an array with a single agent ID passed to it.\n * We need to convert this to a record for the filter function.\n */\nfunction useConsistentConductricsSelection(agents: Agent[]) {\n  const isSingleAgent = agents.length === 1;\n  const selections = useConductricsSelection(agents);\n\n  if (isSingleAgent && isConductricsSingleSelection(selections)) {\n    const agentId = agents?.[0]?.agentId;\n\n    return {\n      [`${agentId}`]: selections,\n    };\n  }\n\n  return selections;\n}\n\nfunction isConductricsSingleSelection(value: unknown): value is ConductricsSelection {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    'isLoaded' in value &&\n    'error' in value &&\n    'selection' in value\n  );\n}\n","export * from './lib/header';\nexport { getBaseNavLinksFromEnv } from './lib/header.utilities';\nexport * from './lib/types';\nexport * from './lib/util/filter-mega-nav-experiments';\nexport * from './lib/hooks/use-filter-mega-nav-experiments';\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type HeadingLevelContext = [\n  // Should the heading level increase?\n  boolean,\n  // The current heading level defined in the context\n  HeadingLevel\n];\n\nconst DEFAULT_HEADING_LEVEL = 2;\nconst DEFAULT_CONTEXT_VALUE: HeadingLevelContext = [false, DEFAULT_HEADING_LEVEL];\n\nconst HeadingLevelContext = createContext<HeadingLevelContext>(DEFAULT_CONTEXT_VALUE);\n\nexport function useHeadingLevel() {\n  return useContext(HeadingLevelContext);\n}\n\n/**\n * Calculate the heading level based on props passed via the HeadingLevelProvider component\n * 1) Always return the level if it has been explicitly defined via the level prop e.g. <HeadingLevelProvider level=\"1\" />\n * 2) Return the parent level + 1, if the <HeadingLevelProvider /> component has been nested inside another <HeadingLevelProvider />\n * 3) Fallback to the DEFAULT_HEADING_LEVEL at the top of this file\n */\nfunction calculateHeadingLevel({\n  level,\n  parent,\n}: {\n  level?: HeadingLevel;\n  parent: {\n    level?: HeadingLevel;\n    shouldIncreaseLevel?: boolean;\n  };\n}) {\n  if (level) {\n    return level;\n  }\n\n  const { level: parentLevel, shouldIncreaseLevel } = parent;\n\n  if (shouldIncreaseLevel && parentLevel) {\n    return (parentLevel + 1) as HeadingLevel;\n  }\n\n  if (parentLevel) {\n    return parentLevel;\n  }\n\n  return DEFAULT_HEADING_LEVEL;\n}\n\nexport interface HeadingLevelProviderProps {\n  /** Any valid `ReactNode` */\n  children: ReactNode;\n  /** The level that headings should render as. Nested `<HeadingLevelProvider>`s will increase this number automatically. */\n  level?: HeadingLevel;\n  /**\n   * Increase the heading level when nested inside a `<HeadingLevelProvider>` component.\n   * This can be used to stop the heading level increasing if a parent heading in the component is set to conditionally\n   * render.\n   * */\n  shouldIncreaseLevel?: boolean;\n  /**\n   * Should heading levels increase or always use the fallback value?\n   * This prop only needs to be set on the first provider.\n   * */\n  isEnabled?: boolean;\n}\n\n/**\n * Automatically increase the heading level for child `<HeadingLevel />` components. You should wrap any child headings\n * with this provider so levels increase.\n * The first `<HeadingLevelProvider />` must have the `isEnabled` prop set for heading levels to start increasing.\n */\nexport function HeadingLevelProvider({\n  children,\n  level,\n  shouldIncreaseLevel = true,\n  isEnabled = false,\n}: HeadingLevelProviderProps) {\n  const [isParentEnabled, parentLevel] = useHeadingLevel() ?? DEFAULT_CONTEXT_VALUE;\n\n  return (\n    <HeadingLevelContext.Provider\n      value={[\n        isParentEnabled || isEnabled,\n        calculateHeadingLevel({ level, parent: { level: parentLevel, shouldIncreaseLevel } }),\n      ]}\n    >\n      {children}\n    </HeadingLevelContext.Provider>\n  );\n}\n\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n  /**\n   * The heading level that should be used if this component is either not rendered inside the `<HeadingLevelProvider />`\n   * component OR a parent `<HeadingLevelProvider />` hasn't enabled stacking\n   * */\n  headingLevelFallback?: HeadingLevel;\n}\n\n/**\n * Automatically render the correct heading level when this component is a child of the `<HeadingLevelProvider />`\n * component.\n * Defaults to a `<h2>` if `headingLevelFallback` prop is not defined.\n * The `headingLevelFallback` prop will be used when `HeadingLevelContext` is `undefined` OR `<HeadingLevelProvider />`\n * has the `isEnabled` prop set to `false`.\n */\nexport function HeadingLevel({\n  children,\n  headingLevelFallback = DEFAULT_HEADING_LEVEL,\n  ...props\n}: HeadingProps) {\n  const context = useHeadingLevel();\n  let Tag = `h${headingLevelFallback}`;\n\n  if (context !== undefined && context[0]) {\n    const level = context[1];\n    Tag = level > 6 ? 'span' : `h${level}`;\n  }\n\n  return <Tag {...props}>{children}</Tag>;\n}\n","export * from './heading-level';\n","export * from './lib';\n","import { useRef } from 'react';\nimport cx from 'classnames';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { useTranslation } from 'next-i18next';\nimport { ResponsiveImage, getCurrentAspectRatioAndUrl } from '@dx-ui/osc-responsive-image';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\n\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport type { Link as LinkType } from '@dx-ui/osc-link';\nimport Image from 'next/image';\nimport { useRect } from '@dx-ui/utilities-use-rect';\n\nexport const isReducedMotion =\n  typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n    ? window.matchMedia('(prefers-reduced-motion: reduce)').matches\n    : true;\n\nexport type HeroImageType = {\n  /**\n   * CPM ONLY: Dark opacity or Light opacity or none.\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /**\n   * Caption link and text\n   */\n  captionData?: CaptionProps;\n  aspectRatios?: {\n    /**\n     * Aspect Ratio of the Image at 1280px +\n     */\n    desktop: AspectRatio;\n    /**\n     * Aspect Ratio of the Image at 0px - 1280px\n     */\n    mobile: AspectRatio;\n  };\n  /**\n   * Text content box alignment, center is default\n   */\n  alignContent?: CmsAlignContent;\n  /**\n   * Main headline of component\n   */\n  headline?: string;\n  /**\n   * Similar to a subheadline\n   */\n  shortDescription?: string;\n  /**\n   * Provides the long description\n   */\n  longDescription?: string | null;\n  /**\n   * OSC-Link\n   */\n  link?: (LinkType & { experimentationConfiguration?: CmsExperimentationConfiguration }) | null;\n  /**\n   * Allows animations to run when true, CMS option\n   */\n  isAnimated?: boolean;\n  /**\n   * Used to add or remove Horizontal Line between content, default 'false'\n   */\n  hasHorizontalLine?: boolean;\n  /**\n   * Small image icon in the upper left corner\n   */\n  badgeImageUrl?: string | null;\n  /**\n   * Small image icon alt text\n   */\n  badgeImageAltText: string;\n  /**\n   * Opens a gallery of additional images/information\n   */\n  hasGalleryButton?: boolean;\n  /**\n   * Alternative text of the Image (a11y)\n   */\n  imageAltText: string;\n  /**\n   * URL of the Image at 1280px +\n   */\n  image: {\n    desktopUrl: string;\n    mobileUrl: string;\n  };\n  /**\n   * Space for a brand specific illustration overlay component\n   */\n  illustrationOverlay?: React.ReactNode;\n  forTheStayIllustration?: React.ReactNode;\n  captionMetricsOnClick?: () => void;\n  brandLinkMetricsOnClick?: () => void;\n};\n\n/**\n * **Formerly Masthead with Image**\n *\n * The HeroImage is a full screen width image with optional added content, optional caption link, option badge icon, and optional gallery button.\n */\nexport const HeroImage: React.FC<HeroImageType> = ({\n  brandComponentTheme,\n  captionData,\n  image,\n  imageAltText,\n  headline,\n  shortDescription,\n  longDescription,\n  link,\n  aspectRatios = { desktop: '18:5', mobile: '3:2' },\n  alignContent = 'center',\n  isAnimated = false,\n  hasHorizontalLine = false,\n  badgeImageAltText,\n  badgeImageUrl,\n  hasGalleryButton = false,\n  illustrationOverlay,\n  forTheStayIllustration,\n  captionMetricsOnClick,\n  brandLinkMetricsOnClick,\n}) => {\n  const { t } = useTranslation('osc-hero-image');\n  const { ref: intersectionRef, isIntersecting: inView } = useIntersectionObserver({\n    threshold: [0.15],\n    freezeOnceVisible: true,\n  });\n  const attachedContentAnimate = !isReducedMotion && isAnimated ? intersectionRef : null;\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n\n  if (!image) {\n    return null;\n  }\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isCenter = alignContent === 'center';\n  const isLeft = alignContent === 'left';\n  const isRight = alignContent === 'right';\n\n  const { imageUrl, aspectRatio } = getCurrentAspectRatioAndUrl({\n    width: rect?.width || 0,\n    imageUrlMobile: image.mobileUrl,\n    imageUrlTablet: image.mobileUrl,\n    imageUrlDesktop: image.desktopUrl,\n    aspectRatioMobile: aspectRatios.mobile,\n    aspectRatioTablet: aspectRatios.mobile,\n    aspectRatioDesktop: aspectRatios.desktop,\n  });\n\n  return (\n    <div\n      data-testid=\"heroImageContainer\"\n      className=\"relative block w-full overflow-hidden\"\n      ref={ref}\n    >\n      <ResponsiveImage\n        aspectRatio={aspectRatio}\n        imageUrl={imageUrl}\n        altText={imageAltText}\n        width={rect?.width ?? 0}\n        captionData={captionData}\n        onClick={captionMetricsOnClick}\n      />\n\n      <div className=\"flex\">\n        {badgeImageUrl ? (\n          <div className=\"absolute top-12 ms-5 aspect-square h-24 sm:top-20 sm:h-44 xl:ms-10 xl:h-52\">\n            <Image className=\"object-contain\" src={badgeImageUrl} alt={badgeImageAltText} fill />\n          </div>\n        ) : null}\n\n        {hasGalleryButton ? (\n          <button\n            type=\"button\"\n            className={cx(\n              'btn btn-sm btn-primary-outline bg-bg brand-qq:rounded-none brand-ol:rounded-none brand-wa:rounded-none brand-wa:font-normal brand-wa:uppercase absolute top-20 border-0 ltr:right-5 ltr:xl:right-10 rtl:left-5 rtl:xl:left-10',\n              {\n                'btn bg-bg-dark text-text-inverse': isDark,\n              }\n            )}\n          >\n            <div className=\"container px-0\">\n              {t('galleryButton')}\n              <svg\n                className={cx('fill-primary inline max-h-4 pl-1 pr-3 rtl:pl-3 rtl:pr-1', {\n                  'fill-text-inverse': isDark,\n                })}\n                viewBox=\"0 0 24 24\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <path d=\"m0 0v24h24v-24z\" fill=\"none\" />\n                <rect height=\"9\" rx=\"1.5\" width=\"9\" x=\"4.5\" y=\"10.5\" />\n                <path d=\"m16 16.5c.28 0 .5-.22.5-.5v-6c0-1.38-1.12-2.5-2.5-2.5h-6c-.28 0-.5.22-.5.5s.22.5.5.5h6c.83 0 1.5.67 1.5 1.5v6c0 .28.22.5.5.5z\" />\n                <path d=\"m19 13.5c.28 0 .5-.22.5-.5v-6c0-1.38-1.12-2.5-2.5-2.5h-6c-.28 0-.5.22-.5.5s.22.5.5.5h6c.83 0 1.5.67 1.5 1.5v6c0 .28.22.5.5.5z\" />\n              </svg>\n            </div>\n          </button>\n        ) : null}\n      </div>\n\n      {headline || shortDescription || longDescription || link ? (\n        <div\n          data-testid=\"testCssThemeVariant\"\n          ref={attachedContentAnimate}\n          className={cx(\n            'brand-nd:bg-bg brand-wa:pb-16 brand-wa:xl:pb-20 relative z-10 w-full pb-8 xl:pb-12',\n            {\n              'bg-bg-light brand-hi-refresh:bg-bg brand-gu:bg-quarternary brand-ou:bg-secondary':\n                isLight,\n              'bg-bg-dark brand-es:bg-bg brand-gu:bg-quarternary brand-hi-refresh:bg-bg brand-ou:bg-secondary brand-ey:bg-bg-light':\n                isDark,\n              'brand-ou:bg-bg-light': !isDark && !isLight,\n            }\n          )}\n        >\n          <div\n            data-testid=\"heroImageTextBoxContainerTest\"\n            className={cx('container flex flex-col', {\n              'items-end': isRight,\n              'items-start': isLeft,\n              'items-center': isCenter,\n            })}\n          >\n            <div\n              className={cx(\n                'brand-gu:!bg-opacity-100 image-corner-radius relative -mt-20 mb-0 w-full bg-[#f4f4f4] !bg-opacity-90 px-6 py-8 sm:px-12 xl:-mt-28 xl:px-16 xl:py-12',\n                'brand-es:shadow-xl',\n                'brand-gu:shadow-xl',\n                'brand-hi-refresh:shadow-xl',\n                'brand-nd:shadow-xl',\n                'brand-wa:shadow-xl',\n                {\n                  'sm:max-w-xl 2xl:max-w-2xl': isRight || isLeft,\n                  'brand-es:bg-bg brand-ey:bg-bg brand-gu:bg-bg-light brand-hi-refresh:bg-bg-light brand-lx:bg-bg-light brand-nd:bg-bg-light brand-ou:bg-bg-light':\n                    isLight,\n                  'brand-es:bg-bg-dark brand-ey:bg-bg-dark brand-gu:bg-bg-dark brand-hi-refresh:bg-bg-dark brand-nd:bg-bg-dark brand-ou:bg-bg-dark':\n                    isDark,\n                  'brand-es:bg-bg brand-ey:bg-bg-light brand-hi-refresh:bg-bg brand-nd:bg-bg brand-gu:bg-quarternary brand-ou:bg-secondary brand-lx:bg-bg':\n                    !isDark && !isLight,\n                }\n              )}\n            >\n              {forTheStayIllustration ? forTheStayIllustration : null}\n\n              {headline ? (\n                <BrandTextHeader\n                  className={cx(\n                    'sm:heading-4xl heading-xl 2xl:heading-5xl whitespace-normal text-center delay-150 xl:text-center',\n                    'brand-qq:heading-6xl brand-qq:2xl:heading-7xl',\n                    'brand-wa:xl:heading-4xl',\n                    {\n                      'sm:text-left': isLeft || isRight,\n                      'sm:text-center': isCenter,\n                      'opacity-100 translate-y-0': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                      'pb-3': hasHorizontalLine && !shortDescription,\n                      'brand-es:text-text-inverse brand-ey:text-text-inverse brand-gu:text-text-inverse brand-hi-refresh:text-text-inverse brand-nd:text-text-inverse brand-ou:text-text-inverse':\n                        isDark,\n                    }\n                  )}\n                >\n                  {headline}\n                </BrandTextHeader>\n              ) : null}\n\n              {shortDescription ? (\n                <BrandTextBody\n                  className={cx(\n                    '!text-primary pb-3 text-center font-sans !text-xl font-bold delay-300 xl:text-center',\n                    'brand-qq:tracking-[.25em] brand-qq:uppercase brand-qq:text-primary brand-qq:!text-sm brand-qq:2xl:text-base',\n                    {\n                      'sm:text-left': isLeft || isRight,\n                      'sm:text-center': isCenter,\n                      'opacity-100 translate-y-0': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                      'brand-es:!text-text-inverse brand-ey:!text-text-inverse brand-gu:!text-text-inverse brand-hi-refresh:!text-text-inverse brand-nd:!text-text-inverse brand-ou:!text-text-inverse':\n                        isDark,\n                    }\n                  )}\n                  brandComponentTheme={brandComponentTheme}\n                >\n                  {shortDescription}\n                </BrandTextBody>\n              ) : null}\n\n              {hasHorizontalLine ? (\n                <hr\n                  className={cx(\n                    'border-text-alt border-t pb-6',\n                    'brand-qq:border-t-2 brand-qq:border-[#cccccc]',\n                    {\n                      'opacity-100 translate-y-2': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                      'brand-ey:border-bg-light brand-gu:border-bg brand-hi-refresh:border-bg-light brand-nd:border-bg brand-ou:border-secondary':\n                        isDark,\n                      'brand-hi-refresh:border-primary': !isDark,\n                    }\n                  )}\n                />\n              ) : null}\n\n              {longDescription ? (\n                <BrandTextBody\n                  className={cx(\n                    'whitespace-normal pb-5 text-center text-sm font-normal tracking-normal sm:pb-6 xl:pb-8 xl:text-center',\n                    'brand-qq:text-primary brand-qq:!text-base brand-qq:2xl:!text-xl',\n                    {\n                      'sm:text-left': isLeft || isRight,\n                      'sm:text-center': isCenter,\n                      'opacity-100 translate-y-0': inView && isAnimated,\n                      'translate-y-4': !inView && isAnimated,\n                      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                        isAnimated,\n                      'brand-es:text-text-inverse brand-es:[&>div>p>a]:text-text-inverse brand-es:[&>div>a]:text-text-inverse':\n                        isDark,\n                      'brand-ey:text-text-inverse brand-ey:[&>div>p>a]:text-text-inverse brand-ey:[&>div>a]:text-text-inverse':\n                        isDark,\n                      'brand-gu:text-text-inverse brand-gu:[&>div>p>a]:text-text-inverse brand-gu:[&>div>a]:text-text-inverse':\n                        isDark,\n                      'brand-hi-refresh:text-text-inverse brand-hi-refresh:[&>div>p>a]:text-text-inverse brand-hi-refresh:[&>div>a]:text-text-inverse':\n                        isDark,\n                      'brand-nd:text-text-inverse brand-nd:[&>div>p>a]:text-text-inverse brand-nd:[&>div>a]:text-text-inverse':\n                        isDark,\n                      'brand-ou:text-text-inverse brand-ou:[&>div>p>a]:text-text-inverse brand-ou:[&>div>a]:text-text-inverse':\n                        isDark,\n                    }\n                  )}\n                >\n                  {longDescription}\n                </BrandTextBody>\n              ) : null}\n\n              {link ? (\n                <div\n                  className={cx('text-center delay-700 xl:text-center', {\n                    'sm:text-left': isLeft || isRight,\n                    'sm:text-center': isCenter,\n                    'opacity-100 translate-y-0': inView && isAnimated,\n                    'translate-y-4': !inView && isAnimated,\n                    'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n                      isAnimated,\n                  })}\n                >\n                  <BrandLink\n                    label={link.label}\n                    isNewWindow={link.isNewWindow}\n                    showNewWindowIcon={link.isNewWindow}\n                    url={link.url}\n                    brandComponentTheme={brandComponentTheme}\n                    data-conductrics-goal={link.experimentationConfiguration?.goal}\n                    data-conductrics-value={link.experimentationConfiguration?.value}\n                    anchorClassName={cx({\n                      '!btn-primary brand-ht:border-none': isDark,\n                      'brand-es:!bg-bg brand-es:!text-primary brand-es:hover:!bg-bg-dark brand-es:hover:!text-text-inverse brand-es:hover:!border-bg brand-es:focus:!bg-bg-dark brand-es:focus:!text-text-inverse brand-es:focus:!border-bg':\n                        isDark,\n                      'brand-ey:!bg-bg-light brand-ey:!text-primary brand-ey:hover:!bg-quarternary brand-ey:!border-none brand-ey:hover:!text-primary-alt brand-ey:focus:!bg-quarternary brand-ey:focus:!text-primary-alt':\n                        isDark,\n                      'brand-gu:!bg-transparent brand-gu:hover:!text-secondary brand-gu:hover:decoration-secondary':\n                        isDark,\n                      'brand-hi-refresh:!bg-bg brand-hi-refresh:!text-primary brand-hi-refresh:border-none brand-hi-refresh:hover:!bg-bg-light brand-hi-refresh:hover:!text-primary brand-hi-refresh:focus:!bg-bg-light brand-hi-refresh:focus:!text-primary':\n                        isDark,\n                      'brand-nd:!bg-bg brand-nd:!text-primary brand-nd:hover:!bg-primary-alt brand-nd:hover:!text-text-inverse brand-nd:focus:!bg-primary-alt brand-nd:focus:!text-text-inverse':\n                        isDark,\n                      'brand-ou:rounded-full brand-ou:!btn-quarternary brand-ou:!text-primary brand-ou:!border-primary brand-ou:hover:!text-quarternary brand-ou:hover:!border-quarternary':\n                        isDark,\n                      'brand-qq:!bg-transparent brand-qq:hover:!bg-transparent brand-qq:hover:!border-primary brand-qq:!btn-primary-outline brand-qq:!border-primary':\n                        isDark,\n                      'brand-wa:!text-primary brand-wa:tracking-[1px] brand-wa:font-normal brand-wa:uppercase brand-wa:underline brand-wa:underline-offset-8 brand-wa:decoration-2 brand-wa:!bg-transparent brand-wa:border-none brand-wa:px-0':\n                        isDark,\n                      'brand-ht:!btn-primary brand-ht:!text-text-inverse': isLight,\n                    })}\n                    metricsOnClick={brandLinkMetricsOnClick}\n                  />\n                </div>\n              ) : null}\n            </div>\n          </div>\n        </div>\n      ) : null}\n      {illustrationOverlay}\n    </div>\n  );\n};\n\nexport default HeroImage;\n","export * from './lib/hero-image';\n","export type IconVariant = 'regular' | 'solid';\n\nexport const IconNames = [\n  '360-tour',\n  'access',\n  'accessibility',\n  'add-circle',\n  'add-hotel',\n  'add-square',\n  'add',\n  'adventure-stays',\n  'airport',\n  'alert-circle',\n  'alert-triangle',\n  'all-inclusive',\n  'amazon',\n  'app',\n  'arrow-down-circle',\n  'arrow-down-square',\n  'arrow-down',\n  'arrow-left-circle',\n  'arrow-left-square',\n  'arrow-left',\n  'arrow-right-circle',\n  'arrow-right-square',\n  'arrow-right',\n  'arrow-small-right',\n  'arrow-up-circle',\n  'arrow-up-square',\n  'arrow-up',\n  'arrowhead-down-circle',\n  'arrowhead-down-square',\n  'arrowhead-down',\n  'arrowhead-left-circle',\n  'arrowhead-left-square',\n  'arrowhead-left',\n  'arrowhead-right-circle',\n  'arrowhead-right-square',\n  'arrowhead-right',\n  'arrowhead-small-down',\n  'arrowhead-small-left',\n  'arrowhead-small-right',\n  'arrowhead-small-up',\n  'arrowhead-up-circle',\n  'arrowhead-up-square',\n  'arrowhead-up',\n  'audio-description',\n  'audit-log',\n  'auto-upgrade',\n  'av',\n  'award-selected',\n  'award',\n  'bag',\n  'bagel',\n  'balcony',\n  'banner',\n  'bath',\n  'bathrobe',\n  'beach',\n  'bed',\n  'bell',\n  'bin',\n  'boutique-hotels',\n  'breakfast',\n  'building-of-interest',\n  'bullet',\n  'business-centre',\n  'buy-points',\n  'calendar-search',\n  'calendar',\n  'cancellation',\n  'car-rental',\n  'care',\n  'casino',\n  'champagne',\n  'check-circle',\n  'check-in',\n  'check-out',\n  'check-square',\n  'check-uncontained',\n  'check',\n  'checkbox-unselected',\n  'checkmark-heavy',\n  'checkmark-shining',\n  'choose-your-room',\n  'christmas-tree',\n  'circle-filled',\n  'city',\n  'cleaning-equipment',\n  'cleaning',\n  'clear',\n  'clock',\n  'close-circle',\n  'close-square',\n  'close',\n  'closed-captions',\n  'cocktails',\n  'coffee',\n  'cold-breakfast',\n  'compass',\n  'concierge',\n  'connecting-rooms',\n  'contact',\n  'convert-points',\n  'cookie',\n  'copy',\n  'cosmetics',\n  'credit-card',\n  'credit-cards',\n  'currency',\n  'diamond',\n  'digital-checkout',\n  'digital-key',\n  'dining',\n  'download',\n  'edit',\n  'ellipses',\n  'enlarge',\n  'entertainment',\n  'epay',\n  'ev-charging',\n  'evening-reception',\n  'event',\n  'ewallet',\n  'exercise-bike',\n  'face-covering',\n  'facebook',\n  'family',\n  'fast-forward',\n  'favorite-hotel',\n  'favorite',\n  'filters',\n  'find-hotel',\n  'firearms',\n  'fireplace',\n  'flag',\n  'flower',\n  'food-&-beverage',\n  'free-nights',\n  'full-kitchen',\n  'fullscreen',\n  'gallery',\n  'garden-view',\n  'gift',\n  'gluten-free',\n  'gold-bar',\n  'golf-cart',\n  'golf-clubs',\n  'golf-instructions',\n  'golf-practice',\n  'golf',\n  'grain-free',\n  'group',\n  'guarantee-policy',\n  'gym',\n  'hairdryer',\n  'halal',\n  'handle',\n  'happy',\n  'help-circle',\n  'help-square',\n  'help',\n  'hide',\n  'home',\n  'hot-breakfast',\n  'hot-tub',\n  'hotel-location',\n  'hotel-selected',\n  'hotel',\n  'house',\n  'image',\n  'in-room-kitchen',\n  'indoor-pool',\n  'induction-cooktop',\n  'info-circle',\n  'instagram',\n  'inventory',\n  'iron',\n  'key-dispenser',\n  'keys',\n  'kid-friendly',\n  'kids-club',\n  'kitchen',\n  'kitchenette-and-fridge',\n  'kosher',\n  'language',\n  'lift',\n  'link',\n  'living-space',\n  'location',\n  'lock',\n  'lounge',\n  'luggage',\n  'luxury',\n  'lyft',\n  'mail',\n  'map-location',\n  'map-pin',\n  'massage-treatments',\n  'meeting',\n  'megaphone',\n  'menu',\n  'michelin-star',\n  'microwave',\n  'mini-fridge-and-microwave',\n  'mini-fridge',\n  'minibar',\n  'mobile-app',\n  'mobile',\n  'mouse',\n  'movies',\n  'music',\n  'nearby-hotels',\n  'new-hotel',\n  'new-window',\n  'night',\n  'nights-circle',\n  'no-image',\n  'no-pets',\n  'no-smoking',\n  'ocean-view',\n  'optional-services',\n  'order-ahead',\n  'organic',\n  'other-functions',\n  'outdoor-pool',\n  'paid-upgrade',\n  'parking',\n  'pause-circle',\n  'pause',\n  'peleton-amenities',\n  'person',\n  'pet-friendly',\n  'pinterest',\n  'play-circle',\n  'play',\n  'point-of-interest',\n  'points-and-money',\n  'points-promotions',\n  'points',\n  'policies',\n  'pool-points',\n  'pool',\n  'price',\n  'print',\n  'prodigy-home',\n  'prodigy-portal',\n  'pyjamas',\n  'qr-pay',\n  'radio-button-selected',\n  'radio-button-unselected',\n  'rate',\n  'raw',\n  'refresh',\n  'remote',\n  'remove-circle',\n  'remove-square',\n  'remove',\n  'renovated-hotel',\n  'residence',\n  'resort',\n  'restart',\n  'restaurant',\n  'review',\n  'rewards',\n  'rewind',\n  'rideshare',\n  'rollaway-bed',\n  'rollaway-crib',\n  'rollover-nights',\n  'room-guarantee',\n  'room-plan',\n  'room-service',\n  'room-type-setting',\n  'room-upgrade',\n  'safe',\n  'sailing',\n  'sale',\n  'search',\n  'settings',\n  'share',\n  'shopping',\n  'shower',\n  'shuttle-service',\n  'ski',\n  'skip-back',\n  'skip-forward',\n  'slippers',\n  'smoking',\n  'snacks',\n  'snorkel',\n  'sound-off',\n  'sound-on',\n  'spa',\n  'special-rate-plan',\n  'special-requests',\n  'spin',\n  'spray-bottle',\n  'stadium',\n  'star-burst',\n  'star-circle-filled',\n  'star-circle',\n  'star-half',\n  'star',\n  'streaming-tv',\n  'suitcase',\n  'suites',\n  'sunshine',\n  'support',\n  'surfboard',\n  'taxes',\n  'telephone',\n  'tennis',\n  'terrace',\n  'theme-park',\n  'tiktok',\n  'towels',\n  'transcripts',\n  'transfer',\n  'translation',\n  'trumpet',\n  'turndown-service',\n  'tv',\n  'unavailable',\n  'unhappy',\n  'unhide',\n  'unlock',\n  'user-circle',\n  'user-info',\n  'user-square',\n  'user',\n  'users',\n  'vegan',\n  'vegetarian',\n  'wallet',\n  'water-bottle',\n  'waterpark',\n  'wedding-bird',\n  'wedding-cake',\n  'wedding',\n  'whatsapp',\n  'wifi',\n  'x',\n  'yoga',\n  'youtube',\n] as const;\n\nexport const IconSetNames = new Set([...IconNames]);\n","export type SupportedBrand = 'EY' | 'ES' | 'HP';\n\nexport const EYIconNames = [\n  'breakfast',\n  'fitness',\n  'grill',\n  'kitchen',\n  'laundry',\n  'pet-friendly',\n  'studio',\n] as const;\n\nexport const ESIconNames = [\n  'breakfast',\n  'drink',\n  'fitness',\n  'breakfast_inverted',\n  'drink_inverted',\n  'fitness_inverted',\n] as const;\n\nexport const HPIconNames = ['hex', 'hex_inverted'] as const;\n\nexport const EYIconSetNames = new Set([...EYIconNames]);\n\nexport const ESIconSetNames = new Set([...ESIconNames]);\n\nexport const HPIconSetNames = new Set([...HPIconNames]);\n","import { ReactSVG } from 'react-svg';\nimport { IconSetNames } from './osc-icon-map';\nimport { EYIconSetNames, ESIconSetNames, HPIconSetNames } from './osc-brand-icon-map';\nimport type { ESIconNames, EYIconNames, HPIconNames, SupportedBrand } from './osc-brand-icon-map';\nimport type { IconVariant, IconNames } from './osc-icon-map';\n\nexport const sizeToPixelValue = {\n  xs: '18',\n  sm: '20',\n  md: '28',\n  lg: '32',\n  xl: '40',\n  '2xl': '48',\n  '3xl': '60',\n  '4xl': '72',\n  '5xl': '96',\n};\n\nconst basePath = `/modules/assets/svgs/icons`;\nexport const baseIconPath = basePath;\nexport const brandIconPath = `${basePath}/brand`;\n\ntype BaseIconProps = Pick<React.ComponentProps<typeof ReactSVG>, 'title' | 'wrapper'> & {\n  /**\n   * For passing additional classes to the parent `svg` element\n   */\n  className?: string;\n  /**\n   * One of five size options; defaults to medium\n   */\n  size?: keyof typeof sizeToPixelValue;\n};\n\ntype IconPropsWithBrand<\n  BrandCode extends SupportedBrand,\n  BrandIconNames extends ReadonlyArray<string>\n> = BaseIconProps & {\n  /**\n   * Brand code for the icon\n   */\n  brandCode: BrandCode;\n  /**\n   * Name of the icon to display from a brand specific set\n   */\n  name: BrandIconNames[number];\n  variant?: never;\n};\n\nexport type OSCIconNames = (typeof IconNames)[number];\n\ntype IconPropsWithVariant = BaseIconProps & {\n  brandCode?: never;\n  /**\n   * Name of the icon to display from the approved set\n   */\n  name: OSCIconNames;\n  /**\n   * Controls icon style: regular or solid; defaults to “regular”\n   */\n  variant?: IconVariant;\n};\n\nexport type IconProps =\n  | IconPropsWithVariant\n  | IconPropsWithBrand<'ES', typeof ESIconNames>\n  | IconPropsWithBrand<'EY', typeof EYIconNames>\n  | IconPropsWithBrand<'HP', typeof HPIconNames>;\n\nexport function Icon({\n  className,\n  brandCode,\n  name,\n  size = 'md',\n  title,\n  variant = 'regular',\n  wrapper = 'span',\n}: IconProps) {\n  if (brandCode === 'ES' && !ESIconSetNames.has(name)) {\n    return null;\n  }\n  if (brandCode === 'EY' && !EYIconSetNames.has(name)) {\n    return null;\n  }\n  if (brandCode === 'HP' && !HPIconSetNames.has(name)) {\n    return null;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n  if (!brandCode && !IconSetNames.has(name as OSCIconNames)) {\n    return null;\n  }\n  const sizeInPixels = sizeToPixelValue[size];\n  const src = brandCode\n    ? `${brandIconPath}/${brandCode}/${name}.svg`\n    : `${baseIconPath}/${variant}/${name}.svg`;\n\n  return (\n    <ReactSVG\n      beforeInjection={(svg) => {\n        !title && svg.setAttribute('aria-hidden', 'true');\n        title && svg.setAttribute('aria-label', title);\n        svg.setAttribute('fill', 'currentColor');\n        svg.setAttribute('width', sizeInPixels);\n        svg.setAttribute('height', sizeInPixels);\n        svg.setAttribute('viewBox', '0 0 24 24');\n        svg.setAttribute('data-testid', `icon-${name}`);\n        className && svg.classList.add(...className.split(' '));\n      }}\n      afterInjection={(svg) => {\n        if (svg) {\n          const wrapperDiv = svg.parentElement?.parentElement;\n          if (wrapperDiv) {\n            wrapperDiv.removeAttribute('style');\n          }\n        }\n      }}\n      src={src}\n      {...(title ? { title } : null)}\n      style={{ height: `${sizeInPixels}px`, width: `${sizeInPixels}px` }}\n      wrapper={wrapper}\n      className=\"pointer-events-none block\"\n    />\n  );\n}\n\nexport default Icon;\n","import type { HotelAmenityId } from '@dx-ui/gql-types';\nimport type { IconNames } from './osc-icon-map';\n\nexport const AmenityIcons: { [key in HotelAmenityId]: (typeof IconNames)[number] } = {\n  adjoiningRooms: 'connecting-rooms',\n  adventureStays: 'adventure-stays',\n  airportShuttle: 'shuttle-service',\n  allInclusive: 'all-inclusive',\n  beach: 'beach',\n  boutique: 'boutique-hotels',\n  businessCenter: 'business-centre',\n  casino: 'casino',\n  concierge: 'concierge',\n  connectedRoom: 'remote',\n  digitalKey: 'digital-key',\n  dining: 'dining',\n  evCharging: 'ev-charging',\n  eveningReception: 'evening-reception',\n  eveningSocial: 'evening-reception',\n  executiveLounge: 'lounge',\n  familyFriendly: 'family',\n  fitnessCenter: 'gym',\n  freeBreakfast: 'breakfast',\n  freeParking: 'parking',\n  freeWifi: 'wifi',\n  golf: 'golf',\n  hotelResidence: 'residence',\n  indoorPool: 'pool',\n  inRoomKitchen: 'in-room-kitchen',\n  luxury: 'luxury',\n  meetingRooms: 'meeting',\n  newHotel: 'new-hotel',\n  nonSmoking: 'no-smoking',\n  outdoorPool: 'outdoor-pool',\n  petsAllowed: 'pet-friendly',\n  petsNotAllowed: 'no-pets',\n  resort: 'resort',\n  roomService: 'room-service',\n  ski: 'ski',\n  spa: 'spa',\n  streamingTv: 'streaming-tv',\n  tennisCourt: 'tennis',\n};\n","import { Icon } from './lib/osc-icon';\nimport type { IconNames } from './lib/osc-icon-map';\n\nexport * from './lib/osc-icon';\nexport * from './lib/osc-icon-map';\nexport * from './lib/osc-brand-icon-map';\nexport * from './lib/osc-amenity-icon-map';\n\nexport type IconName = (typeof IconNames)[number];\n\nexport default Icon;\n","import cx from 'classnames';\nimport type * as React from 'react';\n\ntype LinkAdChoices = React.SVGProps<SVGSVGElement>;\n\nconst LinkAdChoices: React.FC<React.PropsWithChildren<LinkAdChoices>> = ({\n  className,\n  width = 14,\n  height = 14,\n  ...rest\n}) => (\n  <svg\n    role=\"img\"\n    aria-hidden\n    viewBox=\"0 0 26 26\"\n    width={width}\n    height={height}\n    className={cx('ms-1 inline-block fill-current', className)}\n    data-testid=\"link-ad-choices\"\n    {...rest}\n  >\n    <path d=\"M2.193.663l-.222.008-.21.05-.201.067-.183.087-.172.114-.153.135-.144.162-.126.184-.115.19-.086.232-.077.24-.047.258-.03.278-.008.298v15.981l.009.373.029.345.047.307.066.279.088.24.095.21.124.183.135.154.154.124.164.095.173.068.192.04.2.009.221-.01.221-.029.24-.056.239-.079.259-.095.26-.124.268-.135 1.698-.95.096-.067.115-.087.115-.114.124-.135.117-.155.095-.171.068-.183.047-.2v-.222l-.029-.153-.067-.201-.096-.173-.115-.144-.135-.105-.164-.087-.171-.048-.19-.029-.192.01-.212.03-.117.03-.2.094-.192.068-.181.037-.174.01-.153-.018-.144-.04-.135-.068-.115-.096-.097-.114-.086-.142-.067-.155-.058-.184-.037-.2-.02-.211V5.162l.01-.221.039-.2.047-.183.068-.163.097-.144.104-.117.115-.095.143-.077.144-.049.164-.026h.162l.183.026.192.05.191.076.163.086 10.245 5.853.192.113.154.135.135.125.104.144.087.144.048.146.029.142-.01.152-.027.146-.06.142-.075.145-.116.135-.132.135-.164.115-.183.105-6.331 3.3v-3.876l-.019-.223-.067-.199-.097-.192-.133-.155-.164-.132-.183-.096-.2-.068-.21-.02-.223.02-.2.068-.191.096-.155.132-.134.164-.096.183-.068.2-.018.222v5.488l.018.21.057.182.096.173.126.163.144.144.161.124.185.106.191.086.106.039.144.038.181.02.193.009.21-.03.192-.057.095-.039 9.92-5.382.268-.144.24-.16.212-.156.19-.162.164-.163.134-.173.116-.163.086-.172.059-.182.029-.173v-.183l-.042-.181-.056-.183-.096-.184-.124-.191-.164-.183-.19-.192-.232-.18-.257-.192-.3-.183L3.69 1.094 3.422.95l-.26-.115-.259-.077L2.664.7 2.422.663z\" />\n    <path d=\"M8.764 8.51v-.087l-.038-.21-.077-.201-.106-.174-.133-.162-.164-.126-.192-.095-.203-.058-.219-.019h-.087l-.21.039-.201.065-.174.115-.162.135-.124.165-.097.191-.058.2-.02.222v.086l.04.21.067.203.115.171.134.154.162.135.192.095.202.06.221.016h.086l.212-.036.2-.077.172-.106.155-.135.135-.162.095-.192.057-.201z\" />\n  </svg>\n);\n\nexport { LinkAdChoices };\nexport default LinkAdChoices;\n","import cx from 'classnames';\nimport type * as React from 'react';\n\ntype LinkNewWindow = React.SVGProps<SVGSVGElement>;\n\nconst LinkNewWindow: React.FC<React.PropsWithChildren<LinkNewWindow>> = ({\n  className,\n  width = 14,\n  height = 14,\n  ...rest\n}) => (\n  <svg\n    role=\"img\"\n    aria-hidden\n    data-testid=\"link-new-window\"\n    viewBox=\"0 0 10 10\"\n    width={width}\n    height={height}\n    className={cx('ms-1 inline-block stroke-current align-[-2px]', className)}\n    {...rest}\n  >\n    <g fill=\"none\">\n      <path d=\"M3.6 1.3h5.3v5.3H3.6z\" />\n      <path d=\"M1.3 8.8V4.6h2.3v2h1.9v2.2z\" />\n    </g>\n  </svg>\n);\n\nexport { LinkNewWindow };\nexport default LinkNewWindow;\n","import { isBrowser } from '@dx-ui/utilities-is-browser';\n\nexport function getCIDParam({\n  campaignId,\n  componentName,\n}: {\n  campaignId: string;\n  componentName: string;\n}) {\n  const digitalData = isBrowser ? window.digitalData : {};\n  const brandCode =\n    digitalData?.global?.page?.brandCode || digitalData?.page?.category?.brand || '';\n  const ddPageType =\n    digitalData?.global?.page?.pageType || digitalData?.page?.pageInfo?.pageType || '';\n  const ddPrimaryCategory =\n    digitalData?.global?.page?.primaryCategory ||\n    digitalData?.page?.category?.primaryCategory ||\n    '';\n  const ddPageDetail1 =\n    digitalData?.global?.page?.pageDetail1 || digitalData?.page?.pageInfo?.pageDetail1 || '';\n  const ddPageDetail2 =\n    digitalData?.global?.page?.pageDetail2 || digitalData?.page?.pageInfo?.pageDetail2 || '';\n\n  const pageType = ddPageType ? `,${ddPageType}` : '';\n  const pageDetail1 = ddPageDetail1 ? `,${ddPageDetail1}` : '';\n  const pageDetail2 = ddPageDetail2 ? `,${ddPageDetail2}` : '';\n  const primaryCategory = ddPrimaryCategory ? `,${ddPrimaryCategory}` : '';\n\n  return `OH,${brandCode},${campaignId},MULTIPR,${componentName}${pageType}${primaryCategory}${pageDetail1}${pageDetail2}`;\n}\n","import * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport NextLink from 'next/link';\nimport cx from 'classnames';\n\nimport { LinkAdChoices } from './link.ad-choices';\nimport { LinkNewWindow } from './link.new-window';\nimport { getCIDParam } from './link.utils';\nimport { useIsClient } from 'usehooks-ts';\n\nexport type LinkBaseProps = {\n  /** jsx icon element to display with link */\n  icon?: JSX.Element;\n  /**\n   * Set the `aria-label` for the link\n   */\n  adaDescription?: string;\n  /**\n   * Set the classNames for the anchor element\n   */\n  anchorClassName?: string;\n  children?: React.ReactNode;\n  /** required props for dynamic cid param */\n  cidParams?: {\n    campaignId: string;\n    componentName: string;\n  };\n  /** Set to true if app supports next link routing in Akamai */\n  hasNextLinkSupport?: boolean;\n  /**\n   * Sets the `target` attribute to `_blank`\n   */\n  isNewWindow?: boolean;\n  /**\n   * The name of the link\n   */\n  label?: string;\n  /**\n   * Set the `href` attribute for the link\n   */\n  url: string;\n  /**\n   * Whether or not the new window icon should be visible\n   */\n  showNewWindowIcon?: boolean;\n  /** whether or not the link should be underlined */\n  underline?: boolean;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  wrapper?: any;\n};\n\nexport type Link = LinkBaseProps & Omit<React.ComponentProps<typeof NextLink>, 'href'>;\n\nexport const Link = React.forwardRef<HTMLAnchorElement, Link>((props, forwardedRef) => {\n  const {\n    adaDescription,\n    icon,\n    children,\n    cidParams: { campaignId, componentName } = {},\n    hasNextLinkSupport,\n    id,\n    isNewWindow,\n    target,\n    url: urlProp,\n    className = 'text-sm text-primary hover:text-primary-alt',\n    anchorClassName,\n    wrapper: Wrapper,\n    showNewWindowIcon = true,\n    underline = true,\n    ...rest\n  } = props;\n  useIsClient();\n  const { t } = useTranslation('osc-link');\n  const isAdChoices = typeof children === 'string' && !!children?.toString().match(/adchoices/i);\n  const isTargetBlank = isNewWindow || target === '_blank';\n  const linkProps = rest;\n  const canUseNextLink = hasNextLinkSupport && urlProp?.startsWith('/');\n  const url = urlProp?.startsWith('http') ? new URL(urlProp) : urlProp;\n\n  if (adaDescription) {\n    linkProps['aria-label'] = isTargetBlank ? `${adaDescription}, ${t('newTab')}` : adaDescription;\n  }\n  if (isTargetBlank) {\n    linkProps.rel = 'noopener noreferrer';\n  }\n  if (typeof url !== 'string' && campaignId && componentName && !url.searchParams.has('cid')) {\n    const cid = getCIDParam({ campaignId, componentName });\n    url.searchParams.set('cid', 'CID_VALUE_TO_BE_REPLACED');\n    url.href = url.href.replace('CID_VALUE_TO_BE_REPLACED', cid);\n  }\n\n  const classNames = cx({\n    underline,\n    [className]: !!className,\n  });\n\n  const linkContent = React.createElement(\n    canUseNextLink ? NextLink : 'a',\n    {\n      ref: forwardedRef,\n      id,\n      target: isTargetBlank ? '_blank' : target,\n      href: url,\n      className: cx(anchorClassName, {\n        'inline-block text-pretty': !anchorClassName,\n      }),\n      ...linkProps,\n    },\n    <>\n      <span className={classNames}>\n        {children}\n        {(isAdChoices || isTargetBlank) && isAdChoices ? (\n          <LinkAdChoices />\n        ) : (\n          isTargetBlank && showNewWindowIcon && <LinkNewWindow />\n        )}\n        {!!icon && <span aria-hidden>{icon}</span>}\n      </span>\n      {isTargetBlank && (\n        <span className=\"sr-only\">\n          , <span>{t('newTab')}</span>\n        </span>\n      )}\n    </>\n  );\n\n  // eslint-disable-next-line no-nested-ternary\n  return url ? (\n    Wrapper ? (\n      <Wrapper href={url} {...props}>\n        {linkContent}\n      </Wrapper>\n    ) : (\n      linkContent\n    )\n  ) : (\n    <div\n      ref={forwardedRef as unknown as React.LegacyRef<HTMLDivElement>}\n      className={classNames}\n      id={id}\n      aria-hidden={rest['aria-hidden']}\n    >\n      {children}\n    </div>\n  );\n});\n\nLink.displayName = 'Link';\n\nexport default Link;\n","export * from './lib/link';\nexport * from './lib/link.ad-choices';\nexport * from './lib/link.new-window';\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport type * as React from 'react';\nimport type { MarkdownToJSX } from 'markdown-to-jsx';\nimport MarkdownToJsx from 'markdown-to-jsx';\nimport type { Rule } from '@dx-ui/utilities-url-config';\nimport { getUrlConfig, RuleEngine } from '@dx-ui/utilities-url-config';\nimport { Link } from '@dx-ui/osc-link';\nimport merge from 'lodash/merge';\nimport { Speedbump, useSpeedbump } from '@dx-ui/osc-speedbump';\n\nexport type Markdown = {\n  /** Specific config rule that is used by the [RuleEngine](https://jira.hilton.com/stash/projects/HIW/repos/dx-shared/browse/packages/rule-engine) to process urls in the markdown */\n  rule?: Rule;\n  /** current language */\n  language: string;\n  /** url origin to use for determining url props to use when constructing links */\n  origin: string;\n} & MarkdownAttributes;\n\ntype MarkdownAttributes = {\n  [key: string]: unknown;\n  children: string;\n  options?: MarkdownToJSX.Options;\n};\n\ntype MarkdownLink = {\n  language: string;\n  origin: string;\n  rule: Rule;\n} & React.AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst MarkdownLink: React.FC<React.PropsWithChildren<MarkdownLink>> = ({\n  children,\n  rule,\n  language,\n  origin,\n  href,\n  ...props\n}) => {\n  const { onShow, onHide, isVisible, onContinue, isEnabled } = useSpeedbump(language);\n  if (!href) {\n    return null;\n  }\n  const linkProps: Link = { url: href };\n  if (rule) {\n    const ruleEngine = new RuleEngine(rule);\n    const data = getUrlConfig(ruleEngine, href, origin, language);\n    linkProps.url = data.url;\n    if (data.speedbump) {\n      linkProps.onClick = onShow;\n    }\n  }\n  return (\n    <>\n      <Link {...linkProps} {...props}>\n        {children}\n      </Link>\n      {isEnabled && <Speedbump isShowing={isVisible} onContinue={onContinue} onClose={onHide} />}\n    </>\n  );\n};\n\n/**\n * Used to display markdown content. This is a wrapper around [markdown-to-jsx](https://www.npmjs.com/package/markdown-to-jsx) that provides standard overrides\n * to handle links in the markdown. This incorporates the @see RuleEngine to process the urls in the markdown and provide\n * information to construct the [HTMLAnchorElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement).\n * @returns JSX that is used to render the html\n */\nexport const Markdown: React.FC<Markdown> = ({\n  children,\n  options,\n  language,\n  origin,\n  rule,\n  ...props\n}) => {\n  const defaultOptions = {\n    overrides: {\n      a: {\n        component: MarkdownLink,\n        props: {\n          rule,\n          language,\n          origin,\n          className: '!text-base',\n        },\n      },\n    },\n  };\n  const mergedOptions = merge(defaultOptions, options);\n  return (\n    <MarkdownToJsx options={mergedOptions} {...props}>\n      {children}\n    </MarkdownToJsx>\n  );\n};\n\nexport default Markdown;\n","export * from './lib/markdown';\n","import { type RefObject } from 'react';\nimport cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { BrandButton } from '@dx-ui/osc-brand-buttons';\n\nexport type BackToTopProps = {\n  /** The main tag reference */\n  mainRef: RefObject<HTMLElement | null>;\n  /**\n   * CMS ONLY: Dark color theme or Light color theme.\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\n/**\n * Back to Top adds a button just above the footer, when clicked the focus moves back to the top of the page. Targets the h1, if present, or to a ref within `<main>`.\n *\n * If your pages don't consistently have an h1, add `ref={mainRef}` to your `<main>` element, [see Brand/CPM implementation](https://gitlab.svc-m.hhc.hilton.com/pac/hiw/dx-ui/-/blob/main/libs/cpm/cpm-mapping-brands/src/components/Layout.tsx#L77).\n */\nexport const BackToTop = ({ mainRef, brandComponentTheme }: BackToTopProps) => {\n  const [t] = useTranslation('osc-back-to-top');\n\n  const isReducedMotion = getIsReducedMotion();\n\n  const focusFirstElement = () => {\n    if (isBrowser) {\n      window.scrollTo({\n        top: 0,\n        behavior: isReducedMotion ? 'instant' : 'smooth',\n      });\n    }\n\n    if (mainRef && mainRef.current) {\n      const main = mainRef.current;\n      let headingSelected = false;\n\n      const focusableHeadings = main.querySelectorAll('h1');\n      const focusNoHeadings = document.getElementById('skipped');\n\n      for (let i = 0; i < focusableHeadings.length; i++) {\n        if (\n          isBrowser &&\n          focusableHeadings[i]?.getAttribute('display') !== 'none' &&\n          focusableHeadings[i]?.getAttribute('visibility') !== 'hidden'\n        ) {\n          (focusableHeadings[i] as HTMLElement)?.focus({ preventScroll: true });\n          headingSelected = true;\n\n          break;\n        }\n      }\n      if (!headingSelected) {\n        (focusNoHeadings as HTMLElement).focus({ preventScroll: true });\n      }\n    }\n  };\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      className={cx(\n        'brand-gu:bg-quarternary brand-ou:bg-secondary relative flex justify-center p-11',\n        {\n          'bg-bg-light': isLight,\n          'bg-bg-dark': isDark,\n        }\n      )}\n    >\n      <BrandButton\n        onClick={focusFirstElement}\n        label={t('backToTop')}\n        iconProps={{\n          name: 'arrowhead-up-circle',\n          size: 'sm',\n          variant: 'solid',\n        }}\n      />\n    </div>\n  );\n};\n\nexport default BackToTop;\n","import { BackToTop } from './lib/back-to-top';\n\nexport * from './lib/back-to-top';\n\nexport default BackToTop;\n","import Head from 'next/head';\nimport { useRouter } from 'next/router';\nimport type * as Types from '@dx-ui/gql-types';\n\ntype TSocialMediaLinks = Array<Pick<Types.BrandSocialMediaLink, 'channel' | 'url'>>;\n\nconst facebookAppId = '253862148111843';\n\nconst LANGUAGES = {\n  EN: 'en',\n  FR: 'fr',\n  DE: 'de',\n  IT: 'it',\n  JA: 'ja',\n  ES: 'es',\n  RU: 'ru',\n  AR: 'ar',\n  HO: 'ko',\n  PT: 'pt',\n  TR: 'tr',\n  ZH_HANS: 'zh-hans',\n  ZH_HANT: 'zh-hant',\n  CS: 'cs',\n  SV: 'sv',\n  TH: 'th',\n  NL: 'nl',\n  RO: 'ro',\n  PL: 'pl',\n  BG: 'bg',\n  FI: 'fi',\n} as const;\n\nconst HOMEPAGE_IN_ALL_LANGUAGES = Object.values(LANGUAGES).map((lang) => `/${lang}/`);\n\nexport type TPageHead = {\n  brandLogoImageSrc?: string;\n  metaDescription?: string;\n  metaKeywords?: string;\n  hideSearchEngine?: boolean;\n  pageTitle: string;\n  schemaName?: string;\n  schemaUrl?: string;\n  localeCode?: string;\n  baseAppUrl?: string;\n  brandFaviconImgSrc?: string;\n  fullBrandPath?: string;\n  seoImage?: string;\n  seoArticleTitle?: string;\n  brandCode?: string;\n  socialMediaLinks?: TSocialMediaLinks;\n  phoneNumber?: string;\n  isEdgeTestActive?: boolean;\n  appVersion: string;\n  isBrandHomePage: boolean;\n};\n\nexport const CustomHead = ({\n  brandLogoImageSrc,\n  hideSearchEngine = false,\n  metaDescription,\n  metaKeywords,\n  pageTitle,\n  schemaName,\n  baseAppUrl = '',\n  localeCode = '',\n  brandFaviconImgSrc,\n  seoImage,\n  seoArticleTitle,\n  brandCode,\n  socialMediaLinks,\n  phoneNumber,\n  isEdgeTestActive,\n  appVersion,\n  isBrandHomePage: isBrandHomePageProp,\n}: TPageHead) => {\n  const router = useRouter();\n\n  const pathname = baseAppUrl ? new URL(baseAppUrl).pathname : null;\n  const origin = baseAppUrl ? new URL(baseAppUrl).origin : null;\n\n  const isBrandHomePage = pathname && brandCode ? isBrandHomePageProp : false;\n\n  const isPortfolioHomePage = pathname ? HOMEPAGE_IN_ALL_LANGUAGES.includes(pathname) : false;\n\n  let seoSchema = null;\n\n  const brandSlug = Array.isArray(router.query?.brandSlug)\n    ? router.query.brandSlug.join('/')\n    : null;\n\n  let canonicalUrl = origin && localeCode ? `${origin}/${localeCode}/` : null;\n\n  if (canonicalUrl && brandSlug) {\n    canonicalUrl = canonicalUrl + brandSlug + '/';\n  }\n\n  if (canonicalUrl) {\n    if (seoArticleTitle) {\n      seoSchema = {\n        '@context': 'http://schema.org',\n        '@type': 'Article',\n        mainEntityOfPage: {\n          '@type': 'WebPage',\n          '@id': canonicalUrl,\n        },\n        headline: seoArticleTitle,\n        ...(seoImage && { image: seoImage }),\n        publisher: {\n          '@type': 'Organization',\n          name: 'Hilton',\n          logo: {\n            '@type': 'ImageObject',\n            url: 'https://www.hilton.com/modules/assets/svgs/logos/shop/WW.svg',\n          },\n        },\n      };\n    } else if (isBrandHomePage) {\n      seoSchema = {\n        '@context': 'http://schema.org',\n        '@type': 'Brand',\n        ...(schemaName && { name: schemaName }),\n        ...(brandLogoImageSrc && { logo: brandLogoImageSrc }),\n        ...(metaDescription && { description: metaDescription }),\n        ...(canonicalUrl && { url: canonicalUrl }),\n        ...(socialMediaLinks && { sameAs: socialMediaLinks.map((media) => media.url) }),\n      };\n    } else if (isPortfolioHomePage) {\n      seoSchema = {\n        '@context': 'http://schema.org',\n        '@type': 'Organization',\n        name: 'Hilton',\n        ...(brandLogoImageSrc && { logo: brandLogoImageSrc }),\n        ...(metaDescription && { description: metaDescription }),\n        telephone: phoneNumber || '+1-800-445-8667',\n        ...(canonicalUrl && { url: canonicalUrl }),\n        sameAs: [\n          ...(socialMediaLinks ? socialMediaLinks.map((media) => media.url) : []),\n          'https://en.wikipedia.org/wiki/Hilton_Worldwide',\n        ],\n      };\n    } else {\n      seoSchema = {\n        '@context': 'http://schema.org',\n        '@type': 'Organization',\n        ...(schemaName && { name: schemaName }),\n        ...(canonicalUrl && { url: canonicalUrl }),\n      };\n    }\n  }\n\n  const ogImageSrc = seoImage || brandLogoImageSrc;\n\n  return (\n    <Head>\n      <title>{pageTitle}</title>\n      {brandFaviconImgSrc ? <link rel=\"icon\" href={brandFaviconImgSrc} sizes=\"any\" /> : null}\n      {hideSearchEngine ? <meta name=\"robots\" content=\"noindex,follow\" /> : null}\n      <meta name=\"dx-ui-service\" content=\"hotels-ui\" />\n      <meta name=\"dx-version\" content={appVersion} />\n      <meta name=\"twitter:card\" content=\"summary\" />\n      <meta name=\"twitter:site\" content=\"@Hilton\" />\n      <meta name=\"og:title\" content={seoArticleTitle ?? pageTitle} />\n      <meta name=\"og:site_name\" content=\"Hilton\" />\n      <meta name=\"og:type\" content={seoArticleTitle ? 'article' : 'website'} />\n      {isEdgeTestActive ? <meta name=\"dx-ui-service\" content=\"ConductricsEdgeEnabled\" /> : null}\n      {canonicalUrl ? <link rel=\"canonical\" href={canonicalUrl} /> : null}\n      {metaDescription ? <meta name=\"description\" content={metaDescription} /> : null}\n      {metaKeywords || metaKeywords === '' ? <meta name=\"keywords\" content={metaKeywords} /> : null}\n      {metaDescription ? <meta name=\"og:description\" content={metaDescription} /> : null}\n      {ogImageSrc ? <meta name=\"og:image\" content={ogImageSrc} /> : null}\n      {canonicalUrl ? <meta name=\"og:url\" content={canonicalUrl} /> : null}\n      {facebookAppId ? <meta name=\"fb:app_id\" content={facebookAppId} /> : null}\n      {seoSchema ? (\n        <script\n          type=\"application/ld+json\"\n          dangerouslySetInnerHTML={{ __html: JSON.stringify(seoSchema) }}\n        />\n      ) : null}\n    </Head>\n  );\n};\n","export * from './custom-head';\n","import type { ReactNode } from 'react';\nimport Head from 'next/head';\nimport { useRef } from 'react';\nimport { BackToTop } from '@dx-ui/osc-back-to-top';\nimport { CustomHead } from '../custom-head';\nimport type * as Types from '@dx-ui/gql-types';\n\ntype TSocialMediaLinks = Array<Pick<Types.BrandSocialMediaLink, 'channel' | 'url'>>;\ntype TBrandsQuery =\n  | (Pick<Types.Brand, 'code' | 'name' | 'formalName' | 'url' | 'locationsUrl'> & {\n      socialMediaLinks: TSocialMediaLinks;\n      phone: Pick<Types.BrandPhone, 'number' | 'friendlyNumber'>;\n    })\n  | undefined;\n\nexport const Layout = ({\n  children,\n  top,\n  assetPath,\n  brandSvgPath,\n  bottom,\n  brandCode,\n  localeCode,\n  baseAppUrl,\n  fullBrandPath,\n  brandData,\n  seo,\n  articleTitle,\n  seoImage,\n  appVersion,\n  shouldIncludeBackToTopButton,\n  isBrandHomePage,\n}: {\n  children: ReactNode;\n  top?: ReactNode;\n  bottom?: ReactNode;\n  brandCode: string;\n  localeCode: string;\n  baseAppUrl: string;\n  fullBrandPath: string;\n  articleTitle: string;\n  seoImage: string;\n  seo: {\n    hideSearchEngine: boolean;\n    metaDescription: string | null;\n    metaKeywords: string | null;\n    pageHeading: string | null;\n    pageTitle: string | null;\n  };\n  brandData?: TBrandsQuery;\n  appVersion: string;\n  shouldIncludeBackToTopButton: boolean;\n  assetPath: string;\n  brandSvgPath: string;\n  isBrandHomePage: boolean;\n}) => {\n  const mainRef = useRef<HTMLElement | null>(null);\n\n  const favIconPath = `${assetPath}/img/brand/${brandCode}/favicon_${brandCode}`;\n\n  return (\n    <>\n      <CustomHead\n        pageTitle={seo?.pageTitle ?? ''}\n        metaDescription={seo?.metaDescription ?? undefined}\n        metaKeywords={seo?.metaKeywords ?? undefined}\n        brandLogoImageSrc={brandSvgPath}\n        hideSearchEngine={seo?.hideSearchEngine ?? undefined}\n        schemaName={brandData?.formalName ?? undefined}\n        schemaUrl={brandData?.url ?? undefined}\n        baseAppUrl={baseAppUrl}\n        localeCode={localeCode}\n        seoImage={seoImage}\n        seoArticleTitle={fullBrandPath.includes('/articles/') ? articleTitle : undefined}\n        brandCode={brandData?.code}\n        socialMediaLinks={brandData?.socialMediaLinks}\n        phoneNumber={brandData?.phone?.number}\n        fullBrandPath={fullBrandPath}\n        appVersion={appVersion}\n        isBrandHomePage={isBrandHomePage}\n      />\n      <Head>\n        <link\n          rel=\"icon\"\n          href={`${favIconPath}.svg`}\n          type=\"image/svg+xml\"\n          sizes=\"any\"\n          media=\"(prefers-color-scheme: light)\"\n        />\n        <link\n          rel=\"icon\"\n          href={`${favIconPath}-dark.svg`}\n          type=\"image/svg+xml\"\n          sizes=\"any\"\n          media=\"(prefers-color-scheme: dark)\"\n        />\n        <link\n          rel=\"icon\"\n          href={`${favIconPath}.png`}\n          type=\"image/png\"\n          media=\"(prefers-color-scheme: light)\"\n        />\n        <link\n          rel=\"icon\"\n          href={`${favIconPath}-dark.png`}\n          type=\"image/png\"\n          media=\"(prefers-color-scheme: dark)\"\n        />\n      </Head>\n\n      <div className=\"isolate m-0 w-full p-0\">\n        <div className=\"z-2\">{top}</div>\n        <div className=\"z-1 relative flex flex-col\">\n          <main ref={mainRef}>\n            <div>{children}</div>\n            {shouldIncludeBackToTopButton ? <BackToTop mainRef={mainRef} /> : null}\n          </main>\n          {bottom}\n        </div>\n      </div>\n    </>\n  );\n};\n","export * from './layout';\n","export * from './layout';\nexport * from './custom-head';\n","export * from './lib';\n","let prefersReducedMotion: boolean | null = null;\nexport const getPrefersReducedMotion = () => {\n  if (prefersReducedMotion === null) {\n    prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  }\n  return prefersReducedMotion;\n};\n","import type { FC } from 'react';\nimport { createRef, useCallback, useMemo, useRef, useState } from 'react';\nimport Image from 'next/image';\nimport { Icon } from '@dx-ui/osc-icon';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport { useRouter } from 'next/router';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\nimport { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\nimport cx from 'classnames';\n\nimport { getPrefersReducedMotion } from '../utils/get-prefers-reduced-motion';\nimport type { TBrandShowcase, TBrandShowcaseItem } from './brand-showcase.types';\nimport { useTranslation } from 'next-i18next';\nimport { useDebounceCallback } from 'usehooks-ts';\n\nexport const NavItemWidth = 224; // px\nexport const END_MARGIN = 5; // px\nexport const SLIDE_DURATION = 0.5; // seconds\n\n/**\n * List of the Hilton brands in a carousel like form. Each brand includes a logo, additional info about the currently selected brand, a link to the brand page,\n * and includes navigation controls to cycle through each brand.\n */\nexport const BrandShowcase: FC<TBrandShowcase> = ({ items, id, onItemClicked, logoUrl }) => {\n  const { t } = useTranslation('osc-marketing-brand-showcase');\n  const { locale = 'en' } = useRouter();\n  const rtl = isRtl(locale);\n\n  const [selectedItem, setSelectedItem] = useState<TBrandShowcaseItem | undefined>(items[0]);\n  const [atScrollEnd, setAtScrollEnd] = useState(false);\n\n  const scrollAnimationRequest = useRef<number | null>(null);\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const itemRefs = useMemo(() => items.map(() => createRef<HTMLButtonElement>()), [items]);\n\n  const onShowcaseItemClicked = (item: TBrandShowcaseItem | undefined) => {\n    const index = items?.findIndex((i) => i === item);\n    if (item !== selectedItem && scrollRef.current) {\n      const totalWidth = scrollRef.current.scrollWidth;\n      const { offsetWidth } = scrollRef.current;\n      //Getting width of the first brand item which is equal to all other brand items\n      const brandRect = scrollRef?.current?.children[0]?.getBoundingClientRect();\n      const width = brandRect?.width || 0;\n\n      let desiredScrollLeft = index * width * (rtl ? -1 : 1);\n      const maxScrollLeft = totalWidth - offsetWidth * (rtl ? -1 : 1);\n      if (desiredScrollLeft > maxScrollLeft) {\n        desiredScrollLeft = maxScrollLeft;\n      }\n      const onComplete = () => {\n        const previousItem = selectedItem;\n        setSelectedItem(item);\n        itemRefs[index]?.current?.focus();\n\n        previousItem !== item && onItemClicked && onItemClicked(index);\n      };\n      if (scrollRef.current.scrollLeft !== desiredScrollLeft) {\n        scrollToOffset(desiredScrollLeft, onComplete);\n      } else {\n        onComplete();\n      }\n    }\n  };\n\n  const scrollToOffset = useCallback(\n    (desiredScrollLeft: number, onComplete?: () => void) => {\n      if (scrollRef.current) {\n        if (scrollAnimationRequest.current) {\n          cancelAnimationFrame(scrollAnimationRequest.current);\n          scrollAnimationRequest.current = null;\n        }\n\n        const { scrollLeft } = scrollRef.current;\n\n        if (getPrefersReducedMotion()) {\n          scrollRef.current.scrollLeft = desiredScrollLeft;\n          onComplete && onComplete();\n        } else {\n          const scrollDistance = desiredScrollLeft - scrollLeft;\n          const duration = Math.max(350, Math.abs(scrollDistance) * 0.6);\n          let startTime: number;\n\n          const animateScroll = (timeStamp: number) => {\n            if (!startTime) {\n              startTime = timeStamp;\n            }\n\n            const progress = (timeStamp - startTime) / duration;\n            const easing =\n              progress < 0.5\n                ? SLIDE_DURATION * progress * progress\n                : (4 - 2 * progress) * progress - 1;\n\n            if (scrollRef.current) {\n              scrollRef.current.scrollLeft = scrollLeft + scrollDistance * easing;\n\n              if (progress < 1) {\n                scrollAnimationRequest.current = requestAnimationFrame(animateScroll);\n              } else {\n                scrollAnimationRequest.current = null;\n                onComplete && onComplete();\n              }\n            }\n          };\n\n          scrollAnimationRequest.current = requestAnimationFrame(animateScroll);\n        }\n      }\n    },\n    [scrollAnimationRequest, scrollRef]\n  );\n\n  const debouncedOnScroll = useDebounceCallback(() => {\n    if (scrollRef.current) {\n      const { scrollLeft, scrollWidth: totalWidth, offsetWidth } = scrollRef.current;\n      const marginForDetectingBrandPosition = 7;\n\n      const distanceFromEndOfScrollBar = totalWidth - offsetWidth - Math.abs(scrollLeft);\n      const endOfScrollBar =\n        distanceFromEndOfScrollBar < marginForDetectingBrandPosition &&\n        distanceFromEndOfScrollBar > -marginForDetectingBrandPosition;\n\n      //Getting width of the first brand item which is equal to all other brand items\n      const brandRect = scrollRef?.current?.children[0]?.getBoundingClientRect();\n      const width = brandRect?.width || 0;\n\n      const index = Math.min(items.length - 1, Math.ceil(Math.abs(scrollLeft) / Math.ceil(width)));\n\n      const currentIndex = items.findIndex((i) => i === selectedItem);\n\n      // Don't adjust if we aren't at a scroll stop point unless we are at the end of the bar and currentIndex is before index\n      if (!endOfScrollBar || (endOfScrollBar && currentIndex < index)) {\n        const previousItem = selectedItem;\n        setSelectedItem(items[index]);\n        itemRefs[index]?.current?.focus();\n\n        previousItem !== items[index] && onItemClicked && onItemClicked(index);\n      }\n      setAtScrollEnd(endOfScrollBar);\n    }\n  }, 300);\n\n  const onScrollWrapper = () => {\n    if (atScrollEnd && scrollRef.current) {\n      const { scrollLeft, offsetWidth, scrollWidth: totalWidth } = scrollRef.current;\n\n      const distanceFromEndOfScrollBar = totalWidth - offsetWidth - scrollLeft;\n      const endOfScrollBar = Math.abs(distanceFromEndOfScrollBar) < END_MARGIN;\n      if (!endOfScrollBar) {\n        setAtScrollEnd(false);\n      }\n    }\n    debouncedOnScroll();\n  };\n\n  const handleTabListWrapperKeyDown = (evt: React.KeyboardEvent) => {\n    const index = items.findIndex((i) => i.code === selectedItem?.code);\n    switch (evt.key) {\n      case 'ArrowLeft':\n        evt.preventDefault();\n        evt.stopPropagation();\n\n        if (index !== 0) {\n          onShowcaseItemClicked(items[index - 1]);\n        }\n\n        break;\n      case 'ArrowRight':\n        evt.preventDefault();\n        evt.stopPropagation();\n\n        if (index !== items.length - 1) {\n          onShowcaseItemClicked(items[index + 1]);\n        }\n\n        break;\n      default:\n    }\n  };\n\n  const slide = (direction: number) => {\n    const index = items.findIndex((i) => i.code === selectedItem?.code);\n    let targetIndex;\n    if (direction < 0) {\n      targetIndex = index === 0 ? 0 : index - 1;\n      // if we are at the end, make sure to update the endrow state\n      if (targetIndex < items.length - 1) {\n        setAtScrollEnd(false);\n      }\n    } else {\n      targetIndex = index === items.length - 1 ? items.length - 1 : index + 1;\n    }\n    onShowcaseItemClicked(items[targetIndex]);\n  };\n\n  const index = items.findIndex((i) => i.code === selectedItem?.code);\n\n  const NavItems = items.map((item, idx) => (\n    <div\n      className=\"relative w-full flex-none snap-start p-1 md:w-2/6 lg:w-1/5 xl:w-1/6\"\n      key={item.code}\n    >\n      <button\n        className=\"relative h-32 w-full px-4\"\n        tabIndex={selectedItem?.name === item.name ? undefined : -1}\n        onClick={() => onShowcaseItemClicked(item)}\n        role=\"tab\"\n        aria-expanded={selectedItem?.name === item.name}\n        aria-controls={`brands-showcase-panel-${id}`}\n        ref={itemRefs[idx]}\n        aria-label={item.name}\n        onKeyDown={handleTabListWrapperKeyDown}\n        data-testid=\"brands-showcase-brand-button\"\n        type=\"button\"\n      >\n        <div className=\"bg-bg-alt brand-hi-refresh:bg-bg-light relative size-full overflow-hidden\">\n          <Image\n            id={id}\n            style={{\n              objectFit: 'contain',\n              fill: item.imageDefaultColor,\n            }}\n            // fill-[imageDefaultColor] does not fill if the SVG images already\n            // have fill colors built-in like all of the 20 brand logos on the\n            // Hilton.com homepage (portfolio site)\n            fill\n            src={`${logoUrl}/${item.code}.svg`}\n            alt={item.name}\n          />\n        </div>\n      </button>\n      {selectedItem?.name === item.name ? (\n        <div className=\"absolute bottom-0 flex h-2 w-full justify-center\">\n          <div className=\"bg-bg top-0 me-3 size-6 origin-center rotate-45\" />\n        </div>\n      ) : null}\n    </div>\n  ));\n  return (\n    <div\n      className=\"bg-bg-alt brand-hi-refresh:bg-bg-light relative w-full\"\n      data-testid=\"brandShowcaseWrapper\"\n      id={id}\n    >\n      <div className=\"brand-wa:py-16 brand-wa:xl:py-20 container flex flex-col items-start py-8 ps-4 xl:py-12\">\n        <div className=\"px-0 sm:ps-6\">\n          <HeadingLevel\n            headingLevelFallback={2}\n            className=\"text-primary heading-2xl sm:heading-3xl lg:heading-4xl pb-4 pt-1 leading-tight\"\n          >\n            {t('waysToStay')}\n          </HeadingLevel>\n        </div>\n        <div className=\"relative flex w-full\">\n          {index > 0 ? (\n            <button\n              className=\"btn btn-primary-text btn-lg absolute inset-y-0 start-0 z-10 m-1\"\n              onClick={() => slide(-1)}\n              data-testid=\"previous\"\n              type=\"button\"\n            >\n              <span className=\"sr-only\">{t('returnsToThePreviousBrand')}</span>\n              <Icon name={rtl ? 'arrowhead-right' : 'arrowhead-left'} size=\"2xl\" />\n            </button>\n          ) : null}\n          <div className=\"relative w-full overflow-hidden px-12\">\n            <div className=\"absolute start-0 top-0 inline-block h-full w-5 ltr:bg-gradient-to-l rtl:bg-gradient-to-r\" />\n            <div\n              className={cx(\n                'absolute end-4 top-0 inline-block h-full ltr:bg-gradient-to-r rtl:bg-gradient-to-l',\n                {\n                  'w-0': atScrollEnd,\n                  'w-8 md:w-32': !atScrollEnd,\n                }\n              )}\n            />\n            <div\n              className=\"snap mx-auto flex w-56 snap-x snap-mandatory overflow-x-auto overflow-y-hidden px-0 py-1 md:mx-0 md:w-full lg:overflow-x-scroll\"\n              ref={scrollRef}\n              onScroll={onScrollWrapper}\n              role=\"tablist\"\n              data-testid=\"onScrollWrapper\"\n            >\n              {NavItems}\n            </div>\n          </div>\n          {index < items.length - 1 ? (\n            <button\n              className=\"btn btn-primary-text btn-lg absolute inset-y-0 end-0 m-1\"\n              onClick={() => slide(1)}\n              data-testid=\"next\"\n              type=\"button\"\n            >\n              <span className=\"sr-only\">{t('advancesToTheNextBrand')}</span>\n              <Icon name={rtl ? 'arrowhead-left' : 'arrowhead-right'} size=\"2xl\" />\n            </button>\n          ) : null}\n        </div>\n        <div className=\"flex w-full flex-col sm:ps-6\" id={`brands-showcase-panel-${id}`}>\n          {items.map((item /* we render all tabs for SEO purposes */) => (\n            <div\n              className={`${selectedItem?.name === item.name ? 'flex' : 'hidden'} w-full flex-col`}\n              key={item.name}\n              data-testid={\n                selectedItem?.name === item.name\n                  ? 'brand-showcase-panel-active'\n                  : 'brand-showcase-panel'\n              }\n            >\n              <div className=\"bg-bg image-corner-radius mb-8 w-full px-8 pt-8\">\n                <h3 className=\"text-2xl font-bold leading-tight sm:text-3xl lg:text-4xl\">\n                  {item.name}\n                </h3>\n                <div className=\"py-5 sm:text-lg md:pb-8 lg:text-xl\">\n                  <CustomMarkdown>{item.shortDescription}</CustomMarkdown>\n                </div>\n              </div>\n              <div className=\"flex w-full flex-col items-center\">\n                <a className=\"btn btn-primary btn-xl items-center\" href={item.url || `/en/brands/`}>\n                  {item.label || t('visitBrand', { brand: item.name })}\n                </a>\n              </div>\n            </div>\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n};\n","export * from './brand-showcase';\nexport * from './brand-showcase.types';\n","import { useRef } from 'react';\nimport cx from 'classnames';\nimport type { Link } from '@dx-ui/osc-link';\nimport type { DialogBaseProps } from '@dx-ui/osc-dialog-v2';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { ResponsiveImage, getCurrentAspectRatioAndUrl } from '@dx-ui/osc-responsive-image';\nimport type { AspectRatio, TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\n\nexport type DialogWithContentBase = {\n  ariaLabel?: string;\n  id?: string;\n  /**\n   *Appears at the top of the dialog\n   */\n  title?: string;\n  /**\n   * Appears under the title, headline of content\n   */\n  headline?: string;\n  /**\n   * Can include images, text, markdown\n   */\n  content?: string | JSX.Element;\n  /**\n   * CTA link/button, opens in another tab\n   */\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  onClose?: () => void;\n};\n\ntype ImageUrlsType = {\n  tabletImageUrl: string;\n  mobileImageUrl: string;\n  desktopImageUrl: string;\n};\n\nexport type DialogWithContentType = DialogWithContentBase &\n  Omit<DialogBaseProps, 'content'> & {\n    isOpen: boolean;\n    imageUrl?: string;\n    captionData?: TResponsiveImage['captionData'];\n    imageUrls?: ImageUrlsType;\n    imageAltText?: string;\n    containerAspectRatio?: AspectRatio;\n    imageAspectRatio?: AspectRatio;\n    cmsTranslationClasses?: string;\n    captionMetricsOnClick?: () => void;\n    brandLinkMetricsOnClick?: () => void;\n  };\n\nexport type AspectRatioGroup = {\n  aspectRatioMobile: AspectRatio;\n  aspectRatioTablet: AspectRatio;\n  aspectRatioDesktop: AspectRatio;\n};\n\n/**\n * DialogWithContent renders many different styles of modal using the content passed into it.\n *\n * It suports rendering images, links, component children and markdown.\n */\nexport const DialogWithContent = (props: DialogWithContentType) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n\n  const {\n    imageAspectRatio = '3:2',\n    imageUrl,\n    imageUrls,\n    imageAltText,\n    captionData,\n    isOpen,\n    id = 'dialog',\n    ariaLabel,\n    title,\n    headline,\n    content,\n    link,\n    onClose,\n    cmsTranslationClasses,\n    captionMetricsOnClick,\n    brandLinkMetricsOnClick,\n    ...dialogProps\n  } = props;\n\n  let body: JSX.Element | null = null;\n  if (content) {\n    if (typeof content === 'string') {\n      body = <BrandTextBody {...props}>{content}</BrandTextBody>;\n    } else {\n      body = <div className=\"lg:prose-xl prose my-2\">{content}</div>;\n    }\n  }\n\n  const { imageUrl: multipleImageUrl, aspectRatio: multipleImageAspectRatio } = imageUrls\n    ? getCurrentAspectRatioAndUrl({\n        width: rect?.width || 700,\n        imageUrlMobile: imageUrls.mobileImageUrl,\n        imageUrlTablet: imageUrls.tabletImageUrl,\n        imageUrlDesktop: imageUrls.desktopImageUrl,\n        aspectRatioMobile: imageAspectRatio,\n        aspectRatioTablet: imageAspectRatio,\n        aspectRatioDesktop: imageAspectRatio,\n      })\n    : { imageUrl: null, aspectRatio: null };\n\n  const dialogPropsWithLabel = title ? { title } : { ariaLabel: ariaLabel || '' };\n\n  return (\n    <Dialog\n      data-testid=\"activeDialogWithContentBox\"\n      isOpen={isOpen}\n      onDismiss={onClose}\n      size=\"3xl\"\n      {...dialogProps}\n      {...dialogPropsWithLabel}\n    >\n      <div className={cx('flex h-full flex-col sm:h-auto', cmsTranslationClasses)} ref={ref}>\n        {/* This is needed in case we only need 1 img src that can be used for tablet, desktop and mobile screens */}\n        {imageUrl ? (\n          <div className=\"flex items-center justify-items-center overflow-y-hidden\">\n            <ResponsiveImage\n              id={id}\n              aspectRatio={imageAspectRatio}\n              imageUrl={imageUrl}\n              altText={imageAltText || ''}\n              width={rect?.width || 700}\n              captionData={captionData}\n              onClick={captionMetricsOnClick}\n            />\n          </div>\n        ) : null}\n        {/* This is needed in case we have separate Urls for tablet, desktop and mobile screens */}\n        {/* Also, \"&& !imageUrl\" added just to prevent rendering 2 images if both props somehow get passed */}\n        {imageUrls && !imageUrl ? (\n          <div className=\"flex items-center justify-items-center overflow-y-hidden\">\n            <ResponsiveImage\n              id={id}\n              aspectRatio={multipleImageAspectRatio || '3:2'}\n              imageUrl={multipleImageUrl || ''}\n              altText={imageAltText || ''}\n              width={rect?.width || 700}\n              captionData={captionData}\n              onClick={captionMetricsOnClick}\n            />\n          </div>\n        ) : null}\n\n        <div className=\"box-border px-4 pb-2 pt-8 sm:px-8 md:px-16\">\n          {headline ? (\n            <BrandTextHeader {...props} className=\"brand-wa:md:heading-2xl brand-wa:heading-xl\">\n              {headline}\n            </BrandTextHeader>\n          ) : null}\n          {body}\n\n          {link?.label && link?.url ? (\n            <div className=\"inline-block w-full pb-4 pt-8 text-center\">\n              <BrandLink\n                label={link.label}\n                isNewWindow={link.isNewWindow}\n                showNewWindowIcon={link.isNewWindow}\n                url={link.url}\n                onClick={link?.onClick}\n                cidParams={link?.cidParams}\n                data-conductrics-goal={link.experimentationConfiguration?.goal}\n                data-conductrics-value={link.experimentationConfiguration?.value}\n                metricsOnClick={brandLinkMetricsOnClick}\n              />\n            </div>\n          ) : null}\n        </div>\n      </div>\n    </Dialog>\n  );\n};\n\nexport default DialogWithContent;\n","export * from './dialog-with-content';\n","import type { Link } from '@dx-ui/osc-link';\nimport type { AspectRatio, TResponsiveImage } from '@dx-ui/osc-responsive-image';\n\nexport type TFullWidthImage = {\n  id?: string;\n  /**\n   * Aspect Ratio of the Image at 1280px +\n   */\n  desktopImageUrl: string;\n  /**\n   * URL of the Image at 640px - 1280px\n   */\n  tabletImageUrl: string;\n  /**\n   * URL of the Image at 0px - 640px\n   */\n  mobileImageUrl: string;\n  captionData?: TResponsiveImage['captionData'];\n  /**\n   * Alternative text of the Image (a11y)\n   */\n  imageAltText: string;\n  /**\n   * Text of the button that opens a Dialog box\n   */\n  imageOverlayButtonText: string;\n  /**\n   * Title at the top of the Dialog box\n   */\n  title: string;\n  /**\n   * Description(paragraph) at the bottom of the Dialog box\n   */\n  description: JSX.Element | string;\n  /**\n   * Link at the bottom of the Dialog box\n   */\n  link: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  /**\n   * Function that gets executed when the Dialog box is being open\n   */\n  overlayButtonClicked?: () => void;\n};\n\nexport const FullWidthImageAspectRatio: AspectRatio = '384:113';\nexport const FullWidthImageDialogAspectRatio: AspectRatio = '16:9';\n","import type { ImageFunctionType } from '@dx-ui/config-metrics';\nimport { ImageClickID, ImageType, ANALYTICS_NO_VALUE } from '@dx-ui/config-metrics';\nimport type { FullWidthMediaMetrics } from '../types/full-width-image-analytics';\n\nconst FULL_WIDTH__METRIC_POSITION = 1;\nconst FULL_WIDTH_METRIC_IMAGE_COUNT = 1;\n\ntype GenerateFullWidthMediaMetricsParams = {\n  headline: string;\n  itemTitle?: string;\n  imageFunction: ImageFunctionType;\n};\n\nexport const generateFullWidthMediaMetricsParams = ({\n  headline,\n  itemTitle,\n  imageFunction,\n}: GenerateFullWidthMediaMetricsParams): FullWidthMediaMetrics => {\n  return {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        headline,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        position: FULL_WIDTH__METRIC_POSITION,\n        count: FULL_WIDTH_METRIC_IMAGE_COUNT,\n        type: ImageType.Full,\n        function: imageFunction,\n      },\n    },\n  };\n};\n","import { useState, useRef } from 'react';\nimport cx from 'classnames';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { DialogWithContent } from '../dialog-with-content';\nimport { ResponsiveImage, getCurrentAspectRatioAndUrl } from '@dx-ui/osc-responsive-image';\nimport type { TLayout } from '../common.types';\nimport type { TFullWidthImage } from './full-width-image.types';\nimport { FullWidthImageDialogAspectRatio } from './full-width-image.types';\nimport { Icon } from '@dx-ui/osc-icon';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, ImageFunction, trackEvent } from '@dx-ui/config-metrics';\nimport { generateFullWidthMediaMetricsParams } from './libs/utils/full-width-image-analytics';\n\nexport type FullWidthImageProps = TLayout & TFullWidthImage;\n\n/**\n * FullWidthImage renders an image at the full width of the content, includes text overlay that opens a modal.\n *\n * Multiple imageUrls are provided, and displayed conditionally at different breakpoints. Clicking the FullWidthImage will open a DialogWithContent\n */\nexport const FullWidthImage: React.FC<FullWidthImageProps> = ({\n  id,\n  desktopImageUrl,\n  tabletImageUrl,\n  mobileImageUrl,\n  imageAltText,\n  captionData,\n  imageOverlayButtonText,\n  title,\n  description,\n  link,\n  overlayButtonClicked,\n  ...props\n}) => {\n  const [showInfoContainer, setShowInfoContainer] = useState(false);\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const [imgLoaded, setImgLoaded] = useState(false);\n\n  const handleImageOverlayButtonClick = () => {\n    setShowInfoContainer(true);\n    overlayButtonClicked && overlayButtonClicked();\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateFullWidthMediaMetricsParams({\n        headline: title,\n        itemTitle: imageOverlayButtonText,\n        imageFunction: ImageFunction.Modal,\n      })\n    );\n  };\n  const handleCloseButtonClick = () => {\n    setShowInfoContainer(false);\n  };\n\n  if (!desktopImageUrl || !tabletImageUrl || !mobileImageUrl) {\n    return null;\n  }\n\n  const { imageUrl, aspectRatio } = getCurrentAspectRatioAndUrl({\n    width: rect?.width || 0,\n    imageUrlMobile: mobileImageUrl,\n    imageUrlTablet: desktopImageUrl,\n    imageUrlDesktop: desktopImageUrl,\n    aspectRatioMobile: '3:2',\n    aspectRatioTablet: '18:5',\n    aspectRatioDesktop: '18:5',\n  });\n\n  return (\n    <div\n      id={id}\n      ref={ref}\n      data-testid=\"fullWidthImage\"\n      className=\"brand-wa:py-16 brand-wa:xl:py-20 container py-8 xl:py-12\"\n    >\n      <div\n        data-testid=\"fullwidth-image-wrap\"\n        className=\"image-corner-radius relative flex flex-col justify-center overflow-hidden\"\n      >\n        {imageOverlayButtonText ? (\n          <div className={cx('absolute flex size-full items-end', { 'z-2': imgLoaded })}>\n            <div className=\"from-bg-inverse size-full bg-gradient-to-t to-transparent\">\n              <button\n                className=\"brand-es:font-headline brand-es:font-normal brand-gu:font-headline brand-gu:font-normal brand-ou:font-headline brand-ou:font-normal text-text-overlay brand-ey:text-text-inverse brand-ou:text-text-inverse absolute bottom-2 right-4 flex h-14 cursor-pointer items-center border-0 text-right text-xl font-bold leading-5 md:bottom-8 lg:right-8 lg:text-4xl\"\n                type=\"button\"\n                onClick={handleImageOverlayButtonClick}\n                data-testid=\"overlayButton\"\n              >\n                <span>{imageOverlayButtonText}&nbsp;</span>\n                <Icon\n                  className=\"-mx-4 size-12 xl:size-16 rtl:-scale-x-100\"\n                  name=\"arrow-small-right\"\n                />\n              </button>\n            </div>\n          </div>\n        ) : null}\n\n        <ResponsiveImage\n          id={`${id}-img`}\n          aspectRatio={aspectRatio}\n          imageUrl={imageUrl}\n          altText={imageAltText || ''}\n          width={rect?.width ?? 0}\n          onImgLoaded={() => setImgLoaded(true)}\n          captionData={captionData}\n          onClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetricsParams({\n                headline: title,\n                imageFunction: ImageFunction.Link,\n                itemTitle: captionData?.caption,\n              })\n            )\n          }\n        />\n      </div>\n\n      {imageOverlayButtonText ? (\n        <DialogWithContent\n          data-testid=\"fullWidthImageModalDialog\"\n          id=\"fullWidthImageModalOverlay\"\n          isOpen={showInfoContainer}\n          containerAspectRatio={FullWidthImageDialogAspectRatio}\n          imageAspectRatio={FullWidthImageDialogAspectRatio}\n          imageUrls={{ desktopImageUrl, mobileImageUrl, tabletImageUrl }}\n          captionData={captionData}\n          imageAltText={`${imageAltText} modal`}\n          title={title}\n          headline={title}\n          content={description}\n          link={link}\n          onClose={handleCloseButtonClick}\n          captionMetricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetricsParams({\n                headline: title,\n                imageFunction: ImageFunction.Link,\n                itemTitle: captionData?.caption,\n              })\n            )\n          }\n          brandLinkMetricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetricsParams({\n                headline: title,\n                imageFunction: ImageFunction.Link,\n                itemTitle: link?.label,\n              })\n            )\n          }\n          {...props}\n        />\n      ) : null}\n    </div>\n  );\n};\n","export * from './full-width-image';\nexport * from './full-width-image.types';\n","import { ANALYTICS_NO_VALUE, ImageClickID, ImageFunction, ImageType } from '@dx-ui/config-metrics';\nimport type { HalfAndHalfMetrics } from '../types/half-and-half-analytics';\n\nexport const HALF_AND_HALF_IMAGE_COUNT = 1;\n\ntype GenerateHalfAndHalfMetricsParams = {\n  headline?: string;\n  itemTitle?: string;\n};\n\nexport const generateHalfAndHalfMetrics = ({\n  headline,\n  itemTitle,\n}: GenerateHalfAndHalfMetricsParams): HalfAndHalfMetrics => {\n  const halfAndHalfMetrics = {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        headline: headline || ANALYTICS_NO_VALUE,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        position: HALF_AND_HALF_IMAGE_COUNT,\n        count: HALF_AND_HALF_IMAGE_COUNT,\n        type: ImageType.Half,\n        function: ImageFunction.Link,\n      },\n    },\n  };\n\n  return halfAndHalfMetrics;\n};\n","import { useRef } from 'react';\nimport { useMediaQuery, useResizeObserver } from 'usehooks-ts';\nimport type { HalfAndHalfProps } from './half-and-half';\nimport cx from 'classnames';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { ParallaxBanner, ParallaxBannerLayer } from 'react-scroll-parallax';\nimport { YouTubeVideo } from '@dx-ui/osc-youtube-video';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport {\n  Video,\n  VideoCaptions,\n  VideoControls,\n  VideoTranscript,\n  useVideoPlayerClasses,\n  useVideoPlayer,\n  VideoPlayerMarkup,\n} from '@dx-ui/osc-video-player';\nimport { CarouselSingle, generateCpmCarouselMetrics } from '@dx-ui/osc-carousel';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { Pagination } from '@dx-ui/osc-pagination';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport type { AgentStatus } from '@dx-ui/framework-conductrics';\nimport { sendReward, useConductricsSelection, Status } from '@dx-ui/framework-conductrics';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport { generateHalfAndHalfMetrics } from './libs/utils/half-and-half-analytics';\n\nfunction sendHalfAndHalfCtaReward(isMobile: boolean) {\n  if (isMobile) {\n    sendReward('g-BzOBPhK7V7');\n  }\n}\nfunction useHalfAndHalfMobileLayoutTest(status: AgentStatus | undefined) {\n  const { selection, isLoaded } = useConductricsSelection('a-sYzuWw8FXGMx', status);\n  return {\n    variantA: isLoaded && selection?.choice === 'A',\n    variantB: isLoaded && selection?.choice === 'B',\n  };\n}\n\nexport type THalfAndHalfContentProps = HalfAndHalfProps & {\n  isPositionOdd?: boolean;\n  activeIndex?: number;\n  count?: number;\n  isFullCarousel?: boolean;\n  isFullScreen?: boolean;\n  mediaRatio?: '50-50' | '60-40' | '70-30';\n};\n\nfunction CarouselControls() {\n  const { cycleId, active, total, onNextClick, onPreviousClick } = useCycle();\n  return (\n    <div\n      data-e2e=\"arrows\"\n      className=\"pointer-events-none inset-0 justify-end whitespace-nowrap text-lg xl:flex-row\"\n      id={cycleId}\n    >\n      <Pagination\n        controls={cycleId}\n        label=\"Carousel\"\n        hideLabel\n        current={active}\n        total={total}\n        onNextClick={onNextClick}\n        onPreviousClick={onPreviousClick}\n        loop\n      />\n    </div>\n  );\n}\n\nconst HalfAndHalfContent = ({\n  imageUrl,\n  captionData,\n  headline,\n  description,\n  copy,\n  imageAltText,\n  id,\n  link,\n  hasParallax,\n  isPositionOdd,\n  media,\n  hasImageCarousel,\n  carouselImages,\n  speed = -10,\n  cmsDocumentControl,\n  brandComponentTheme,\n  index,\n  activeIndex,\n  count,\n  isFullCarousel,\n  isFullScreen,\n  mediaRatio = '50-50',\n}: THalfAndHalfContentProps) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const wrapperElement = useRef<React.ElementRef<'div'>>(null);\n  const isVideo = Boolean(media?.video?.url || media?.multimedia?.videoUrl);\n  const isYouTubeShort = media?.video?.source === 'youtube-short';\n  const isPortrait = media?.multimedia?.orientation === 'portrait';\n  const isLandscape = media?.multimedia?.orientation === 'landscape';\n  const isVerticalVideo = isVideo && (isYouTubeShort || isPortrait);\n  const videoUrl = media?.multimedia?.videoUrl || '';\n  const isCinemagraph = !!media?.multimedia?.altText;\n  const hasAudio = !isCinemagraph && !media?.multimedia?.isMuted;\n  const playerProps = useVideoPlayer({\n    ...media?.multimedia,\n    hasAudio,\n    videoUrl,\n    wrapperElement,\n  });\n  const playerClassNames = useVideoPlayerClasses({ isLandscape });\n  const hasActiveTranscript = Boolean(playerProps.videoTranscriptProps?.activeTranscript);\n  const isLarge = useMediaQuery('(min-width: 1024px)');\n  const videoSize = useResizeObserver({ ref: playerProps.videoProps.videoElement });\n  const height = videoSize?.height ?? 0;\n  const transcriptStyle = isLarge && !isVerticalVideo ? { height: `${height}px` } : undefined;\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isTabletAndMobile = useMediaQuery(`(max-width:1023px)`);\n  const isMobile = useMediaQuery('(max-width: 640px)');\n  const mobileLayout = useHalfAndHalfMobileLayoutTest(isMobile ? Status.OK : Status.PENDING);\n  const Transcript = hasActiveTranscript ? (\n    <VideoTranscript\n      {...playerProps.videoTranscriptProps}\n      style={transcriptStyle}\n      brandComponentTheme={brandComponentTheme}\n      className={cx('overflow-hidden p-4 lg:mb-6', {\n        '[&>ol]:lg:max-h-full [&>ol]:lg:pb-16': !isVerticalVideo,\n        '[&>ol]:lg:max-h-64': isVerticalVideo,\n      })}\n    />\n  ) : null;\n  const LongDescription = copy ? (\n    <BrandTextBody\n      // eslint-disable-next-line tailwindcss/no-custom-classname -- tracked in NHCBP-5929\n      className={cx(\n        'brand-up:mb-12 text-text brand-ou:text-primary brand-up:text-center !text-xl',\n        {\n          'text-text-inverse': isDark,\n          'brand-ht:text-text-inverse': isLight,\n        }\n      )}\n      brandComponentTheme={brandComponentTheme}\n    >\n      {copy}\n    </BrandTextBody>\n  ) : null;\n  //\n  const CtaLink =\n    link?.label && link?.url ? (\n      <div\n        className={cx('pt-6', {\n          'mb-4': isTabletAndMobile && mobileLayout.variantA,\n        })}\n      >\n        <BrandLink\n          onClick={() => {\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateHalfAndHalfMetrics({\n                headline,\n                itemTitle: link.label,\n              })\n            );\n\n            sendHalfAndHalfCtaReward(isMobile);\n          }}\n          label={link.label}\n          isNewWindow={link.isNewWindow}\n          showNewWindowIcon={link.isNewWindow}\n          url={link.url}\n          brandComponentTheme={brandComponentTheme}\n          data-conductrics-goal={link.experimentationConfiguration?.goal}\n          data-conductrics-value={link.experimentationConfiguration?.value}\n        />\n      </div>\n    ) : null;\n  const Headline = headline ? (\n    <BrandTextHeader\n      className={cx('tracking-tight sm:!text-3xl lg:mb-4', {\n        '!text-text-inverse': isDark,\n        'brand-ht:text-text-inverse': isLight,\n        'mb-4': isTabletAndMobile && mobileLayout.variantB,\n      })}\n    >\n      {headline}\n    </BrandTextHeader>\n  ) : null;\n  const ShortDescription = description ? (\n    <BrandTextBody\n      // eslint-disable-next-line tailwindcss/no-custom-classname -- tracked in NHCBP-5929\n      className={cx('py-4 font-sans !text-xl lg:pt-0', {\n        'text-text-inverse': isDark,\n        'brand-ht:text-text-inverse': isLight,\n        'brand-ou:text-primary': !isDark,\n      })}\n      brandComponentTheme={brandComponentTheme}\n    >\n      {description}\n    </BrandTextBody>\n  ) : null;\n\n  const ImgVideoContent = (\n    <div\n      data-testid=\"halfNHalfMedia\"\n      className={cx({\n        'lg:w-4/12 max-w-sm': isVerticalVideo,\n        'lg:w-1/2': !isVerticalVideo && mediaRatio === '50-50',\n        'lg:w-3/5': !isVerticalVideo && mediaRatio === '60-40',\n        'lg:w-2/3': !isVerticalVideo && mediaRatio === '70-30',\n      })}\n    >\n      {imageUrl && !isVideo && !hasImageCarousel ? (\n        <div className=\"relative overflow-hidden py-2 lg:py-0\" ref={ref}>\n          <ParallaxBanner className=\"aspect-[3/2]\" disabled={!hasParallax || isVideo}>\n            <ParallaxBannerLayer\n              speed={speed}\n              expanded={false}\n              scale={[1.2, 1.2]}\n              disabled={!hasParallax || isVideo}\n            >\n              <ResponsiveImage\n                aspectRatio=\"3:2\"\n                id={id}\n                imageUrl={imageUrl}\n                altText={imageAltText ?? ''}\n                width={rect?.width ?? 0}\n                captionData={captionData}\n                className=\"image-corner-radius\"\n                onClick={() =>\n                  trackEvent(\n                    ANALYTICS_GLOBAL_CLICK_EVENT,\n                    generateHalfAndHalfMetrics({\n                      headline,\n                      itemTitle: captionData?.caption,\n                    })\n                  )\n                }\n              />\n            </ParallaxBannerLayer>\n          </ParallaxBanner>\n        </div>\n      ) : null}\n\n      {isVideo ? (\n        <div className=\"relative py-2 lg:py-0\">\n          {media?.video?.url && media.video.title ? (\n            <YouTubeVideo\n              {...media.video}\n              wrapperClassName=\"overflow-hidden\"\n              id={media.video.title.trim()}\n              isVertical={isVerticalVideo}\n              isAutoPlay={false}\n            />\n          ) : media?.multimedia?.videoUrl ? (\n            <>\n              <div\n                className={cx(playerClassNames.wrapperClassNames, 'mb-8', {\n                  'sm:mb-0': !isVerticalVideo,\n                  'lg:mb-0': isVerticalVideo,\n                })}\n              >\n                <Video\n                  {...playerProps.videoProps}\n                  captionData={media?.multimedia?.captionData}\n                  isAutoPlay={media?.multimedia?.isAutoPlay}\n                  posterImageUrl={media?.multimedia?.posterImageUrl}\n                  videoId={media?.multimedia?.videoId}\n                  videoUrl={videoUrl}\n                  role={isCinemagraph ? 'img' : undefined}\n                  aria-label={isCinemagraph ? media?.multimedia?.altText : undefined}\n                />\n                <VideoCaptions\n                  {...playerProps.videoCaptionProps}\n                  brandComponentTheme={brandComponentTheme}\n                  className={playerClassNames.captionClassNames}\n                />\n                <VideoControls\n                  videoVariant={isCinemagraph ? 'cinemagraph' : undefined}\n                  {...playerProps.videoControlsProps}\n                  brandComponentTheme={brandComponentTheme}\n                  className={playerClassNames.controlsClassNames['default']}\n                />\n              </div>\n              <div className=\"lg:hidden\">{Transcript}</div>\n            </>\n          ) : null}\n        </div>\n      ) : null}\n\n      {hasImageCarousel && carouselImages && !isVideo ? (\n        <CarouselSingle\n          images={carouselImages}\n          showAlternateControls={false}\n          className=\"image-corner-radius\"\n          metrics={generateCpmCarouselMetrics(headline)}\n        />\n      ) : null}\n    </div>\n  );\n\n  const DefaultLayout = (\n    <>\n      <div\n        data-testid=\"halfNHalfContent\"\n        className={cx({\n          'lg:w-1/2': mediaRatio === '50-50',\n          'lg:w-2/5': mediaRatio === '60-40',\n          'lg:w-1/3': mediaRatio === '70-30',\n          'lg:ps-10': isFullScreen && isPositionOdd,\n        })}\n      >\n        <div className=\"hidden lg:block\">{Transcript}</div>\n        {Headline}\n        {ShortDescription}\n        <div className=\"hidden lg:block\">\n          {LongDescription}\n          {CtaLink}\n        </div>\n      </div>\n      {ImgVideoContent}\n      <div className=\"lg:hidden\">\n        {LongDescription}\n        {CtaLink}\n      </div>\n    </>\n  );\n  const MobileLayoutVariantAB =\n    isTabletAndMobile && (mobileLayout.variantA || mobileLayout.variantB) ? (\n      <>\n        {Headline}\n        {mobileLayout.variantB ? ImgVideoContent : null}\n        {ShortDescription}\n        {CtaLink}\n        {mobileLayout.variantA ? ImgVideoContent : null}\n      </>\n    ) : null;\n\n  return (\n    <div\n      className={cx('brand-wa:py-16 brand-wa:xl:py-20 relative py-8 xl:py-12', {\n        container: !isFullScreen,\n        'px-4 md:px-8 lg:px-0': isFullScreen,\n        hidden: isFullCarousel && index !== activeIndex,\n      })}\n      ref={wrapperElement}\n      data-testid={\n        isFullCarousel && activeIndex !== undefined\n          ? `halfNHalf-slide-${activeIndex + 1}-of-${count}`\n          : undefined\n      }\n    >\n      {media?.multimedia?.markupSchemas ? (\n        <VideoPlayerMarkup markupSchemas={media.multimedia.markupSchemas} />\n      ) : null}\n      <div\n        className={cx('relative w-full justify-center gap-12 lg:flex', {\n          'flex-row-reverse': !isPositionOdd,\n          'items-center': !hasActiveTranscript,\n          'items-start': hasActiveTranscript,\n          'max-w-sm mx-auto lg:max-w-full': isVerticalVideo,\n        })}\n        data-testid=\"halfNHalfContentWrapper\"\n      >\n        {MobileLayoutVariantAB || DefaultLayout}\n      </div>\n      {isFullCarousel && (count ?? 0) > 1 && (\n        <div\n          className={cx('relative -start-7 mt-6 flex lg:absolute lg:bottom-12 lg:mt-0', {\n            'lg:start-3': isPositionOdd,\n            'lg:end-10 lg:start-auto': !isPositionOdd,\n          })}\n        >\n          <CarouselControls />\n        </div>\n      )}\n      {cmsDocumentControl}\n    </div>\n  );\n};\n\nexport { HalfAndHalfContent };\nexport default HalfAndHalfContent;\n","import type { ReactNode } from 'react';\nimport cx from 'classnames';\nimport { HalfAndHalfContent } from './half-and-half-content';\nimport type { Link } from '@dx-ui/osc-link';\nimport type { Media } from '../common.types';\nimport type { TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\n\nexport type MarkdownLink = {\n  adaDescription?: string;\n  isNewWindow?: boolean;\n  markdown: string;\n  url: string;\n};\n\nexport type HalfAndHalfProps = {\n  /**\n   * sets position of image left or right\n   */\n  index: number;\n  /**\n   * should the half and half be flipped?\n   */\n  isReverse?: boolean;\n  /**\n   * the url to the image.\n   */\n  imageUrl?: string;\n  captionData?: TResponsiveImage['captionData'];\n  /**\n   * whether the background color should be altered and if they should be on `even` or `odd` components.\n   */\n  showBackgroundOn?: 'even' | 'odd';\n  /**\n   * renders the headline as an heading.\n   */\n  headline?: string;\n  /**\n   * renders the description as a paragraph.\n   */\n  description?: string;\n  /**\n   * Long description as a paragraph.\n   */\n  copy?: string;\n  /**\n   * the description of the image being rendered.\n   */\n  imageAltText?: string;\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  id?: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /**\n   * Adds an image carousel to a single Half and Half content block\n   */\n  hasImageCarousel?: boolean;\n  /**\n   * Loads the carousel images\n   */\n  carouselImages?: { alt: string; url: string; captionData?: CaptionProps }[];\n  /**\n   * renders the component with a parallax animation.\n   */\n  hasParallax?: boolean;\n  /**\n   * the speed of Parallax\n   */\n  speed?: number;\n  /**\n   * Props for custom video player or YouTube player.\n   */\n  media?: Media;\n  /**\n   * CMS document editor button\n   */\n  cmsDocumentControl?: ReactNode;\n  /**\n   * Translation CSS classes to add to each item\n   */\n  cmsTranslationClasses?: string;\n  /**\n   * Full Screen / Full Bleed mode\n   */\n  isFullScreen?: boolean;\n  /**\n   * Ratio of Copy / Media section\n   */\n  mediaRatio?: '50-50' | '60-40' | '70-30';\n};\n\n/**\n * HalfAndHalf renders a component with an image on one half and attached content of headline, text and a CTA on the other half.\n *\n * The `index` prop is used by HalfAndHalf components to alternate their layout so their images appear on alternating sides of the page, this can be done on single or multiple components.\n */\nexport const HalfAndHalf = ({\n  index,\n  isReverse = false,\n  brandComponentTheme,\n  hasParallax = false,\n  id,\n  cmsTranslationClasses,\n  media,\n  hasImageCarousel,\n  carouselImages,\n  isFullScreen,\n  mediaRatio,\n  ...rest\n}: HalfAndHalfProps) => {\n  const currElemIndxType = !Number.isNaN(index) && (index % 2 === 0 ? 'even' : 'odd');\n  const isPositionOdd = isReverse ? currElemIndxType === 'even' : currElemIndxType === 'odd';\n  const isLight = brandComponentTheme === 'light';\n  const isDark = brandComponentTheme === 'dark';\n\n  const containerBgClass = {\n    'bg-bg-light': isLight,\n    'bg-bg-dark': isDark,\n    'bg-transparent': !isLight && !isDark,\n    'brand-po:bg-bg-alt': !isPositionOdd && !isLight && !isDark,\n  };\n\n  return (\n    <div\n      id={id}\n      className={cx(\n        'w-full',\n        isPositionOdd ? `half-and-half-odd-${index}` : `half-and-half-even-${index}`,\n        containerBgClass,\n        cmsTranslationClasses\n      )}\n      data-testid=\"halfnhalf-sections-wrapper\"\n    >\n      <HalfAndHalfContent\n        brandComponentTheme={brandComponentTheme}\n        index={index}\n        isPositionOdd={isPositionOdd}\n        hasParallax={hasParallax}\n        media={media}\n        hasImageCarousel={hasImageCarousel}\n        carouselImages={carouselImages}\n        isFullScreen={isFullScreen}\n        mediaRatio={mediaRatio}\n        {...rest}\n      />\n    </div>\n  );\n};\n","import type { ReactNode } from 'react';\nimport cx from 'classnames';\nimport { HalfAndHalfContent } from './half-and-half-content';\nimport type { HalfAndHalfProps } from './half-and-half';\nimport { Cycle, CycleContext } from '@dx-ui/osc-cycle';\n\nexport type HalfAndHalfCarouselItem = Pick<\n  HalfAndHalfProps,\n  | 'copy'\n  | 'link'\n  | 'headline'\n  | 'description'\n  | 'imageUrl'\n  | 'captionData'\n  | 'imageAltText'\n  | 'media'\n>;\n\nexport type HalfAndHalfCarouselProps = {\n  /**\n   * sets position of image left or right\n   */\n  index?: number;\n  /**\n   * should the half and half be flipped?\n   */\n  isReverse?: boolean;\n  /**\n   * whether the background color should be altered and if they should be on `even` or `odd` components.\n   */\n  showBackgroundOn?: 'even' | 'odd';\n  /**\n   * Unique ID\n   */\n  id?: string;\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /**\n   * renders the component with a parallax animation.\n   */\n  hasParallax?: boolean;\n  /**\n   * the speed of Parallax\n   */\n  speed?: number;\n  /**\n   * CMS document editor button\n   */\n  cmsDocumentControl?: ReactNode;\n  /**\n   * Translation CSS classes to add to each item\n   */\n  cmsTranslationClasses?: string;\n  /**\n   * Carousel Items\n   */\n  carouselItems: HalfAndHalfCarouselItem[];\n  /**\n   * Full Screen / Full Bleed mode\n   */\n  isFullScreen?: boolean;\n  /**\n   * Ratio of Copy / Media section\n   */\n  mediaRatio?: '50-50' | '60-40' | '70-30';\n};\n\nexport const HalfAndHalfCarousel = ({\n  index = 0,\n  isReverse = false,\n  brandComponentTheme,\n  id,\n  cmsTranslationClasses,\n  carouselItems,\n  hasParallax,\n  isFullScreen,\n  mediaRatio,\n}: HalfAndHalfCarouselProps) => {\n  const currElemIndxType = !Number.isNaN(index) && (index % 2 === 0 ? 'even' : 'odd');\n  const isPositionOdd = isReverse ? currElemIndxType === 'even' : currElemIndxType === 'odd';\n  const isLight = brandComponentTheme === 'light';\n  const isDark = brandComponentTheme === 'dark';\n\n  const containerBgClass = {\n    'bg-bg-light': isLight,\n    'bg-bg-dark': isDark,\n    'bg-transparent': !isLight && !isDark,\n    'brand-po:bg-bg-alt': !isPositionOdd && !isLight && !isDark,\n  };\n\n  const count = carouselItems.length;\n  if (!count) {\n    return null;\n  }\n\n  return (\n    <div\n      id={id}\n      className={cx('w-full', containerBgClass, cmsTranslationClasses)}\n      data-testid=\"halfnhalf-carousel-sections-wrapper\"\n    >\n      <Cycle total={count} current={0}>\n        <CycleContext.Consumer>\n          {({ active, cycleId }) => (\n            <div id={cycleId}>\n              <HalfAndHalfContent\n                isFullCarousel={true}\n                index={active}\n                activeIndex={active}\n                isPositionOdd={isPositionOdd}\n                hasParallax={hasParallax}\n                imageUrl={carouselItems[active]?.imageUrl}\n                captionData={carouselItems[active]?.captionData}\n                headline={carouselItems[active]?.headline}\n                description={carouselItems[active]?.description}\n                copy={carouselItems[active]?.copy}\n                imageAltText={carouselItems[active]?.imageAltText}\n                link={carouselItems[active]?.link}\n                media={carouselItems[active]?.media}\n                count={count}\n                isFullScreen={isFullScreen}\n                mediaRatio={mediaRatio}\n                brandComponentTheme={brandComponentTheme}\n              />\n            </div>\n          )}\n        </CycleContext.Consumer>\n      </Cycle>\n    </div>\n  );\n};\n","export * from './half-and-half';\nexport * from './half-and-half-carousel';\n","import type * as React from 'react';\nimport { useCycle } from '@dx-ui/osc-cycle';\n\nconst ImageHeadlinerContent = ({ children }: React.PropsWithChildren) => {\n  const { cycleId } = useCycle();\n  return (\n    <div id={cycleId} aria-live=\"polite\" className=\"w-full\">\n      {children}\n    </div>\n  );\n};\n\nexport { ImageHeadlinerContent };\nexport default ImageHeadlinerContent;\n","import type { ImageClickIDType, ImageFunctionType } from '@dx-ui/config-metrics';\nimport { ANALYTICS_NO_VALUE, ImageType, ImageFunction, ImageClickID } from '@dx-ui/config-metrics';\nimport type { ImageHeadlinerMetrics } from '../types/image-headliner-analytics';\n\ntype GenerateImageHeadlinerMetricsParams = {\n  headline?: string;\n  itemTitle?: string;\n  position: number;\n  count: number;\n  imageFunction?: ImageFunctionType;\n  clickID: ImageClickIDType;\n};\n\nexport const generateImageHeadlinerMetrics = ({\n  clickID = ImageClickID.Img,\n  headline = ANALYTICS_NO_VALUE,\n  itemTitle = ANALYTICS_NO_VALUE,\n  imageFunction,\n  position,\n  count,\n}: GenerateImageHeadlinerMetricsParams): ImageHeadlinerMetrics => {\n  const ImageHeadlinerMetrics: ImageHeadlinerMetrics = {\n    click: {\n      clickID,\n    },\n    osc: {\n      image: {\n        headline,\n        itemTitle,\n        position,\n        count,\n        type: ImageType.Headliner,\n      },\n    },\n  };\n\n  if (imageFunction) {\n    ImageHeadlinerMetrics.osc.image.function = ImageFunction.Link;\n  }\n\n  return ImageHeadlinerMetrics;\n};\n","import { Pagination } from '@dx-ui/osc-pagination';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport cx from 'classnames';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ANALYTICS_NO_VALUE,\n  ImageClickID,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateImageHeadlinerMetrics } from './utils/image-headliner-analytics';\nimport type { TImageHeadlinerItemData } from './image-headliner';\n\nexport type TImageHeadlinerControls = {\n  label?: string;\n  hideLabel?: boolean;\n  hasLoop?: boolean;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  itemData: TImageHeadlinerItemData[];\n};\n\nconst ImageHeadlinerControls = ({\n  label = 'Page',\n  hideLabel = true,\n  hasLoop = true,\n  brandComponentTheme,\n  itemData,\n}: TImageHeadlinerControls) => {\n  const { hasSlides, cycleId, active, total, onNextClick, onPreviousClick } = useCycle();\n\n  const currentItem = itemData[active];\n  const currentHeadline = currentItem?.headline;\n  const currentCtaText = currentItem?.ctaText;\n  const currentPosition = currentItem?.position || 1;\n  const totalItems = itemData.length;\n  const trackImageHeadlinerScrollClick = () => {\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateImageHeadlinerMetrics({\n        clickID: ImageClickID.Scroll,\n        headline: currentHeadline,\n        itemTitle: currentCtaText || ANALYTICS_NO_VALUE,\n        position: currentPosition,\n        count: totalItems,\n      })\n    );\n  };\n\n  const onNextClickWithAnalytics = () => {\n    trackImageHeadlinerScrollClick();\n    onNextClick();\n  };\n  const onPreviousClickWithAnalytics = () => {\n    trackImageHeadlinerScrollClick();\n    onPreviousClick();\n  };\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  return hasSlides ? (\n    <div\n      data-e2e=\"arrows\"\n      className={cx(\n        'pointer-events-none inset-0 mr-4 justify-end whitespace-nowrap text-xl font-bold lg:text-2xl',\n        {\n          'text-text-inverse': isDark,\n          'brand-ht:text-text-inverse': isLight,\n          'image-headliner-controls-default': !isDark && !isLight,\n        }\n      )}\n    >\n      <Pagination\n        controls={cycleId}\n        label={label}\n        hideLabel={hideLabel}\n        current={active}\n        total={total}\n        onNextClick={onNextClickWithAnalytics}\n        onPreviousClick={onPreviousClickWithAnalytics}\n        loop={hasLoop}\n        // TODO: bring this prop back once OSC-1278 is complete\n        // // isHeadliner={true}\n      />\n    </div>\n  ) : null;\n};\n\nexport { ImageHeadlinerControls };\nexport default ImageHeadlinerControls;\n","import type { ReactNode } from 'react';\nimport type { Link } from '@dx-ui/osc-link';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport cx from 'classnames';\nimport Image from 'next/image';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ImageClickID,\n  trackEvent,\n  ImageFunction,\n} from '@dx-ui/config-metrics';\nimport { generateImageHeadlinerMetrics } from './utils/image-headliner-analytics';\n\nexport type TImageHeadlinerItem = {\n  headline?: string;\n  id?: string;\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration } & {\n    onLinkClick?: (e?: React.SyntheticEvent<HTMLAnchorElement>) => void;\n  };\n  imageAltText?: string;\n  imageUrl?: string;\n  isPortfolio?: boolean;\n  index?: number;\n  /** Determines brand color theme for component */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** CMS document editor button **/\n  cmsDocumentControl?: ReactNode;\n  /* Translation CSS classes to add to each item */\n  cmsTranslationClasses?: string;\n  /* Total number of slides in the component */\n  totalSlides?: number;\n};\n\n/**\n * A headline item that can contain an image, headline text, and link to more information.\n */\nexport const ImageHeadlinerItem = (props: TImageHeadlinerItem) => {\n  const { active, hasSlides } = useCycle();\n  const {\n    headline,\n    id,\n    link,\n    imageUrl,\n    imageAltText,\n    index = 0,\n    brandComponentTheme,\n    cmsDocumentControl,\n    cmsTranslationClasses,\n    totalSlides = 1,\n    ...rest\n  } = props;\n  const describedByID = `${id}-description`;\n\n  const imageCss = 'inline-block max-h-12 md:max-h-16 w-16 md:w-24';\n\n  const target = link?.isNewWindow ? '_blank' : '_self';\n  const rel = link?.isNewWindow ? 'noopener' : null;\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      data-testid=\"imageHeadlinerItem\"\n      {...rest}\n      className={cx(\n        'mx-4 my-2 flex justify-center md:m-0 md:mx-auto md:w-4/5 md:px-4 lg:w-full lg:px-6',\n        {\n          hidden: hasSlides && index !== active,\n        },\n        cmsTranslationClasses\n      )}\n    >\n      <span data-testid={describedByID} className=\"flex items-center text-left md:justify-center\">\n        {imageUrl && imageAltText && (\n          <div data-testid=\"imageHeadlinerImage\">\n            <div className=\"relative mr-4 flex h-8 w-16 overflow-hidden md:mr-6 md:h-16 md:w-24\">\n              <Image\n                id={id}\n                className={cx(imageCss)}\n                alt={imageAltText}\n                src={imageUrl}\n                style={{\n                  objectFit: 'cover',\n                }}\n                fill\n              />\n            </div>\n          </div>\n        )}\n        <span\n          className={cx('image-headliner-item-text lg:image-headliner-font-size-lg', {\n            'text-text-inverse': isDark,\n            'image-headliner-item-text-light': isLight,\n          })}\n          aria-label={headline}\n        >\n          {headline}\n          &nbsp;\n          {link?.url && link.label && target && (\n            <a\n              className={cx(\n                'image-headliner-item-link inline-block overflow-visible underline sm:max-w-full md:inline md:max-w-none',\n                {\n                  'text-text-inverse': isDark,\n                  'image-headliner-item-link-text-light': isLight,\n                  'image-headliner-item-link-text-default': !isDark && !isLight,\n                }\n              )}\n              href={link.url}\n              aria-describedby={link.adaDescription ? describedByID : undefined}\n              target={target}\n              data-testid=\"imageHeaderlinerItemLink\"\n              rel={rel || undefined}\n              data-conductrics-goal={link.experimentationConfiguration?.goal}\n              data-conductrics-value={link.experimentationConfiguration?.value}\n              onClick={(e) => {\n                trackEvent(\n                  ANALYTICS_GLOBAL_CLICK_EVENT,\n                  generateImageHeadlinerMetrics({\n                    clickID: ImageClickID.Img,\n                    headline,\n                    itemTitle: link.label,\n                    position: index + 1,\n                    count: totalSlides,\n                    imageFunction: ImageFunction.Link,\n                  })\n                );\n                link?.onLinkClick?.(e);\n              }}\n            >\n              {link.label}\n            </a>\n          )}\n        </span>\n      </span>\n      {cmsDocumentControl}\n    </div>\n  );\n};\n\nexport default ImageHeadlinerItem;\n","import * as React from 'react';\nimport { ImageHeadlinerContent } from './image-headliner-content';\nimport { ImageHeadlinerControls } from './image-headliner-controls';\nimport cx from 'classnames';\nimport type { Pagination } from '@dx-ui/osc-pagination';\nimport { Cycle } from '@dx-ui/osc-cycle';\nimport { ImageHeadlinerItem } from './image-headliner-item';\nimport { ANALYTICS_NO_VALUE } from '@dx-ui/config-metrics';\n\nexport type TImageHeadlinerItemData = {\n  headline: string;\n  ctaText: string;\n  position: number;\n};\n\nexport type TImageHeadliner = Pick<Pagination, 'label' | 'loop' | 'hideLabel' | 'current'> &\n  React.HTMLAttributes<HTMLDivElement>;\n\nexport type ImageHeadlinerType = {\n  label?: string;\n  className?: string;\n  /** Determines brand color theme for component */\n  brandComponentTheme?: CmsBrandComponentTheme;\n} & TImageHeadliner;\n\n/**\n * Used to grab a user's attention with a bold background color and text. Alerts users to promotions, new hotels for humans or supernatural beings, important legal updates.\n * Contains an image/logo, headline text and a link to more information.\n */\nexport const ImageHeadliner: React.FC<ImageHeadlinerType> = ({\n  current,\n  className = '',\n  hideLabel,\n  loop,\n  label,\n  children,\n  brandComponentTheme,\n  id = 'image-headliner-cycle-id',\n  ...rest\n}) => {\n  const validSlides = React.Children.map(\n    children,\n    (child) => React.isValidElement(child) && child.type === ImageHeadlinerItem && child\n  )?.filter(Boolean) as unknown as (typeof ImageHeadlinerItem)[];\n\n  const slides = React.Children.map(\n    validSlides,\n    (child, index) =>\n      React.isValidElement(child) &&\n      React.cloneElement(\n        child as React.ReactElement<React.ComponentProps<typeof ImageHeadlinerItem>>,\n        {\n          index,\n          totalSlides: validSlides.length,\n        }\n      )\n  );\n  const totalSlides = React.Children.count(slides);\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const itemData =\n    React.Children.map(children, (child, index) => {\n      if (React.isValidElement(child) && child.type === ImageHeadlinerItem) {\n        // Extract props for analytics\n        const { headline, link } = child.props || {\n          headline: ANALYTICS_NO_VALUE,\n          link: {\n            label: ANALYTICS_NO_VALUE,\n          },\n        };\n        return {\n          headline,\n          ctaText: link?.label,\n          position: index + 1,\n        } as TImageHeadlinerItemData;\n      }\n      return null;\n    })?.filter(Boolean) || [];\n\n  return (\n    <Cycle id={id} current={current} total={totalSlides}>\n      <div\n        className={cx(className, 'relative flex w-full flex-col items-center py-2 sm:flex-row', {\n          'bg-bg-dark': isDark,\n          'bg-bg-light': isLight,\n          'image-headliner-bg brand-hi-refresh:bg-accent': !isLight && !isDark,\n        })}\n        data-testid=\"imageHeadliner\"\n      >\n        <ImageHeadlinerContent {...rest}>{slides}</ImageHeadlinerContent>\n        <ImageHeadlinerControls\n          brandComponentTheme={brandComponentTheme}\n          label={label}\n          hideLabel={hideLabel}\n          hasLoop={loop}\n          itemData={itemData}\n        />\n      </div>\n    </Cycle>\n  );\n};\n\nexport default ImageHeadliner;\n","export * from './image-headliner';\nexport * from './image-headliner-item';\n","import { useRef, useEffect } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport type { SecurityDialogWithContentType } from './security-dialog.types';\nimport { useRect } from '@dx-ui/utilities-use-rect';\n\n/**\n * Security Dialog, or Gating Modal, is currently used for Corporate Advantage and travel agent pages.\n * This is a modal/dialog without a close button.\n *\n */\nexport const SecurityDialog = (props: SecurityDialogWithContentType) => {\n  const [t] = useTranslation('osc-marketing-dx-dialog-with-content');\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const modalCloseButtonRef = useRef<HTMLButtonElement>(null);\n\n  const {\n    imageAspectRatio = '3:2',\n    imageUrl,\n    imageUrls,\n    imageAltText,\n    isOpen,\n    id,\n    headline,\n    content,\n    link,\n    onClickLink,\n    title,\n    ...dialogProps\n  } = props;\n\n  const ariaLabelLink = [link?.adaDescription || '', link?.isNewWindow ? t('newWindow') : '']\n    .filter(Boolean)\n    .join(' - ');\n\n  useEffect(() => {\n    if (isOpen) {\n      modalCloseButtonRef.current && modalCloseButtonRef.current.focus();\n    }\n  }, [isOpen, id]);\n\n  const isHeadlineShown = headline && headline !== props?.title;\n\n  let body: JSX.Element | null = null;\n  if (content) {\n    if (typeof content === 'string') {\n      body = <BrandTextBody {...props}>{content}</BrandTextBody>;\n    } else {\n      body = <div className=\"prose lg:prose-xl my-2\">{content}</div>;\n    }\n  }\n\n  return (\n    <Dialog isOpen={isOpen} title={title} size=\"sm\" {...dialogProps}>\n      <div\n        data-testid=\"activeDialogWithContentBox\"\n        className=\"flex h-full flex-col sm:h-auto\"\n        ref={ref}\n      >\n        {/* This is needed in case we only need 1 img src that can be used for tablet, desktop and mobile screens */}\n        {imageUrl ? (\n          <div className=\"flex items-center justify-items-center overflow-y-hidden\">\n            <ResponsiveImage\n              id={id}\n              aspectRatio={imageAspectRatio}\n              imageUrl={imageUrl}\n              altText={imageAltText ?? ''}\n              width={rect?.width ?? 0}\n            />\n          </div>\n        ) : null}\n        {/* This is needed in case we have separate Urls for tablet, desktop and mobile screens */}\n        {Array.isArray(imageUrls) && imageUrls.length > 0\n          ? imageUrls.map((imgUrl) => {\n              return (\n                <div\n                  className={cx(\n                    'flex items-center justify-items-center overflow-y-hidden',\n                    imgUrl?.className\n                  )}\n                  key={imgUrl.id}\n                  data-testid={`dialog-with-content-img-wrapper-${imgUrl?.screen}`}\n                >\n                  <ResponsiveImage\n                    id={id}\n                    aspectRatio={imageAspectRatio}\n                    imageUrl={imgUrl?.url}\n                    altText={imageAltText ?? ''}\n                    width={rect?.width ?? 0}\n                  />\n                </div>\n              );\n            })\n          : null}\n\n        <div className=\"box-border sm:px-8\" aria-live=\"polite\">\n          {isHeadlineShown ? <BrandTextHeader {...props}>{headline}</BrandTextHeader> : null}\n\n          {body}\n\n          {link?.label && link?.url ? (\n            <div className=\"inline-block w-full pb-4 pt-8 text-center\">\n              <a\n                className=\"btn btn-primary btn-xl\"\n                href={link?.url}\n                target={link?.isNewWindow ? '_blank' : '_self'}\n                onClick={onClickLink}\n                aria-label={ariaLabelLink}\n                data-testid=\"dialogWithContentCTA\"\n                rel=\"noreferrer\"\n              >\n                {link.label}\n              </a>\n            </div>\n          ) : null}\n        </div>\n      </div>\n    </Dialog>\n  );\n};\n","export * from './security-dialog';\n","export * from './brand-showcase';\nexport * from './common.types';\nexport * from './dialog-with-content';\nexport * from './full-width-image';\nexport * from './half-and-half';\nexport * from './image-headliner';\nexport * from './security-dialog';\nexport * from './utils';\n","export * from './lib';\n","import type * as React from 'react';\nimport { ControlNext, ControlBack } from '@dx-ui/osc-controls';\nimport { useTranslation } from 'next-i18next';\n\nexport type Pagination = {\n  /**\n   * `id` of the element pagination controls for usage with aria-controls\n   */\n  controls?: string;\n  /**\n   * Current active page (zero based)\n   */\n  current?: number;\n  /**\n   * The text displayed in front of the page numbers and used for a11y\n   */\n  label?: string;\n  /**\n   * Whether to visually hide the label\n   */\n  hideLabel?: boolean;\n  /**\n   * Controls whether or not to disable buttons at either end\n   */\n  loop?: boolean;\n  /**\n   * Total number of pages\n   */\n  total?: number;\n  /**\n   * When the page is selected from the dropdown\n   */\n  onChange?: (val: number) => void;\n  onPreviousClick?: React.DOMAttributes<HTMLButtonElement>['onClick'];\n  onNextClick?: React.DOMAttributes<HTMLButtonElement>['onClick'];\n  /** Pagination item id */\n  groupId?: string;\n};\n\n/**\n * Use when you need a control to cycle through \"pages\" or any paginated data.\n *\n * Pass the `current` page _(zero-based)_ and `total` pages, if you want to allow the select element to jump to a specific page, include the `onChange` callback. You can include listeners for `onPreviousClick` and `onNextClick` to change pages one by one.\n */\nexport const Pagination: React.FC<React.PropsWithChildren<Pagination>> = ({\n  controls,\n  loop,\n  onChange,\n  onPreviousClick,\n  onNextClick,\n  hideLabel,\n  current = 0,\n  total = 0,\n  label,\n  groupId,\n}) => {\n  const { t } = useTranslation('osc-pagination');\n  // eslint-disable-next-line prefer-spread\n  const pageNumbers = Array.apply(null, Array(total));\n  const prevDisabled = loop ? false : current === 0;\n  const nextDisabled = loop ? false : current === total - 1;\n\n  const paginationLabel = label ?? t('defaultLabel');\n\n  return (\n    <div className=\"pointer-events-auto flex items-center justify-center space-x-4\">\n      <div className=\"sr-only\" aria-live=\"polite\">{`${paginationLabel} ${t('count', {\n        current: current + 1,\n        total,\n      })}`}</div>\n      <ControlBack\n        id={groupId ? `pagination-left-${groupId}` : 'pagination-left'}\n        size=\"lg\"\n        aria-controls={controls}\n        onClick={onPreviousClick}\n        disabled={prevDisabled}\n        label={`${t('previousLabel', { label: paginationLabel })}, ${t('count', {\n          current: current - 1 < 0 ? total : current,\n          total,\n        })}`}\n      />\n      <div className=\"flex items-center justify-center\">\n        {onChange ? (\n          <>\n            {!hideLabel && <span className=\"pr-2\">{paginationLabel}</span>}\n            <label>\n              <span className=\"sr-only\">{t('prompt', { label: paginationLabel })}</span>\n              <select\n                aria-controls={controls}\n                className=\"form-select\"\n                value={current}\n                onBlur={(e) => onChange(parseInt(e.currentTarget.value, 10))}\n                onChange={(e) => onChange(parseInt(e.currentTarget.value, 10))}\n              >\n                {pageNumbers.map((_, index) => (\n                  // eslint-disable-next-line react/no-array-index-key\n                  <option key={index} value={index}>\n                    {index + 1}\n                  </option>\n                ))}\n              </select>\n            </label>\n            <span className=\"pl-2\">{t('count', { current: undefined, total })}</span>\n          </>\n        ) : (\n          <span className=\"text-center\">\n            {!hideLabel && `${paginationLabel} `}\n            <span className=\"tabular-nums\">{t('count', { current: current + 1, total })}</span>\n          </span>\n        )}\n      </div>\n      <ControlNext\n        id={groupId ? `pagination-right-${groupId}` : 'pagination-right'}\n        size=\"lg\"\n        aria-controls={controls}\n        onClick={onNextClick}\n        disabled={nextDisabled}\n        label={`${t('nextLabel', { label: paginationLabel })}, ${t('count', {\n          current: current + 1 >= total ? 1 : current + 2,\n          total,\n        })}`}\n      />\n    </div>\n  );\n};\n\nexport default Pagination;\n","export * from './lib/pagination';\n","import * as React from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\ntype TriggerRef = React.MutableRefObject<HTMLButtonElement | HTMLInputElement | null>;\ntype PopoverRef = React.MutableRefObject<HTMLSpanElement | null>;\n\ntype PopupContext = {\n  triggerRef: TriggerRef;\n  triggerClickedRef: React.MutableRefObject<boolean>;\n  popoverRef: PopoverRef;\n  popupId?: string;\n  isOpen?: boolean;\n  setOpen: Dispatch<SetStateAction<boolean>>;\n  closePopup: () => void;\n};\n\nconst PopupContext = React.createContext<PopupContext>({} as PopupContext);\n\nexport const usePopup = () => {\n  const context = React.useContext(PopupContext);\n  if (context === undefined) {\n    throw new Error('usePopup must be used within a Popup Component parent');\n  }\n  return context;\n};\n\nexport { PopupContext };\nexport default PopupContext;\n","import type * as React from 'react';\nimport type { Side } from './popup.content';\n\nexport function isRightClick(nativeEvent: MouseEvent) {\n  return nativeEvent.which === 3 || nativeEvent.button === 2;\n}\n\nexport function focus<T extends HTMLElement = HTMLElement>(element: T | undefined | null) {\n  element && element.focus();\n}\n\nexport function getXStyles(\n  targetRect: DOMRect,\n  popoverRect: DOMRect,\n  side?: Side\n): React.CSSProperties {\n  const { directionRight, directionLeft, directionX, directionY } = getCollisions(\n    targetRect,\n    popoverRect\n  );\n  const xPosition = targetRect.right - popoverRect.width;\n  const styles: React.CSSProperties = {};\n  const popupOnLeft = side === 'left';\n  if (directionX && !directionY) {\n    // we collide with left, right but not top, bottom, start at left, full-width\n    styles.maxWidth = window.innerWidth;\n    styles.overflowX = 'auto';\n    styles.left = 0;\n  } else if (directionX && directionY) {\n    // we collide top, bottom, right, left - display in middle\n    styles.maxWidth = window.innerWidth;\n    styles.overflowX = 'auto';\n    styles.left = '50%';\n    styles.transform = 'translate(-50%, -50%)';\n  } else if (directionY && (directionLeft || directionRight)) {\n    // we collide top, bottom, (left or right) - display in middle, no maxWidth\n    styles.overflowX = 'auto';\n    styles.left = '50%';\n    styles.transform = 'translate(-50%, -50%)';\n  } else if (popupOnLeft && !popoverRect.width) {\n    // avoids popover flashing on right on initial trigger\n    styles.visibility = 'hidden';\n  } else {\n    // we collide with right or popupOnLeft - place on left, otherwise place on right\n    styles.left = directionRight || popupOnLeft ? `${xPosition}px` : `${targetRect.left}px`;\n  }\n  return styles;\n}\n\nexport function getYStyles(\n  targetRect: DOMRect,\n  popoverRect: DOMRect,\n  side?: Side\n): React.CSSProperties {\n  const { directionY, directionUp } = getCollisions(targetRect, popoverRect);\n  const yPosition = targetRect.bottom;\n  const styles: React.CSSProperties = {};\n  const popupOnTop = side === 'top';\n  if (directionY) {\n    // we collide with top and bottom, display in the middle\n    styles.maxHeight = window.innerHeight;\n    styles.overflowY = 'auto';\n    styles.top = '50%';\n    styles.transform = 'translate(-50%, -50%)';\n  } else if (popupOnTop && !popoverRect.height) {\n    styles.visibility = 'hidden';\n  } else {\n    // we collide with bottom - place on top, otherwise bottom\n    styles.top =\n      directionUp || popupOnTop\n        ? `${targetRect.top - (popoverRect.height + 8)}px`\n        : `${yPosition}px`;\n  }\n  return styles;\n}\n\nexport function getCollisions(\n  targetRect: DOMRect,\n  popoverRect: DOMRect,\n  offsetLeft = 0,\n  offsetBottom = 0\n) {\n  const collisions = {\n    top: targetRect.top - popoverRect.height < 0,\n    right: window.innerWidth < targetRect.left + popoverRect.width - offsetLeft,\n    bottom: window.innerHeight < targetRect.bottom + popoverRect.height - offsetBottom,\n    left: targetRect.left + targetRect.width - popoverRect.width < 0,\n  };\n  const directions = {\n    directionRight: collisions.right && !collisions.left,\n    directionLeft: collisions.left && !collisions.right,\n    directionUp: collisions.bottom && !collisions.top,\n    directionDown: collisions.top && !collisions.bottom,\n    directionX: collisions.left && collisions.right,\n    directionY: collisions.top && collisions.bottom,\n  };\n  return directions;\n}\n\nexport function getPopupStyles(\n  targetRect: DOMRect | null,\n  popoverRect: DOMRect | null,\n  side?: Side\n): React.CSSProperties {\n  const styles: React.CSSProperties =\n    targetRect && popoverRect\n      ? {\n          ...getXStyles(targetRect, popoverRect, side),\n          ...getYStyles(targetRect, popoverRect, side),\n        }\n      : { visibility: 'hidden' };\n  return styles;\n}\n","import * as React from 'react';\nimport { PopupContext } from './popup.context';\nimport { focus } from './popup.utils';\n\n/**\n * Presents more content in an expanded state after the user interacts with a trigger. Use `<Popup>` as a container around `<PopupButton>` and `<PopupContent>`.\n * Placement rules for the `<PopupContent>` are determined by its collision with the current viewport. The following rules determine the its position.\n *\n * | Collision                | Position |\n * | ------------------------ | ------ |\n * | bottom, top, right, left | middle, max-width |\n * | bottom, top, right       | middle, no-max-width |\n * | bottom, top, left        | middle, no-max-width |\n * | bottom, top              | middle, no-max-width |\n * | bottom                   | target-top |\n * | bottom, left             | target-top |\n * | bottom, right            | target-top |\n * | top                      | target-bottom |\n * | top, right, left         | middle, max-width |\n * | top, right               | target-bottom |\n * | top, left                | target-bottom |\n * | right, left              | target-bottom, max-width |\n * | right                    | target-bottom |\n * | left                     | target-bottom |\n */\nexport const Popup: React.FC<{ isOpen?: boolean; children: React.ReactNode }> = ({\n  isOpen: isInitiallyOpen = false,\n  children,\n}) => {\n  const id = React.useId();\n  const [isOpen, setOpen] = React.useState<boolean>(isInitiallyOpen);\n  const triggerRef = React.useRef<HTMLButtonElement | HTMLInputElement>(null);\n  const triggerClickedRef = React.useRef(false);\n  const popoverRef = React.useRef<HTMLSpanElement>(null);\n  const closePopup = () => {\n    setOpen(false);\n    focus(triggerRef.current);\n  };\n\n  return (\n    <PopupContext.Provider\n      value={{\n        triggerRef,\n        triggerClickedRef,\n        popoverRef,\n        popupId: id,\n        isOpen,\n        setOpen,\n        closePopup,\n      }}\n    >\n      {children}\n    </PopupContext.Provider>\n  );\n};\n\nexport default Popup;\n","import * as React from 'react';\nimport { usePopup } from './popup.context';\nimport { isRightClick } from './popup.utils';\nimport { useForkedRef } from '@dx-ui/utilities-use-forked-ref';\n\ntype PopupButtonProps = {\n  onArrowDownWhenOpen?: () => void;\n} & React.HTMLAttributes<HTMLButtonElement>;\n\nconst PopupButton = React.forwardRef<HTMLButtonElement, PopupButtonProps>(\n  ({ children, onArrowDownWhenOpen, ...rest }, forwardedRef) => {\n    const { triggerRef, triggerClickedRef, popupId, isOpen, setOpen } = usePopup();\n    const ref = useForkedRef(\n      forwardedRef,\n      triggerRef as React.MutableRefObject<HTMLButtonElement | null>\n    );\n\n    const onKeyDown = (e: React.KeyboardEvent) => {\n      switch (e.key) {\n        case 'Enter':\n        case ' ':\n          if (!isOpen) {\n            triggerClickedRef.current = true;\n          }\n          setOpen(!isOpen);\n          break;\n        case 'ArrowDown':\n          e.preventDefault();\n          setOpen(true);\n          if (isOpen) {\n            onArrowDownWhenOpen?.();\n          }\n          break;\n        case 'ArrowUp':\n        case 'Escape':\n          //we only want to do something when overlay is open otherwise we will trigger parent event handlers\n          if (isOpen) {\n            //Make sure we dont bubble up to other elements with listeners on escape\n            e.stopPropagation();\n            setOpen(!isOpen);\n          }\n          break;\n        default:\n          break;\n      }\n    };\n\n    const onMouseDown = (e: React.MouseEvent) => {\n      if (!isOpen) {\n        triggerClickedRef.current = true;\n      }\n      if (!isRightClick(e.nativeEvent)) {\n        setOpen(!isOpen);\n      }\n    };\n\n    return (\n      <button\n        ref={ref}\n        type=\"button\"\n        onKeyDown={onKeyDown}\n        onMouseDown={onMouseDown}\n        aria-expanded={isOpen ? 'true' : 'false'}\n        aria-controls={popupId}\n        {...rest}\n      >\n        {children}\n      </button>\n    );\n  }\n);\n\nPopupButton.displayName = 'PopupButton';\n\nexport { PopupButton };\nexport default PopupButton;\n","import { useRect } from '@dx-ui/utilities-use-rect';\nimport cx from 'classnames';\nimport * as React from 'react';\nimport { usePopup } from './popup.context';\nimport { getPopupStyles } from './popup.utils';\nimport { useForkedRef } from '@dx-ui/utilities-use-forked-ref';\n\nexport type Side = 'top' | 'right' | 'bottom' | 'left';\n\nexport type PopupContentPropsBase = {\n  popupStyles?: React.CSSProperties;\n  side?: Side;\n};\n\n/** Used in conjunction with [Popup](?path=/docs/library-components-popup--docs), PopupContent is a component that wraps the content of a popup.\n */\nconst PopupContent = React.forwardRef<\n  HTMLSpanElement,\n  React.HTMLAttributes<HTMLDivElement> & PopupContentPropsBase\n>(({ children, className, style, popupStyles = {}, side = 'bottom', ...rest }, forwardedRef) => {\n  const { triggerRef, triggerClickedRef, popoverRef, popupId, isOpen, setOpen, closePopup } =\n    usePopup();\n  const ref = useForkedRef(forwardedRef, popoverRef);\n\n  React.useEffect(() => {\n    const popoverRefCurrent = popoverRef?.current;\n    const onMouseDown = (e: MouseEvent) => {\n      if (triggerClickedRef.current) {\n        triggerClickedRef.current = false;\n      } else if (isOpen && popoverRefCurrent && !popoverRefCurrent.contains(e.target as Element)) {\n        setOpen(false);\n      }\n    };\n    const onKeyDown = (e: KeyboardEvent) => {\n      if (isOpen) {\n        //parent elements such as <Dialog /> may have event listeners for keydown. Make sure we dont bubble the event back up\n        e.stopPropagation();\n        switch (e.key) {\n          case 'Enter':\n          case ' ':\n            if (triggerClickedRef.current) {\n              triggerClickedRef.current = false;\n            } else if (\n              isOpen &&\n              popoverRefCurrent &&\n              !popoverRefCurrent.contains(e.target as Element)\n            ) {\n              setOpen(false);\n            }\n            break;\n          case 'Escape':\n            closePopup();\n            break;\n          case 'Tab':\n            requestAnimationFrame(() => {\n              if (popoverRefCurrent && !popoverRefCurrent.contains(document.activeElement)) {\n                setOpen(false);\n              }\n            });\n            break;\n          default:\n            break;\n        }\n      }\n    };\n    if (popoverRefCurrent) {\n      document.addEventListener('mousedown', onMouseDown);\n      document.addEventListener('keydown', onKeyDown);\n    }\n    return () => {\n      if (popoverRefCurrent) {\n        document.removeEventListener('mousedown', onMouseDown);\n        document.removeEventListener('keydown', onKeyDown);\n      }\n    };\n  }, [triggerClickedRef, triggerRef, closePopup, isOpen, popoverRef, setOpen]);\n\n  const popoverRect = useRect({ ref: popoverRef });\n  const targetRect = useRect({ ref: triggerRef });\n  const styles = getPopupStyles(targetRect, popoverRect, side);\n\n  return (\n    <div\n      id={popupId}\n      data-testid=\"popup-content\"\n      ref={ref}\n      className={cx(\n        'bg-bg border-border brand-ou:bg-secondary fixed z-50 mt-1 rounded border border-solid p-2 shadow-lg',\n        {\n          block: isOpen,\n          hidden: !isOpen,\n        },\n        className\n      )}\n      style={{ ...style, ...styles, ...popupStyles }}\n      {...rest}\n    >\n      {children}\n    </div>\n  );\n});\n\nPopupContent.displayName = 'PopupContent';\n\nexport { PopupContent };\nexport default PopupContent;\n","export * from './lib/popup';\nexport * from './lib/popup.button';\nexport * from './lib/popup.content';\nexport * from './lib/popup.context';\nexport * from './lib/popup.utils';\n","import { createElement } from 'react';\n\nexport interface TagType extends React.HTMLAttributes<HTMLElement> {\n  figureTag: 'figure' | 'div' | 'span';\n  children: React.ReactNode;\n}\n\nexport const ElementSelector: React.FC<TagType> = ({ figureTag, children, ...props }) => {\n  return createElement(figureTag, props, children);\n};\n","import { useState } from 'react';\nimport cx from 'classnames';\nimport { Image } from 'next/dist/client/image-component';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { AspectRatio, TResponsiveImage } from './responsive-image.types';\nimport { ElementSelector } from './utils/element-selector';\nimport { logInfo } from '@dx-ui/framework-logger';\n\nconst BREAKPOINTS = {\n  xxs: 200,\n  xs: 320,\n  sm: 640,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  xxl: 1440,\n  xxxl: 1920,\n  xxxxl: 2560,\n  xxxxxl: 3840,\n};\n\nfunction GetHeightForWidthAndAspectRatio(width: number, aspectRatio: AspectRatio) {\n  const heightWidthArray = aspectRatio.split(':');\n  const denominator = (heightWidthArray?.[0] || 1) as number;\n  const multiplier = (heightWidthArray?.[1] || 1) as number;\n  const height = (width * multiplier) / denominator;\n  return Math.round(height);\n}\n\nfunction getAspectRatio(width: number, height: number, urlString: string) {\n  const aspectRatio = width / height;\n\n  if (!Number.isFinite(aspectRatio) || aspectRatio === 0) {\n    logInfo(\n      'Customer_Experience_ImageError',\n      new Error('Invalid aspect ratio'),\n      `aspectRatio: ${aspectRatio}, width: ${width}, height: ${height}, imageUrl: \"${urlString}\"`\n    );\n\n    return 3 / 2;\n  }\n\n  return aspectRatio;\n}\n\nfunction parseQsNumber(qs: URLSearchParams, key: string, defaultValue: number) {\n  const str = qs.get(key) ?? defaultValue.toString();\n  const num = Math.abs(Number(str));\n\n  if (!Number.isFinite(num)) {\n    return defaultValue;\n  }\n\n  return num;\n}\n\n/**\n * Takes the image URL and reconstructs it with the appropriate aspect ratio, width and height.\n * Width values are multiplied by 2 to ensure high-res images are served.\n */\nfunction overrideImageUrl(urlString: string, targetHeight: number, targetWidth: number) {\n  const queryIndex = urlString.indexOf('?');\n  if (queryIndex === -1) {\n    return urlString;\n  }\n\n  const search = new URLSearchParams(urlString.slice(queryIndex) ?? '');\n\n  const sourceWidth = parseQsNumber(search, 'rw', 0);\n  const sourceHeight = parseQsNumber(search, 'rh', 0);\n  const sourceAspectRatio = getAspectRatio(sourceWidth, sourceHeight, urlString);\n\n  const targetAspectRatio = getAspectRatio(targetWidth, targetHeight, urlString);\n\n  if (targetAspectRatio > 1) {\n    search.set('rh', String(Math.round(targetWidth / sourceAspectRatio) * 2));\n    search.set('rw', String(targetWidth * 2));\n  } else {\n    search.set('rw', String(Math.round(targetHeight * sourceAspectRatio) * 2));\n    search.set('rh', String(targetHeight * 2));\n  }\n\n  return urlString.slice(0, queryIndex) + '?' + search.toString();\n}\n\n/**\n * Takes the component/image width and rounds it to the nearest breakpoint value.\n * Low bandwidth connections return the lowest breakpoint available.\n */\nconst getBreakpoint = (width: number, bandwidth: number) => {\n  const breakpoints = Object.values(BREAKPOINTS);\n  const maxBreakpoint = breakpoints[breakpoints.length - 1] ?? 0;\n  return width > maxBreakpoint\n    ? maxBreakpoint\n    : bandwidth > 50\n    ? breakpoints.find((breakpoint) => breakpoint >= width)\n    : BREAKPOINTS.xxs;\n};\n\n/**\n * Responsive Image wraps `next/image` to render an image that responds to tailwind breakpoints.\n */\n\nexport const aspectRatioMap: Record<AspectRatio, string> = {\n  '3:4': 'aspect-[3/4]',\n  '1:1': 'aspect-square',\n  '3:2': 'aspect-[3/2]',\n  '4:3': 'aspect-[4/3]',\n  '4:2': 'aspect-[4/2]',\n  '9:16': 'aspect-[9/16]',\n  '16:9': 'aspect-[16/9]',\n  '21:9': 'aspect-[21/9]',\n  '18:5': 'aspect-[18/5]',\n  '384:113': 'aspect-[384/113]',\n};\n\nexport const getAspectRatioClass = (aspectRatio: AspectRatio): string =>\n  aspectRatioMap[aspectRatio] || 'aspect-[3/2]';\n\nexport const ResponsiveImage = ({\n  id,\n  altText,\n  aspectRatio,\n  imageUrl,\n  className = '',\n  wrapperClassName,\n  wrapperTag,\n  captionData,\n  bandwidth = 100,\n  onImgLoaded,\n  priority = false,\n  width,\n  hFull = false,\n  maxHeight,\n  onClick,\n}: TResponsiveImage) => {\n  const [loaded, setLoaded] = useState(false);\n\n  const imageWidth = getBreakpoint(width, bandwidth) || 0;\n\n  const imageHeight = GetHeightForWidthAndAspectRatio(imageWidth, aspectRatio);\n  const resizedImageUrl = imageUrl ? overrideImageUrl(imageUrl, imageHeight, imageWidth) : '';\n  const captionExists =\n    typeof captionData === 'object' && Object.keys(captionData).length > 0 && captionData.caption;\n\n  const defaultWrapperTag = captionData ? 'figure' : 'div';\n\n  //TODO updates coming with NHCBP-5517\n  return (\n    <ElementSelector\n      figureTag={wrapperTag || defaultWrapperTag}\n      className={cx(\n        wrapperClassName,\n        `relative block w-full overflow-hidden bg-transparent`,\n        {\n          'h-full': hFull,\n        },\n        aspectRatio ? getAspectRatioClass(aspectRatio) : null\n      )}\n      style={{\n        maxHeight: maxHeight ? maxHeight : undefined,\n      }}\n    >\n      {resizedImageUrl && (\n        <Image\n          id={id}\n          className={cx(className, {\n            'invisible opacity-0': !loaded, // Added `opacity=0` css to hide the flickering of the loaded image(overlapping loading indicator div) happening due to the `visibility:visible` overriding style from 'next/image' img styles; invisble style is overriden here always\n            'opacity-100': loaded,\n          })}\n          alt={altText}\n          src={resizedImageUrl}\n          style={{\n            objectFit: 'cover',\n          }}\n          fill\n          onLoad={() => {\n            setLoaded(true);\n\n            if (onImgLoaded) {\n              //TODO tsc is erroniously infering onImgLoaded: never\n              onImgLoaded();\n            }\n          }}\n          data-testid=\"responsiveImageImg\"\n          unoptimized={true} // required because akamai image manager doesnt support this (will cause 403 otherwise)\n          priority={priority}\n          onClick={onClick}\n        />\n      )}\n\n      {!loaded ? (\n        <div\n          data-testid=\"image-loading-widget\"\n          className={cx('bg-bg-alt absolute inset-0 size-full shrink-0 animate-pulse')}\n        />\n      ) : null}\n      {\n        /*TODO tsc is erroniously infering captionData: some none object type*/\n        captionExists ? <Caption {...captionData} metricsOnClick={onClick} /> : null\n      }\n    </ElementSelector>\n  );\n};\n\nexport { GetHeightForWidthAndAspectRatio, BREAKPOINTS, overrideImageUrl, getBreakpoint };\nexport default ResponsiveImage;\n","import { useState } from 'react';\nimport cx from 'classnames';\nimport Image from 'next/image';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { TResponsivePicture } from './responsive-picture.types';\nimport {\n  overrideImageUrl,\n  BREAKPOINTS,\n  getBreakpoint,\n  GetHeightForWidthAndAspectRatio,\n  aspectRatioMap,\n} from './responsive-image';\nimport type { AspectRatio } from './responsive-image.types';\nimport { ElementSelector } from './utils/element-selector';\n\nconst getAspectRatioClass = ({\n  aspectRatio,\n  tabletAspectRatio,\n  mobileAspectRatio,\n}: {\n  aspectRatio: AspectRatio;\n  tabletAspectRatio?: AspectRatio;\n  mobileAspectRatio?: AspectRatio;\n}) => {\n  const defaultAspectRatio = 'aspect-[3/2]';\n\n  return [\n    mobileAspectRatio\n      ? aspectRatioMap[mobileAspectRatio] || defaultAspectRatio\n      : defaultAspectRatio,\n    tabletAspectRatio ? `sm:${aspectRatioMap[tabletAspectRatio] || defaultAspectRatio}` : '',\n    (mobileAspectRatio || tabletAspectRatio) && aspectRatio\n      ? `lg:${aspectRatioMap[aspectRatio] || defaultAspectRatio}`\n      : aspectRatioMap[aspectRatio] || defaultAspectRatio,\n  ]\n    .filter(Boolean)\n    .join(' ');\n};\n\nexport const ResponsivePicture = ({\n  id,\n  altText,\n  className = '',\n  wrapperClassName,\n  wrapperTag,\n  captionData,\n  bandwidth = 100,\n  onImgLoaded,\n  priority = false,\n  width,\n  onClick,\n  imageUrl,\n  aspectRatio,\n  mobileImageUrl,\n  mobileAspectRatio,\n  tabletImageUrl,\n  tabletAspectRatio,\n}: TResponsivePicture) => {\n  const [loaded, setLoaded] = useState(false);\n  const imageWidth = getBreakpoint(width, bandwidth) || 0;\n\n  // Optimized image URLs\n  const desktopImageHeight = GetHeightForWidthAndAspectRatio(imageWidth, aspectRatio);\n  const desktopResizedImageUrl = imageUrl\n    ? overrideImageUrl(imageUrl, desktopImageHeight, imageWidth)\n    : '';\n\n  const tabletResizedImageUrl =\n    tabletAspectRatio && tabletImageUrl\n      ? overrideImageUrl(\n          tabletImageUrl,\n          GetHeightForWidthAndAspectRatio(imageWidth, tabletAspectRatio),\n          imageWidth\n        )\n      : '';\n\n  const mobileResizedImageUrl =\n    mobileAspectRatio && mobileImageUrl\n      ? overrideImageUrl(\n          mobileImageUrl,\n          GetHeightForWidthAndAspectRatio(imageWidth, mobileAspectRatio),\n          imageWidth\n        )\n      : '';\n\n  const captionExists = captionData && Object.keys(captionData).length > 0 && captionData.caption;\n  const defaultWrapperTag = captionData ? 'figure' : 'div';\n\n  return (\n    <ElementSelector\n      data-testid=\"responsivePictureWrapper\"\n      figureTag={wrapperTag || defaultWrapperTag}\n      className={cx(\n        wrapperClassName,\n        'relative block w-full overflow-hidden bg-transparent',\n        getAspectRatioClass({\n          aspectRatio,\n          tabletAspectRatio,\n          mobileAspectRatio,\n        })\n      )}\n    >\n      {desktopResizedImageUrl && (\n        <picture data-testid=\"responsivePicture\">\n          {mobileImageUrl && (\n            <source\n              data-testid=\"mobileSource\"\n              media={`(max-width: ${BREAKPOINTS.sm}px)`}\n              srcSet={mobileResizedImageUrl}\n            />\n          )}\n          {tabletImageUrl && (\n            <source\n              data-testid=\"tabletSource\"\n              media={`(max-width: ${BREAKPOINTS.xl}px)`}\n              srcSet={tabletResizedImageUrl}\n            />\n          )}\n          <Image\n            id={id}\n            className={cx('object-cover', className, {\n              'invisible opacity-0': !loaded,\n              'opacity-100': loaded,\n            })}\n            alt={altText}\n            src={desktopResizedImageUrl}\n            fill\n            onLoad={() => {\n              setLoaded(true);\n              onImgLoaded?.();\n            }}\n            unoptimized={true}\n            priority={priority}\n            onClick={onClick}\n          />\n        </picture>\n      )}\n\n      {!loaded && (\n        <div\n          data-testid=\"image-loading-widget\"\n          className=\"bg-bg-alt absolute inset-0 size-full shrink-0 animate-pulse\"\n        />\n      )}\n      {captionExists && <Caption {...captionData} metricsOnClick={onClick} />}\n    </ElementSelector>\n  );\n};\n\nexport default ResponsivePicture;\n","import { BREAKPOINTS } from '../responsive-image';\nimport type { AspectRatio } from '../responsive-image.types';\n\ntype AspectRatioandUrlArgs = {\n  width: number;\n  imageUrlMobile?: string;\n  imageUrlTablet?: string;\n  imageUrlDesktop?: string;\n  aspectRatioMobile?: AspectRatio;\n  aspectRatioTablet?: AspectRatio;\n  aspectRatioDesktop?: AspectRatio;\n};\n\n/**\n * Returns the URL and the Aspect Ratio for the current screen size(mobile, desktop or tablet)\n *\n * @param width\n * @param imageUrlMobile\n * @param imageUrlTablet\n * @param imageUrlDesktop\n * @param imageUrlAllScreens\n * @param aspectRatioMobile\n * @param aspectRatioTablet\n * @param aspectRatioDesktop\n * @param aspectRatioAllScreens\n * @returns\n */\n\nexport const getCurrentAspectRatioAndUrl = ({\n  width,\n  imageUrlMobile,\n  imageUrlTablet,\n  imageUrlDesktop,\n  aspectRatioMobile,\n  aspectRatioTablet,\n  aspectRatioDesktop,\n}: AspectRatioandUrlArgs): { imageUrl: string; aspectRatio: AspectRatio } => {\n  const isMobile = width < BREAKPOINTS['sm'];\n\n  const isDesktop = width > BREAKPOINTS['xl'];\n\n  if (isMobile && imageUrlMobile && aspectRatioMobile) {\n    return { imageUrl: imageUrlMobile, aspectRatio: aspectRatioMobile };\n  }\n\n  if (isDesktop && imageUrlDesktop && aspectRatioDesktop) {\n    return { imageUrl: imageUrlDesktop, aspectRatio: aspectRatioDesktop };\n  }\n\n  if (!isDesktop && !isMobile && imageUrlTablet && aspectRatioTablet) {\n    return { imageUrl: imageUrlTablet, aspectRatio: aspectRatioTablet };\n  }\n\n  return { imageUrl: '', aspectRatio: '16:9' };\n};\n","export * from './responsive-image';\nexport * from './responsive-picture';\nexport * from './responsive-image.types';\nexport * from './responsive-picture.types';\nexport * from './utils/aspect-ratio-to-tailwind-class-converter';\nexport * from './utils/get-current-aspect-ratio-and-url';\n","export * from './lib';\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 GetSpeedBumpFeatureConfigsDocument = {\n  operationName: 'featureConfigs',\n  operationString: `query featureConfigs($names: [String!]!) {\n  featureConfigs(names: $names) {\n    name\n    config\n    conditions\n  }\n}`,\n  originalOpName: 'getSpeedBumpFeatureConfigs',\n};\nexport function useGetSpeedBumpFeatureConfigsQuery<\n  TData = Types.GetSpeedBumpFeatureConfigsQuery,\n  TError = DXError\n>(\n  variables: Types.GetSpeedBumpFeatureConfigsQueryVariables,\n  options?: Omit<UseQueryOptions<Types.GetSpeedBumpFeatureConfigsQuery, TError, TData>, 'queryKey'>\n) {\n  return useQuery<Types.GetSpeedBumpFeatureConfigsQuery, TError, TData>({\n    queryKey: [GetSpeedBumpFeatureConfigsDocument, variables],\n    ...options,\n  });\n}\nexport function serverSideGetSpeedBumpFeatureConfigsQuery(\n  queryClient: QueryClient,\n  variables: Types.GetSpeedBumpFeatureConfigsQueryVariables,\n  options?: FetchQueryOptions<Types.GetSpeedBumpFeatureConfigsQuery>\n) {\n  return queryClient.fetchQuery<Types.GetSpeedBumpFeatureConfigsQuery>({\n    queryKey: [GetSpeedBumpFeatureConfigsDocument, variables],\n    ...options,\n  });\n}\n","import type { QueryClient } from '@tanstack/react-query';\nimport {\n  serverSideGetSpeedBumpFeatureConfigsQuery,\n  useGetSpeedBumpFeatureConfigsQuery,\n} from '../gql/queries';\nimport type { OneLinkConfig } from '@dx-ui/framework-i18n';\nimport { CDN_STALE_TIME } from '@dx-ui/framework-react-query';\n\nconst TRANSLATE_RULES_CONFIG_NAME = 'rule-ui-translate-urls';\nconst ONELINK_CONFIG_NAME = 'config-ui-translate-onelink';\n\nexport const names = [TRANSLATE_RULES_CONFIG_NAME, ONELINK_CONFIG_NAME];\n\nexport function useTranslationsConfig({ isEnabled }: { isEnabled?: boolean } = {}) {\n  const { data } = useGetSpeedBumpFeatureConfigsQuery(\n    {\n      names,\n    },\n    {\n      enabled: isEnabled,\n      staleTime: CDN_STALE_TIME,\n    }\n  );\n  const translateRules =\n    data?.featureConfigs?.find((config) => config.name === TRANSLATE_RULES_CONFIG_NAME) || null;\n  const oneLinkConfig =\n    (data?.featureConfigs?.find((config) => config.name === ONELINK_CONFIG_NAME)\n      ?.config as OneLinkConfig) || null;\n\n  return { oneLinkConfig, translateRules };\n}\n\nexport const getSpeedBumpFeatureConfig = (queryClient: QueryClient) => {\n  return serverSideGetSpeedBumpFeatureConfigsQuery(queryClient, { names });\n};\n","import * as React from 'react';\nimport type { Rule } from '@dx-ui/utilities-url-config';\nimport { RuleEngine, getUrlConfig } from '@dx-ui/utilities-url-config';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\nimport { useTranslationsConfig } from './hooks/useFeatureConfigs';\nimport { getOneLinkProps } from '@dx-ui/framework-i18n';\n\ntype SpeedbumpAttributes = {\n  isEnabled: boolean;\n  isVisible: boolean;\n  onShow: (e: React.SyntheticEvent<HTMLAnchorElement>) => boolean;\n  onHide: () => void;\n  onContinue: () => void;\n};\n\ntype UseSpeedbumpProps = {\n  /** Used to determine whether to show or hide the speedbump.\n   * Also used to determine the destination language code to use in the target url\n   */\n  language: string;\n  appName: string;\n};\n\n/**\n *  Can be used to act as an anchor event target when using the useSpeedbump hook without a link\n */\nexport function makeAnchorEventTarget(absoluteUrl: string) {\n  const url = new URL(absoluteUrl);\n  return {\n    preventDefault: () => undefined,\n    stopPropagation: () => undefined,\n    currentTarget: {\n      href: absoluteUrl,\n      origin: url.origin,\n      pathname: url.pathname,\n    } as unknown as HTMLAnchorElement,\n    target: {\n      href: absoluteUrl,\n    } as unknown as HTMLAnchorElement,\n  } as unknown as React.ChangeEvent<HTMLAnchorElement>;\n}\n\nexport const DocUseSpeedbump: React.FC<React.PropsWithChildren<UseSpeedbumpProps>> = () => null;\n\nfunction transformUrl({\n  href,\n  pathname,\n  language,\n}: {\n  href: string;\n  pathname: string;\n  language: string;\n}) {\n  if (pathname.startsWith('/zh/') && (language === 'zh-hans' || language === 'zh-hant')) {\n    return href.replace('/zh/', `/${language}/`);\n  }\n  return href;\n}\n/**\n * This hook provides the ability to replace in language urls with english only urls.\n * It only works for HTMLAnchorElement links and will not work with other elements as\n * it will look for a `href` attribute on the target or parent element.\n *\n * It will replace the in-language code with `en` and open the location on the window.\n */\nconst useSpeedbump = (\n  language: string,\n  appName?: string,\n  bypassOneLink?: boolean\n): SpeedbumpAttributes => {\n  const DEFAULT_LANGUAGE = 'en';\n  const { oneLinkConfig, translateRules } = useTranslationsConfig();\n  const url = isBrowser ? window.location.href : '';\n  const oneLinkProps = getOneLinkProps(language, appName || '', url, oneLinkConfig);\n  const translateRuleEngine = React.useMemo(\n    () => (translateRules ? new RuleEngine(translateRules as Rule) : null),\n    [translateRules]\n  );\n  const [isEnabled] = React.useState(language !== DEFAULT_LANGUAGE);\n  const [targetLanguage] = React.useState(language);\n  const [isVisible, setIsVisible] = React.useState<boolean>(false);\n  const [eventTarget, setEventTarget] = React.useState<HTMLAnchorElement>();\n  const onShow = (e: React.SyntheticEvent<HTMLAnchorElement>) => {\n    const { target } = e as React.ChangeEvent<HTMLAnchorElement>;\n    setEventTarget(target);\n    const { href, origin, pathname } =\n      e.currentTarget || (target.parentElement as HTMLAnchorElement);\n    if (!translateRuleEngine) {\n      return false;\n    }\n    const url = transformUrl({ href, pathname, language });\n    if (href !== url) {\n      e.currentTarget.href = url;\n    }\n    const urlConfig = getUrlConfig(translateRuleEngine, url, origin, language);\n    const shouldShowSpeedbump = (!oneLinkProps.isOneLink || bypassOneLink) && urlConfig.speedbump;\n    if (isEnabled && shouldShowSpeedbump) {\n      e.preventDefault();\n      e.stopPropagation();\n      setIsVisible(true);\n      return true;\n    }\n    return false;\n  };\n  const onHide = () => {\n    setIsVisible(false);\n  };\n  const onContinue = () => {\n    setIsVisible(false);\n    if (isBrowser && eventTarget) {\n      // hack, will need to revisit. Looks for current element or parent to find the href\n      const href =\n        eventTarget.href ||\n        (eventTarget.parentElement as HTMLAnchorElement).href ||\n        (eventTarget.parentElement?.parentElement as HTMLAnchorElement).href;\n      const enUri = href?.replace(`/${targetLanguage}/`, `/${DEFAULT_LANGUAGE}/`);\n      enUri &&\n      (eventTarget.target === '_blank' ||\n        (eventTarget.parentElement as HTMLAnchorElement)?.target === '_blank' ||\n        (eventTarget.parentElement?.parentElement as HTMLAnchorElement)?.target === '_blank')\n        ? window.open(enUri, eventTarget.target)\n        : (window.location.href = enUri);\n    }\n  };\n  return {\n    isEnabled,\n    isVisible,\n    onShow,\n    onHide,\n    onContinue,\n  };\n};\n\nexport { useSpeedbump };\nexport default useSpeedbump;\n","import type * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { ActionDialog, DialogTitle } from '@dx-ui/osc-dialog-v2';\nimport set from 'lodash/set';\nimport FocusLock from 'react-focus-lock';\n\nexport type SpeedbumpProps = {\n  /**\n   * Configures speed bump content\n   */\n  speedbumpOptions?: {\n    title: string;\n    message?: string;\n    confirmButtonLabel?: string;\n    cancelButtonLabel?: string;\n  };\n  /**\n   * displays the speeedbump or not\n   */\n  isShowing: boolean;\n  /**\n   * handler to close the speedbump\n   */\n  onClose: () => void;\n  /**\n   * handler used to proceed if chosen\n   */\n  onContinue: (event: React.SyntheticEvent<HTMLButtonElement>) => void;\n};\n\n/**\n * Used to display a speedbump when transitioning to a non translated page\n */\nexport const Speedbump: React.FC<React.PropsWithChildren<SpeedbumpProps>> = ({\n  isShowing,\n  onClose: onCloseProp,\n  onContinue: onContinueProp,\n  speedbumpOptions,\n}) => {\n  const [t] = useTranslation('osc-speedbump');\n  const { title, message, confirmButtonLabel, cancelButtonLabel } = speedbumpOptions ?? {};\n  const handleConfirm = (e: React.SyntheticEvent<HTMLButtonElement>) => {\n    if (window?.digitalData && window?._satellite) {\n      set(window.digitalData, 'click.clickID', 'speedbump_continue');\n      window._satellite?.track?.('global_click');\n    }\n    onContinueProp?.(e);\n  };\n  const handleCancel = () => {\n    if (window?.digitalData && window?._satellite) {\n      set(window.digitalData, 'click.clickID', 'speedbump_return');\n      window._satellite?.track?.('global_click');\n    }\n    onCloseProp?.();\n  };\n\n  const handleDismiss = () => {\n    onCloseProp?.();\n  };\n  const titleOptions = !!(title && message)\n    ? { ...{ title } }\n    : { ...{ hasChildrenWithTitle: true } };\n\n  return (\n    <FocusLock as=\"span\" disabled={!isShowing}>\n      <ActionDialog\n        buttonOptions={{\n          cancel: { label: cancelButtonLabel ?? t('back') },\n          confirm: { label: confirmButtonLabel ?? t('continue') },\n        }}\n        isOpen={isShowing}\n        onCancel={handleCancel}\n        onConfirm={handleConfirm}\n        onDismiss={handleDismiss}\n        size=\"sm\"\n        shouldStackButtons={true}\n        {...titleOptions}\n      >\n        <div data-testid=\"speedbumpDialog\" className=\"mt-3\">\n          {message ? (\n            message\n          ) : (\n            <DialogTitle className=\"mb-4 text-center text-xl font-bold\">\n              {title ?? t('title')}\n            </DialogTitle>\n          )}\n        </div>\n      </ActionDialog>\n    </FocusLock>\n  );\n};\n\nexport default Speedbump;\n","export * from './hooks/useFeatureConfigs';\nexport * from './gql/queries';\nexport * from './gql/types';\nexport * from './use-speedbump';\nexport * from './speedbump';\n","export * from './lib';\n","import cx from 'classnames';\nimport * as React from 'react';\n\ntype SpinnerSizes = 'sm' | 'md' | 'lg' | 'xl';\n\nexport type SpinnerProps = {\n  /** The size of the spinner */\n  size?: SpinnerSizes;\n  /** The time in milliseconds to delay until spinner starts */\n  delay?: number;\n} & React.HTMLAttributes<SVGElement>;\n\n/**\n * Displays an icon that indicates something is loading\n */\nexport const Spinner = React.forwardRef<SVGSVGElement, SpinnerProps>(\n  ({ className, size = 'md', delay, ...rest }, forwardedRef) => {\n    const [showSpinner, setShowSpinner] = React.useState(false);\n\n    React.useEffect(() => {\n      if (delay) {\n        const timer = setTimeout(() => setShowSpinner(true), delay);\n        return () => clearTimeout(timer);\n      }\n      return setShowSpinner(true);\n    }, [delay]);\n\n    return (\n      <svg\n        role=\"img\"\n        aria-hidden=\"true\"\n        className={cx(\n          'motion-safe:animate-spin',\n          {\n            'w-5': size === 'sm',\n            'w-10': size === 'md',\n            'w-16': size === 'lg',\n            'w-20': size === 'xl',\n            hidden: !showSpinner,\n          },\n          className\n        )}\n        viewBox=\"0 0 100 100\"\n        fill=\"none\"\n        ref={forwardedRef}\n        {...rest}\n      >\n        <circle className=\"opacity-25\" cx=\"10\" cy=\"10\" stroke=\"currentColor\" strokeWidth=\"10\" />\n        <path\n          fill=\"currentColor\"\n          d=\"M10,50c0,0,0,0.5,0.1,1.4c0,0.5,0.1,1,0.2,1.7c0,0.3,0.1,0.7,0.1,1.1c0.1,0.4,0.1,0.8,0.2,1.2c0.2,0.8,0.3,1.8,0.5,2.8 c0.3,1,0.6,2.1,0.9,3.2c0.3,1.1,0.9,2.3,1.4,3.5c0.5,1.2,1.2,2.4,1.8,3.7c0.3,0.6,0.8,1.2,1.2,1.9c0.4,0.6,0.8,1.3,1.3,1.9 c1,1.2,1.9,2.6,3.1,3.7c2.2,2.5,5,4.7,7.9,6.7c3,2,6.5,3.4,10.1,4.6c3.6,1.1,7.5,1.5,11.2,1.6c4-0.1,7.7-0.6,11.3-1.6 c3.6-1.2,7-2.6,10-4.6c3-2,5.8-4.2,7.9-6.7c1.2-1.2,2.1-2.5,3.1-3.7c0.5-0.6,0.9-1.3,1.3-1.9c0.4-0.6,0.8-1.3,1.2-1.9 c0.6-1.3,1.3-2.5,1.8-3.7c0.5-1.2,1-2.4,1.4-3.5c0.3-1.1,0.6-2.2,0.9-3.2c0.2-1,0.4-1.9,0.5-2.8c0.1-0.4,0.1-0.8,0.2-1.2 c0-0.4,0.1-0.7,0.1-1.1c0.1-0.7,0.1-1.2,0.2-1.7C90,50.5,90,50,90,50s0,0.5,0,1.4c0,0.5,0,1,0,1.7c0,0.3,0,0.7,0,1.1 c0,0.4-0.1,0.8-0.1,1.2c-0.1,0.9-0.2,1.8-0.4,2.8c-0.2,1-0.5,2.1-0.7,3.3c-0.3,1.2-0.8,2.4-1.2,3.7c-0.2,0.7-0.5,1.3-0.8,1.9 c-0.3,0.7-0.6,1.3-0.9,2c-0.3,0.7-0.7,1.3-1.1,2c-0.4,0.7-0.7,1.4-1.2,2c-1,1.3-1.9,2.7-3.1,4c-2.2,2.7-5,5-8.1,7.1 c-0.8,0.5-1.6,1-2.4,1.5c-0.8,0.5-1.7,0.9-2.6,1.3L66,87.7l-1.4,0.5c-0.9,0.3-1.8,0.7-2.8,1c-3.8,1.1-7.9,1.7-11.8,1.8L47,90.8 c-1,0-2-0.2-3-0.3l-1.5-0.2l-0.7-0.1L41.1,90c-1-0.3-1.9-0.5-2.9-0.7c-0.9-0.3-1.9-0.7-2.8-1L34,87.7l-1.3-0.6 c-0.9-0.4-1.8-0.8-2.6-1.3c-0.8-0.5-1.6-1-2.4-1.5c-3.1-2.1-5.9-4.5-8.1-7.1c-1.2-1.2-2.1-2.7-3.1-4c-0.5-0.6-0.8-1.4-1.2-2 c-0.4-0.7-0.8-1.3-1.1-2c-0.3-0.7-0.6-1.3-0.9-2c-0.3-0.7-0.6-1.3-0.8-1.9c-0.4-1.3-0.9-2.5-1.2-3.7c-0.3-1.2-0.5-2.3-0.7-3.3 c-0.2-1-0.3-2-0.4-2.8c-0.1-0.4-0.1-0.8-0.1-1.2c0-0.4,0-0.7,0-1.1c0-0.7,0-1.2,0-1.7C10,50.5,10,50,10,50z\"\n        />\n      </svg>\n    );\n  }\n);\n\nSpinner.displayName = 'Spinner';\n\nexport default Spinner;\n","import { Spinner } from './spinner';\nimport { Dialog, DialogTitle } from '@dx-ui/osc-dialog-v2';\nimport { useTranslation } from 'next-i18next';\n\ntype SpinnerDialogProps = {\n  /* Whether the dialog is open or closed */\n  isOpen: boolean;\n  /* Loading text provided to the dialog, defaults to Please wait... */\n  text?: string;\n};\n\nexport function SpinnerDialog({ isOpen, text }: SpinnerDialogProps) {\n  const { t } = useTranslation('osc-spinner');\n  return (\n    <Dialog isOpen={isOpen} hasChildrenWithTitle dialogClassName=\"w-48\">\n      <div className=\"flex flex-col items-center justify-center gap-4\">\n        <Spinner size=\"xl\" />\n        <DialogTitle>{text || t('loadingText')}</DialogTitle>\n      </div>\n    </Dialog>\n  );\n}\n\nSpinnerDialog.displayName = 'SpinnerDialog';\n\nexport default SpinnerDialog;\n","export * from './spinner';\nexport * from './spinner-dialog';\n","export * from './lib';\n","import cx from 'classnames';\nimport type { Link } from '@dx-ui/osc-link';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\n\nexport interface TextBlockCTAProps {\n  /**\n   * Is the component within the viewport?\n   */\n  isInView: boolean;\n  /**\n   * fade-in text animation\n   */\n  isAnimated: boolean;\n  /**\n   * The link object that defines the CTA.\n   */\n  link: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n}\n\n/**\n * The TextBlock CTA component.\n */\nexport const TextBlockCTA = ({\n  link,\n  isInView,\n  isAnimated = false,\n  brandComponentTheme,\n}: TextBlockCTAProps) => {\n  if (!link) {\n    return null;\n  }\n\n  const isDark = brandComponentTheme === 'dark';\n\n  return (\n    <div\n      className={cx('mt-2 xl:mt-4', {\n        'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n          isAnimated,\n        'translate-y-4': !isInView && isAnimated,\n        'delay-700 opacity-100 translate-y-0': isInView && isAnimated,\n      })}\n    >\n      <BrandLink\n        label={link.label}\n        isNewWindow={link.isNewWindow}\n        showNewWindowIcon={link.isNewWindow}\n        url={link.url}\n        brandComponentTheme={brandComponentTheme}\n        data-conductrics-goal={link.experimentationConfiguration?.goal}\n        data-conductrics-value={link.experimentationConfiguration?.value}\n        anchorClassName={cx(\n          'brand-qq:!bg-primary brand-qq:text-text-inverse brand-qq:!border-none brand-qq:py-4 brand-qq:px-8',\n          {\n            'brand-qq:!bg-bg-light brand-qq:!text-primary brand-qq:hover:bg-bg-light': isDark,\n          }\n        )}\n      />\n    </div>\n  );\n};\n","import { useId } from 'react';\nimport { TextualDescriptionBlock } from '@dx-ui/osc-textual-block';\nimport { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\n\nexport interface TextBlockDescriptionProps {\n  /**\n   * The text for the description component.\n   */\n  body: string;\n  className?: string;\n  /**\n   * Is the component within the viewport?\n   */\n  isInView: boolean;\n  /**\n   * fade-in text animation\n   */\n  isAnimated: boolean;\n  /**\n   * The alignment of the text.\n   */\n  textAlign?: 'left' | 'right' | 'center';\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n}\n\n/**\n * The TextBlock Description component.\n */\nexport const TextBlockDescription = ({\n  body,\n  isInView,\n  isAnimated = false,\n  textAlign = 'left',\n  brandComponentTheme,\n}: TextBlockDescriptionProps) => {\n  const id = useId();\n\n  if (!body) {\n    return null;\n  }\n\n  return (\n    <TextualDescriptionBlock\n      brandComponentTheme={brandComponentTheme}\n      textAlign={textAlign}\n      isInView={isInView}\n      isAnimated={isAnimated}\n    >\n      <CustomMarkdown\n        id={`textblock-body-section-${id}`}\n        isStaticContentPage={false}\n        brandComponentTheme={brandComponentTheme}\n      >\n        {body}\n      </CustomMarkdown>\n    </TextualDescriptionBlock>\n  );\n};\n","import { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\nimport { makeHeadingOverrides } from '@dx-ui/osc-textual-block';\n\nexport interface TextBlockHeadingProps {\n  /**\n   * The markdown for the headline component.\n   */\n  markdown: string;\n  /**\n   * Is the component within the viewport?\n   */\n  isInView: boolean;\n  /**\n   * fade-in text animation\n   */\n  isAnimated: boolean;\n  /**\n   * The alignment of the text.\n   */\n  textAlign?: 'left' | 'right' | 'center';\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n}\n\n/**\n * The TextBlock Heading component.\n */\nexport const TextBlockHeading = ({\n  markdown,\n  isInView,\n  isAnimated = false,\n  textAlign = 'left',\n  brandComponentTheme,\n}: TextBlockHeadingProps) => {\n  if (!markdown) {\n    return null;\n  }\n\n  const options = {\n    overrides: {\n      ...makeHeadingOverrides({\n        brandComponentTheme,\n        isAnimated,\n        isInView,\n        textAlign,\n      }),\n      span: {\n        props: {\n          className: 'text-text py-2 sm:heading-lg lg:heading-xl block',\n        },\n      },\n    },\n  };\n\n  return (\n    <CustomMarkdown\n      options={options}\n      data-testid=\"textBlockHeader\"\n      brandComponentTheme={brandComponentTheme}\n    >\n      {markdown}\n    </CustomMarkdown>\n  );\n};\n","import { TextualOrderedListBlock, TextualOrderedListItemBlock } from '@dx-ui/osc-textual-block';\nimport { useId } from 'react';\nimport { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\n\nexport interface TextBlockOrderedListProps {\n  /**\n   * Is the component within the viewport?\n   */\n  isInView: boolean;\n  /**\n   * fade-in text animation\n   */\n  isAnimated: boolean;\n  /**\n   * An array of strings to render in our list.\n   */\n  items: Array<string>;\n  /**\n   * The alignment of the text.\n   */\n  textAlign?: 'left' | 'right' | 'center';\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n}\n\nconst TextBlockOrderedListItem = ({\n  markdown,\n  brandComponentTheme,\n}: {\n  markdown: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n}) => {\n  const id = useId();\n\n  return (\n    <TextualOrderedListItemBlock brandComponentTheme={brandComponentTheme}>\n      <CustomMarkdown\n        id={`textblock-body-section-${id}`}\n        isStaticContentPage={false}\n        brandComponentTheme={brandComponentTheme}\n      >\n        {markdown}\n      </CustomMarkdown>\n    </TextualOrderedListItemBlock>\n  );\n};\n\n/**\n * The TextBlock Ordered List component.\n */\nexport const TextBlockOrderedList = ({\n  isInView,\n  isAnimated = false,\n  items,\n  textAlign = 'left',\n  brandComponentTheme,\n}: TextBlockOrderedListProps) => {\n  if (items.length <= 0) {\n    return null;\n  }\n\n  return (\n    <TextualOrderedListBlock\n      textAlign={textAlign}\n      isAnimated={isAnimated}\n      isInView={isInView}\n      brandComponentTheme={brandComponentTheme}\n    >\n      {items.map((item) => (\n        <TextBlockOrderedListItem\n          key={item}\n          markdown={item}\n          brandComponentTheme={brandComponentTheme}\n        />\n      ))}\n    </TextualOrderedListBlock>\n  );\n};\n","import { TextualUnorderedListBlock, TextualUnorderedListItemBlock } from '@dx-ui/osc-textual-block';\nimport { useId } from 'react';\nimport { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\n\nexport interface TextBlockUnorderedListProps {\n  /**\n   * Is the component within the viewport?\n   */\n  isInView: boolean;\n  /**\n   * fade-in text animation\n   */\n  isAnimated: boolean;\n  /**\n   * An array of strings to render in our list.\n   */\n  items: Array<string>;\n  /**\n   * The alignment of the text.\n   */\n  textAlign?: 'left' | 'right' | 'center';\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n}\n\nconst TextBlockUnorderedListItem = ({\n  markdown,\n  brandComponentTheme,\n}: {\n  markdown: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n}) => {\n  const id = useId();\n\n  return (\n    <TextualUnorderedListItemBlock brandComponentTheme={brandComponentTheme}>\n      <CustomMarkdown\n        id={`textblock-body-section-${id}`}\n        isStaticContentPage={false}\n        brandComponentTheme={brandComponentTheme}\n      >\n        {markdown}\n      </CustomMarkdown>\n    </TextualUnorderedListItemBlock>\n  );\n};\n\n/**\n * The TextBlock Unordered List component.\n */\nexport const TextBlockUnorderedList = ({\n  isInView,\n  isAnimated = false,\n  items,\n  textAlign = 'left',\n  brandComponentTheme,\n}: TextBlockUnorderedListProps) => {\n  if (items.length <= 0) {\n    return null;\n  }\n\n  return (\n    <TextualUnorderedListBlock\n      textAlign={textAlign}\n      isAnimated={isAnimated}\n      isInView={isInView}\n      brandComponentTheme={brandComponentTheme}\n    >\n      {items.map((item) => (\n        <TextBlockUnorderedListItem\n          key={item}\n          markdown={item}\n          brandComponentTheme={brandComponentTheme}\n        />\n      ))}\n    </TextualUnorderedListBlock>\n  );\n};\n","export * from './text-block-cta';\nexport * from './text-block-description';\nexport * from './text-block-heading';\nexport * from './text-block-ordered-list';\nexport * from './text-block-unordered-list';\n","import {\n  TextBlockCTA,\n  TextBlockDescription,\n  TextBlockHeading,\n  TextBlockOrderedList,\n  TextBlockUnorderedList,\n} from './blocks';\nimport type { ParsedContentSection } from './types';\nimport { useIntersectionObserver } from 'usehooks-ts';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\nimport { TextualBlock } from '@dx-ui/osc-textual-block';\n\nexport interface TextBlockProps {\n  /**\n   * The individual text block elements that will be rendered.\n   * The text box heading and text box description needs a markdown\n   */\n  data?: ParsedContentSection[];\n  /**\n   * Adds additional styling control to the wrapper that is rendered.\n   */\n  className?: string;\n  /**\n   * fade-in text animation\n   */\n  isAnimated: boolean;\n  /**\n   * The alignement of the items.\n   */\n  textAlign?: 'left' | 'right' | 'center';\n  /**\n   * Adds outline around content, within container\n   */\n  isBorderTrim?: boolean;\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n}\n\n/**\n * A component that is designed to render a headline, description, ordered list, unordered list, and/or cta. Background color theme and background image are full screen, content sits within a container.\n */\nexport function TextBlock({\n  data,\n  textAlign = 'left',\n  isAnimated = false,\n  isBorderTrim,\n  brandComponentTheme,\n}: TextBlockProps) {\n  const { ref, isIntersecting: inView } = useIntersectionObserver({\n    threshold: 0.5,\n    freezeOnceVisible: true,\n  });\n  const wrapperRef = !getIsReducedMotion() && isAnimated ? ref : null;\n\n  return (\n    <TextualBlock\n      brandComponentTheme={brandComponentTheme}\n      textAlign={textAlign}\n      hasBorderTrim={isBorderTrim ?? false}\n      ref={wrapperRef}\n    >\n      {data?.map((section: ParsedContentSection) => {\n        switch (section.kind) {\n          case 'heading':\n            return (\n              <TextBlockHeading\n                key={section.content}\n                textAlign={textAlign}\n                isInView={inView}\n                isAnimated={isAnimated}\n                markdown={section.content}\n                brandComponentTheme={brandComponentTheme}\n              />\n            );\n\n          case 'description':\n            return (\n              <TextBlockDescription\n                key={section.content}\n                textAlign={textAlign}\n                isInView={inView}\n                isAnimated={isAnimated}\n                body={section.content}\n                brandComponentTheme={brandComponentTheme}\n              />\n            );\n\n          case 'orderedList':\n            return (\n              <TextBlockOrderedList\n                key={`${section.content.join('')}-ordered-list`}\n                textAlign={textAlign}\n                isInView={inView}\n                isAnimated={isAnimated}\n                items={section.content}\n                brandComponentTheme={brandComponentTheme}\n              />\n            );\n\n          case 'unorderedList':\n            return (\n              <TextBlockUnorderedList\n                key={`${section.content.join('')}-unordered-list`}\n                textAlign={textAlign}\n                isInView={inView}\n                isAnimated={isAnimated}\n                items={section.content}\n                brandComponentTheme={brandComponentTheme}\n              />\n            );\n\n          case 'cta':\n            return (\n              <TextBlockCTA\n                key={section.content._id}\n                isInView={inView}\n                isAnimated={isAnimated}\n                link={section.content}\n                brandComponentTheme={brandComponentTheme}\n              />\n            );\n\n          default:\n            return null;\n        }\n      })}\n    </TextualBlock>\n  );\n}\n\nexport default TextBlock;\n","export * from './lib/text-block';\nexport * from './lib/blocks';\n","import * as React from 'react';\n\nimport cx from 'classnames';\n\nexport function mapTextAlignToClassname(textAlign: CmsAlignContent) {\n  return {\n    'text-right': textAlign === 'right',\n    'text-left': textAlign === 'left',\n    'text-center': textAlign === 'center',\n  };\n}\n\nexport function mapTextAlignToFlexClassname(textAlign: CmsAlignContent) {\n  return {\n    'justify-start': textAlign === 'left',\n    'justify-end': textAlign === 'right',\n    'justify-center': textAlign === 'center',\n  };\n}\n\nexport type TextualBlockProps = {\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  textAlign: 'left' | 'right' | 'center';\n  hasBorderTrim: boolean;\n};\n\nexport const TextualBlock = React.forwardRef<HTMLDivElement, TextualBlockProps>(\n  function TextualBlock(\n    { children, brandComponentTheme, textAlign, hasBorderTrim }: TextualBlockProps,\n    ref\n  ) {\n    const isDark = brandComponentTheme === 'dark';\n    const isLight = brandComponentTheme === 'light';\n\n    return (\n      <div\n        className={cx(\n          `brand-qq:bg-[url('/modules/assets/images/curio-bg1.png')] relative bg-cover bg-no-repeat`,\n          {\n            'bg-bg-dark': isDark,\n            'bg-bg-light': isLight,\n          }\n        )}\n        data-testid=\"textBlockBackgroundClassTest\"\n      >\n        <div\n          className={cx(\n            `brand-wa:py-16 brand-wa:xl:py-20 container py-8 xl:py-12`,\n            mapTextAlignToClassname(textAlign)\n          )}\n          data-testid=\"textBlockContainer\"\n          ref={ref}\n        >\n          <div\n            className={cx('brand-qq:py-24', {\n              'outline outline-primary outline-1 px-10 py-6': hasBorderTrim,\n              '!outline-bg brand-ou:!outline-secondary': isDark,\n              'brand-qq:outline-bg brand-ht:outline-bg': isLight, //remove brand-qq:outline-bg once background image work is complete\n            })}\n          >\n            {children}\n          </div>\n        </div>\n      </div>\n    );\n  }\n);\n\nexport function makeHeadingOverrides({\n  brandComponentTheme,\n  isAnimated,\n  isInView,\n  textAlign,\n}: {\n  brandComponentTheme?: CmsBrandComponentTheme;\n  textAlign: 'left' | 'right' | 'center';\n  isAnimated: boolean;\n  isInView: boolean;\n}): Record<'h1' | 'h2' | 'h3' | 'span', { props: { className: string } }> {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const headingStyles = cx(\n    'brand-qq:text-4xl brand-qq:tracking-wide brand-qq:px-12 brand-qq:pb-4 brand-qq:md:text-6xl brand-qq:md:px-0 brand-wa:uppercase brand-wa:font-sans brand-wa:font-light brand-wa:text-text',\n    mapTextAlignToClassname(textAlign),\n    {\n      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n        isAnimated,\n      'translate-y-4': !isInView && isAnimated,\n      'opacity-100 translate-y-0': isInView && isAnimated,\n      '!text-text-inverse brand-wa:!text-text-inverse': isDark,\n      'brand-ht:!text-text-inverse': isLight,\n    },\n    'font-headline text-primary lg:mb-2'\n  );\n\n  return {\n    h1: {\n      props: {\n        className: cx(headingStyles, 'heading-2xl lg:heading-5xl lg:mb-2'),\n      },\n    },\n    h2: {\n      props: {\n        className: cx(headingStyles, 'heading-xl lg:heading-2xl lg:mb-2'),\n      },\n    },\n    h3: {\n      props: {\n        className: cx(headingStyles, 'heading-lg lg:heading-xl lg:mb-2'),\n      },\n    },\n    span: {\n      props: {\n        className: 'text-text py-2 sm:heading-lg lg:heading-xl block',\n      },\n    },\n  };\n}\n\nexport type TextualDescriptionBlockProps = {\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  textAlign: 'left' | 'right' | 'center';\n  isInView: boolean;\n  isAnimated: boolean;\n};\n\nexport function makeDescriptionClassName({\n  brandComponentTheme,\n  textAlign,\n  isInView,\n  isAnimated,\n}: Omit<TextualDescriptionBlockProps, 'children'>) {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return cx(\n    'brand-qq:text-xl brand-qq:text-primary brand-qq:tracking-wider brand-qq:pb-6 brand-qq:px-20 brand-qq:font-serif brand-qq:font-medium brand-qq:md:px-0',\n    mapTextAlignToClassname(textAlign),\n    {\n      'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n        isAnimated,\n      'translate-y-4': !isInView && isAnimated,\n      'opacity-100 translate-y-0': isInView && isAnimated,\n      'text-text-inverse brand-qq:text-text-inverse': isDark,\n      'brand-ht:text-text-inverse': isLight,\n      'brand-hp:text-brand': brandComponentTheme !== 'dark',\n    },\n    'brand-wa:font-serif brand-gi:font-serif brand-gi:font-semibold py-2 sm:text-lg lg:text-xl'\n  );\n}\n\nexport function TextualDescriptionBlock({\n  children,\n  brandComponentTheme,\n  textAlign,\n  isInView,\n  isAnimated,\n}: TextualDescriptionBlockProps) {\n  const className = makeDescriptionClassName({\n    brandComponentTheme,\n    textAlign,\n    isInView,\n    isAnimated,\n  });\n\n  return (\n    <div data-testid=\"textBlockBody\" className={className}>\n      {children}\n    </div>\n  );\n}\n\nexport type TextualOrderedListBlockProps = {\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  textAlign: 'left' | 'right' | 'center';\n  isInView: boolean;\n  isAnimated: boolean;\n};\n\nexport function makeOrderedListClassName({\n  isAnimated,\n  isInView,\n  brandComponentTheme,\n}: Omit<TextualOrderedListBlockProps, 'children' | 'textAlign'>) {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return cx('list-outside list-decimal py-2 ps-4 text-left', {\n    'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n      isAnimated,\n    'translate-y-4': !isInView && isAnimated,\n    'opacity-100 translate-y-0': isInView && isAnimated,\n    'text-text-inverse': isDark,\n    'brand-ht:text-text-inverse': isLight,\n  });\n}\n\nexport function TextualOrderedListBlock({\n  children,\n  textAlign,\n  isAnimated,\n  isInView,\n  brandComponentTheme,\n}: TextualOrderedListBlockProps) {\n  const className = makeOrderedListClassName({\n    isAnimated,\n    isInView,\n    brandComponentTheme,\n  });\n\n  return (\n    <div className={cx('flex items-center', mapTextAlignToFlexClassname(textAlign))}>\n      <ul className={className}>{children}</ul>\n    </div>\n  );\n}\n\nexport type TextualOrderedListItemBlockProps = {\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport function makeOrderedListItemClassName({\n  brandComponentTheme,\n}: Omit<TextualOrderedListItemBlockProps, 'children'>) {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return cx(\n    {\n      'text-text-inverse': isDark,\n      'brand-ht:text-text-inverse': isLight,\n    },\n    'brand-wa:font-serif sm:text-lg lg:text-xl',\n    {\n      'brand-hp:text-brand': brandComponentTheme !== 'dark',\n    }\n  );\n}\n\nexport function TextualOrderedListItemBlock({\n  children,\n  brandComponentTheme,\n}: TextualOrderedListItemBlockProps) {\n  const className = makeOrderedListItemClassName({ brandComponentTheme });\n\n  return (\n    <li>\n      <div data-testid=\"textBlockBody\" className={className}>\n        {children}\n      </div>\n    </li>\n  );\n}\n\nexport type TextualUnorderedListBlockProps = {\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  textAlign: 'left' | 'right' | 'center';\n  isInView: boolean;\n  isAnimated: boolean;\n};\n\nexport function makeUnorderedListClassName({\n  isAnimated,\n  isInView,\n  brandComponentTheme,\n}: Omit<TextualUnorderedListBlockProps, 'children' | 'textAlign'>) {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return cx('list-outside list-disc py-2 ps-5 text-left', {\n    'duration-1000 ease-in-out opacity-0 motion-reduce:transition-none motion-reduce:opacity-100':\n      isAnimated,\n    'translate-y-4': !isInView && isAnimated,\n    'opacity-100 translate-y-0': isInView && isAnimated,\n    'text-text-inverse': isDark,\n    'brand-ht:text-text-inverse': isLight,\n  });\n}\n\nexport function TextualUnorderedListBlock({\n  children,\n  textAlign,\n  isAnimated,\n  isInView,\n  brandComponentTheme,\n}: TextualUnorderedListBlockProps) {\n  const className = makeUnorderedListClassName({\n    isAnimated,\n    isInView,\n    brandComponentTheme,\n  });\n\n  return (\n    <div className={cx('flex items-center', mapTextAlignToFlexClassname(textAlign))}>\n      <ul className={className}>{children}</ul>\n    </div>\n  );\n}\n\nexport type TextualUnorderedListItemBlockProps = {\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\nexport function TextualUnorderedListItemBlock({\n  children,\n  brandComponentTheme,\n}: TextualUnorderedListItemBlockProps) {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <li>\n      <div\n        data-testid=\"textBlockBody\"\n        className={cx(\n          {\n            'text-text-inverse': isDark,\n            'brand-ht:text-text-inverse': isLight,\n          },\n          'brand-wa:font-serif brand-gi:font-serif sm:text-lg lg:text-xl',\n          {\n            'brand-hp:text-brand': brandComponentTheme !== 'dark',\n          }\n        )}\n      >\n        {children}\n      </div>\n    </li>\n  );\n}\n\nexport type TextualBlockLinkProps = React.HTMLAttributes<HTMLAnchorElement> & {\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport function makeLinkClassName({ brandComponentTheme }: TextualBlockLinkProps) {\n  return cx('underline', {\n    'text-text-inverse': brandComponentTheme === 'dark',\n    'text-primary hover:text-primary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n      brandComponentTheme === 'light',\n    'text-primary hover:text-primary-alt ':\n      brandComponentTheme !== 'light' && brandComponentTheme !== 'dark',\n  });\n}\n\nexport function TextualBlockLink({ brandComponentTheme, ...props }: TextualBlockLinkProps) {\n  const className = makeLinkClassName({ brandComponentTheme });\n  return <a {...props} target=\"_blank\" rel=\"noopener noreferrer\" className={className} />;\n}\n","export * from './textual-block';\n","export * from './lib';\n","import { useIsClient } from 'usehooks-ts';\nimport { getIsReducedMotion } from '@dx-ui/utilities-accessibility';\n\ntype UseAutoPlayOptions = { isAutoPlay: boolean };\n\nexport function useAutoPlay({ isAutoPlay = true }: UseAutoPlayOptions = { isAutoPlay: true }) {\n  const isClient = useIsClient();\n  const isReducedMotion = getIsReducedMotion();\n  return isClient && isAutoPlay && !isReducedMotion;\n}\n","import { logWarning } from '@dx-ui/framework-logger';\nimport type { Track } from '../video-player.controls';\n\n/**\n * Asynchronously adds a track element to a video element for closed captions.\n *\n *  - This is done imperatively vs declaratively so the cues are available when the VTT is loaded.\n *  - The track element is hidden by default so the native captions do not display.\n */\nexport async function addTrackAsync(\n  videoElement: HTMLVideoElement,\n  track: Track\n): Promise<HTMLTrackElement | null> {\n  const trackElement = document.createElement('track');\n  trackElement.id = getTrackId(track);\n  trackElement.label = track.label;\n  trackElement.srclang = track.language;\n  trackElement.kind = 'metadata';\n  trackElement.track.mode = 'hidden';\n  trackElement.dataset.type = track.type;\n  videoElement.append(trackElement);\n\n  return new Promise((resolve) => {\n    trackElement.onload = () => {\n      resolve(trackElement);\n    };\n    trackElement.onerror = () => {\n      logWarning(\n        'OSCVideoPlayer',\n        new Error('track onerror'),\n        `Failed to fetch track ${track.url}`\n      );\n      videoElement.removeChild(trackElement);\n      resolve(null);\n    };\n    trackElement.src = track.url;\n  });\n}\n\nfunction getTrackId(track: Track) {\n  return [track.language, track.label, track.url].filter(Boolean).join('-').toLowerCase();\n}\n","import { useId, useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { addTrackAsync } from '../util/add-track';\nimport { logWarning } from '@dx-ui/framework-logger';\n\nimport type { VideoPlayerProps } from './use-video-player';\nimport type { VideoTrack } from '../video-player.controls';\n\ntype UseTrackQueryOptions = VideoPlayerProps & {\n  videoElement: React.RefObject<HTMLVideoElement>;\n};\n\n/**\n * Hook that asynchronously fetches and adds tracks to the video element.\n *\n * @see addTrackAsync\n */\nexport function useTrackQuery(options: UseTrackQueryOptions) {\n  const id = useId();\n  const videoElement = options.videoElement.current;\n  const hasCaptions = Boolean(options.captionTracks?.length);\n  const hasTranscripts = Boolean(options.transcriptTracks?.length);\n  const hasAudioTracks = Boolean(options.audioTracks?.length);\n  const hasTracks = hasCaptions || hasTranscripts || hasAudioTracks;\n  const { defaultVideoTrack, baseVideoTrack } = useBaseTracks(options);\n  const allTracks = useMemo(() => getFetchableTracks(options), [options]);\n\n  const { data: videoTracks = [defaultVideoTrack] } = useQuery({\n    enabled: Boolean(hasTracks && videoElement),\n    queryKey: [`video:${id}`],\n    queryFn: async () => {\n      return Promise.all(\n        allTracks.map((track) => addTrackAsync(videoElement as HTMLVideoElement, track))\n      )\n        .then((htmlTracks) => {\n          return [baseVideoTrack, ...(options?.audioTracks || [])].map((videoTrack) => ({\n            ...videoTrack,\n            captionTracks: matchTracks({\n              htmlTracks,\n              videoTrack,\n              type: 'captionTracks',\n            }),\n            transcriptTracks: matchTracks({\n              htmlTracks,\n              videoTrack,\n              type: 'transcriptTracks',\n            }),\n          }));\n        })\n        .catch((error) => {\n          logWarning('OSCVideoPlayer', error, 'Failed to fetch video tracks');\n          return [defaultVideoTrack];\n        });\n    },\n  });\n\n  return videoTracks;\n}\n\nfunction getFetchableTracks(options: UseTrackQueryOptions) {\n  const baseTracks = [...(options?.captionTracks || []), ...(options?.transcriptTracks || [])];\n  const additionalTracks =\n    options?.audioTracks?.flatMap((videoTrack) => [\n      ...(videoTrack.captionTracks || []),\n      ...(videoTrack.transcriptTracks || []),\n    ]) || [];\n  const tracksMap = new Map(\n    [...baseTracks, ...additionalTracks].map((item) => [Object.values(item).join('-'), item])\n  );\n  return Array.from(tracksMap.values());\n}\n\nfunction matchTracks({\n  htmlTracks,\n  videoTrack,\n  type,\n}: {\n  htmlTracks: Awaited<ReturnType<typeof addTrackAsync>>[];\n  videoTrack: NonNullable<VideoPlayerProps['audioTracks']>[number];\n  type: keyof Pick<VideoTrack, 'captionTracks' | 'transcriptTracks'>;\n}) {\n  return htmlTracks.filter((htmlTrack): htmlTrack is HTMLTrackElement =>\n    (videoTrack[type] ?? []).some(\n      (track) =>\n        track.type === htmlTrack?.dataset.type &&\n        track.label === htmlTrack.label &&\n        track.url === htmlTrack.src\n    )\n  );\n}\n\nfunction useBaseTracks(options: UseTrackQueryOptions) {\n  const baseVideoTrack = {\n    videoUrl: options.videoUrl,\n    videoGroup: options.videoGroup,\n    videoLabel: options.videoLabel,\n    captionTracks: options.captionTracks,\n    transcriptTracks: options.transcriptTracks,\n  };\n  const defaultVideoTrack = {\n    ...baseVideoTrack,\n    captionTracks: [],\n    transcriptTracks: [],\n  };\n  return {\n    baseVideoTrack,\n    defaultVideoTrack,\n  };\n}\n","import { useCallback, useEffect, useRef } from 'react';\nimport { useBoolean, useEventListener } from 'usehooks-ts';\nimport type { VideoPlayerProps, PlayerState, useVideoPlayer } from './use-video-player';\n\ntype UseFadeControlsOptions = VideoPlayerProps &\n  PlayerState & {\n    videoElement: ReturnType<typeof useVideoPlayer>['videoProps']['videoElement'];\n  };\n\nconst FADE_TIMEOUT_IN_MS = 3000;\n\n/**\n * Hook to manage the visibility of video controls.\n */\nexport function useFadeControls(props: UseFadeControlsOptions) {\n  const { isPlaying, wrapperElement, videoElement, shouldControlsRemainVisible } = props;\n  const elementRef = (wrapperElement || videoElement) as React.RefObject<HTMLElement>;\n  const { value: isVisible, setTrue: setVisible, setFalse: setHidden } = useBoolean(true);\n  const timeout = useRef(0);\n\n  const hideControls = useCallback(() => {\n    if (!shouldControlsRemainVisible) {\n      if (isPlaying) {\n        setHidden();\n      }\n      window.clearTimeout(timeout.current);\n    }\n  }, [setHidden, isPlaying, shouldControlsRemainVisible]);\n\n  const showControls = useCallback(() => {\n    setVisible();\n    window.clearTimeout(timeout.current);\n  }, [setVisible]);\n\n  const fadeControls = useCallback(() => {\n    if (isPlaying && !shouldControlsRemainVisible) {\n      timeout.current = window.setTimeout(hideControls, FADE_TIMEOUT_IN_MS);\n    }\n  }, [hideControls, isPlaying, shouldControlsRemainVisible]);\n\n  const handleKeyup = useCallback(\n    (event: KeyboardEvent) => {\n      if (!shouldControlsRemainVisible) {\n        const isInteracting = elementRef.current?.contains(event.target as HTMLElement);\n        isInteracting ? showControls() : hideControls();\n      }\n    },\n    [elementRef, hideControls, showControls, shouldControlsRemainVisible]\n  );\n\n  useEffect(() => {\n    isVisible || shouldControlsRemainVisible ? showControls() : fadeControls();\n  }, [fadeControls, isVisible, showControls, shouldControlsRemainVisible]);\n\n  useEventListener('mousemove', showControls, elementRef);\n  useEventListener('mouseleave', hideControls, elementRef);\n  useEventListener('keyup', handleKeyup);\n\n  return { isVisible };\n}\n","import type { TrackOption, VideoTrack } from '../video-player.controls';\n\ntype FindArgs = {\n  activeTrack: TrackOption;\n  selectedVideoTrack: VideoTrack;\n};\n\n/**\n * @see findTrack\n */\nexport function findCaption({ selectedVideoTrack, activeTrack }: FindArgs) {\n  return findTrack(selectedVideoTrack?.captionTracks, activeTrack);\n}\n\n/**\n * @see findTrack\n */\nexport function findTranscript({ selectedVideoTrack, activeTrack }: FindArgs) {\n  return findTrack(selectedVideoTrack?.transcriptTracks, activeTrack);\n}\n\n/**\n * Attempts to find the related track based on the active track.\n */\nfunction findTrack(tracks: TrackOption[], activeTrack: TrackOption) {\n  return tracks.find((track) => track.srclang === activeTrack.srclang) || tracks[0] || null;\n}\n","import set from 'lodash/set';\n\nexport function getMetricsTrackName(htmlTrack: HTMLTrackElement | null) {\n  return htmlTrack ? formatName(htmlTrack.label) : 'off';\n}\n\nexport function getMetricsVideoName(videoName: string) {\n  return formatName(videoName);\n}\n\nexport type Events =\n  | 'user_play'\n  | 'autoplay'\n  | 'sound'\n  | 'cc'\n  | `sub_${string}`\n  | `audiotrack_${string}`\n  | `transcript_${string}`;\n\nexport function trackEvent(eventName: Events, videoName: string) {\n  if (window._satellite && window.digitalData) {\n    set(window.digitalData, 'click.clickID', `video_${eventName}`);\n    set(window.digitalData, 'page.attributes.videoName', videoName);\n    window._satellite.track?.('global_click');\n  }\n}\n\nfunction formatName(name: string) {\n  return name\n    .replace(/[^a-zA-Z0-9 ]/g, '')\n    .replace(/\\s/g, '_')\n    .toLowerCase();\n}\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n  return Math.min(max, Math.max(min, value));\n}\nexport {\n  clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/usePrevious.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n  const ref = React.useRef({ value, previous: value });\n  return React.useMemo(() => {\n    if (ref.current.value !== value) {\n      ref.current.previous = ref.current.value;\n      ref.current.value = value;\n    }\n    return ref.current.previous;\n  }, [value]);\n}\nexport {\n  usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/slider/src/slider.tsx\nimport * as React from \"react\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar PAGE_KEYS = [\"PageUp\", \"PageDown\"];\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar BACK_KEYS = {\n  \"from-left\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n  \"from-right\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowRight\"],\n  \"from-bottom\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n  \"from-top\": [\"Home\", \"PageDown\", \"ArrowUp\", \"ArrowLeft\"]\n};\nvar SLIDER_NAME = \"Slider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SLIDER_NAME);\nvar [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME, [\n  createCollectionScope\n]);\nvar [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);\nvar Slider = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      name,\n      min = 0,\n      max = 100,\n      step = 1,\n      orientation = \"horizontal\",\n      disabled = false,\n      minStepsBetweenThumbs = 0,\n      defaultValue = [min],\n      value,\n      onValueChange = () => {\n      },\n      onValueCommit = () => {\n      },\n      inverted = false,\n      form,\n      ...sliderProps\n    } = props;\n    const thumbRefs = React.useRef(/* @__PURE__ */ new Set());\n    const valueIndexToChangeRef = React.useRef(0);\n    const isHorizontal = orientation === \"horizontal\";\n    const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;\n    const [values = [], setValues] = useControllableState({\n      prop: value,\n      defaultProp: defaultValue,\n      onChange: (value2) => {\n        const thumbs = [...thumbRefs.current];\n        thumbs[valueIndexToChangeRef.current]?.focus();\n        onValueChange(value2);\n      }\n    });\n    const valuesBeforeSlideStartRef = React.useRef(values);\n    function handleSlideStart(value2) {\n      const closestIndex = getClosestValueIndex(values, value2);\n      updateValues(value2, closestIndex);\n    }\n    function handleSlideMove(value2) {\n      updateValues(value2, valueIndexToChangeRef.current);\n    }\n    function handleSlideEnd() {\n      const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n      const nextValue = values[valueIndexToChangeRef.current];\n      const hasChanged = nextValue !== prevValue;\n      if (hasChanged) onValueCommit(values);\n    }\n    function updateValues(value2, atIndex, { commit } = { commit: false }) {\n      const decimalCount = getDecimalCount(step);\n      const snapToStep = roundValue(Math.round((value2 - min) / step) * step + min, decimalCount);\n      const nextValue = clamp(snapToStep, [min, max]);\n      setValues((prevValues = []) => {\n        const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);\n        if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n          valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n          const hasChanged = String(nextValues) !== String(prevValues);\n          if (hasChanged && commit) onValueCommit(nextValues);\n          return hasChanged ? nextValues : prevValues;\n        } else {\n          return prevValues;\n        }\n      });\n    }\n    return /* @__PURE__ */ jsx(\n      SliderProvider,\n      {\n        scope: props.__scopeSlider,\n        name,\n        disabled,\n        min,\n        max,\n        valueIndexToChangeRef,\n        thumbs: thumbRefs.current,\n        values,\n        orientation,\n        form,\n        children: /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(\n          SliderOrientation,\n          {\n            \"aria-disabled\": disabled,\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...sliderProps,\n            ref: forwardedRef,\n            onPointerDown: composeEventHandlers(sliderProps.onPointerDown, () => {\n              if (!disabled) valuesBeforeSlideStartRef.current = values;\n            }),\n            min,\n            max,\n            inverted,\n            onSlideStart: disabled ? void 0 : handleSlideStart,\n            onSlideMove: disabled ? void 0 : handleSlideMove,\n            onSlideEnd: disabled ? void 0 : handleSlideEnd,\n            onHomeKeyDown: () => !disabled && updateValues(min, 0, { commit: true }),\n            onEndKeyDown: () => !disabled && updateValues(max, values.length - 1, { commit: true }),\n            onStepKeyDown: ({ event, direction: stepDirection }) => {\n              if (!disabled) {\n                const isPageKey = PAGE_KEYS.includes(event.key);\n                const isSkipKey = isPageKey || event.shiftKey && ARROW_KEYS.includes(event.key);\n                const multiplier = isSkipKey ? 10 : 1;\n                const atIndex = valueIndexToChangeRef.current;\n                const value2 = values[atIndex];\n                const stepInDirection = step * multiplier * stepDirection;\n                updateValues(value2 + stepInDirection, atIndex, { commit: true });\n              }\n            }\n          }\n        ) }) })\n      }\n    );\n  }\n);\nSlider.displayName = SLIDER_NAME;\nvar [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {\n  startEdge: \"left\",\n  endEdge: \"right\",\n  size: \"width\",\n  direction: 1\n});\nvar SliderHorizontal = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      min,\n      max,\n      dir,\n      inverted,\n      onSlideStart,\n      onSlideMove,\n      onSlideEnd,\n      onStepKeyDown,\n      ...sliderProps\n    } = props;\n    const [slider, setSlider] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setSlider(node));\n    const rectRef = React.useRef(void 0);\n    const direction = useDirection(dir);\n    const isDirectionLTR = direction === \"ltr\";\n    const isSlidingFromLeft = isDirectionLTR && !inverted || !isDirectionLTR && inverted;\n    function getValueFromPointer(pointerPosition) {\n      const rect = rectRef.current || slider.getBoundingClientRect();\n      const input = [0, rect.width];\n      const output = isSlidingFromLeft ? [min, max] : [max, min];\n      const value = linearScale(input, output);\n      rectRef.current = rect;\n      return value(pointerPosition - rect.left);\n    }\n    return /* @__PURE__ */ jsx(\n      SliderOrientationProvider,\n      {\n        scope: props.__scopeSlider,\n        startEdge: isSlidingFromLeft ? \"left\" : \"right\",\n        endEdge: isSlidingFromLeft ? \"right\" : \"left\",\n        direction: isSlidingFromLeft ? 1 : -1,\n        size: \"width\",\n        children: /* @__PURE__ */ jsx(\n          SliderImpl,\n          {\n            dir: direction,\n            \"data-orientation\": \"horizontal\",\n            ...sliderProps,\n            ref: composedRefs,\n            style: {\n              ...sliderProps.style,\n              [\"--radix-slider-thumb-transform\"]: \"translateX(-50%)\"\n            },\n            onSlideStart: (event) => {\n              const value = getValueFromPointer(event.clientX);\n              onSlideStart?.(value);\n            },\n            onSlideMove: (event) => {\n              const value = getValueFromPointer(event.clientX);\n              onSlideMove?.(value);\n            },\n            onSlideEnd: () => {\n              rectRef.current = void 0;\n              onSlideEnd?.();\n            },\n            onStepKeyDown: (event) => {\n              const slideDirection = isSlidingFromLeft ? \"from-left\" : \"from-right\";\n              const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n              onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n            }\n          }\n        )\n      }\n    );\n  }\n);\nvar SliderVertical = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      min,\n      max,\n      inverted,\n      onSlideStart,\n      onSlideMove,\n      onSlideEnd,\n      onStepKeyDown,\n      ...sliderProps\n    } = props;\n    const sliderRef = React.useRef(null);\n    const ref = useComposedRefs(forwardedRef, sliderRef);\n    const rectRef = React.useRef(void 0);\n    const isSlidingFromBottom = !inverted;\n    function getValueFromPointer(pointerPosition) {\n      const rect = rectRef.current || sliderRef.current.getBoundingClientRect();\n      const input = [0, rect.height];\n      const output = isSlidingFromBottom ? [max, min] : [min, max];\n      const value = linearScale(input, output);\n      rectRef.current = rect;\n      return value(pointerPosition - rect.top);\n    }\n    return /* @__PURE__ */ jsx(\n      SliderOrientationProvider,\n      {\n        scope: props.__scopeSlider,\n        startEdge: isSlidingFromBottom ? \"bottom\" : \"top\",\n        endEdge: isSlidingFromBottom ? \"top\" : \"bottom\",\n        size: \"height\",\n        direction: isSlidingFromBottom ? 1 : -1,\n        children: /* @__PURE__ */ jsx(\n          SliderImpl,\n          {\n            \"data-orientation\": \"vertical\",\n            ...sliderProps,\n            ref,\n            style: {\n              ...sliderProps.style,\n              [\"--radix-slider-thumb-transform\"]: \"translateY(50%)\"\n            },\n            onSlideStart: (event) => {\n              const value = getValueFromPointer(event.clientY);\n              onSlideStart?.(value);\n            },\n            onSlideMove: (event) => {\n              const value = getValueFromPointer(event.clientY);\n              onSlideMove?.(value);\n            },\n            onSlideEnd: () => {\n              rectRef.current = void 0;\n              onSlideEnd?.();\n            },\n            onStepKeyDown: (event) => {\n              const slideDirection = isSlidingFromBottom ? \"from-bottom\" : \"from-top\";\n              const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n              onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n            }\n          }\n        )\n      }\n    );\n  }\n);\nvar SliderImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeSlider,\n      onSlideStart,\n      onSlideMove,\n      onSlideEnd,\n      onHomeKeyDown,\n      onEndKeyDown,\n      onStepKeyDown,\n      ...sliderProps\n    } = props;\n    const context = useSliderContext(SLIDER_NAME, __scopeSlider);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...sliderProps,\n        ref: forwardedRef,\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          if (event.key === \"Home\") {\n            onHomeKeyDown(event);\n            event.preventDefault();\n          } else if (event.key === \"End\") {\n            onEndKeyDown(event);\n            event.preventDefault();\n          } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n            onStepKeyDown(event);\n            event.preventDefault();\n          }\n        }),\n        onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n          const target = event.target;\n          target.setPointerCapture(event.pointerId);\n          event.preventDefault();\n          if (context.thumbs.has(target)) {\n            target.focus();\n          } else {\n            onSlideStart(event);\n          }\n        }),\n        onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n          const target = event.target;\n          if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);\n        }),\n        onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n          const target = event.target;\n          if (target.hasPointerCapture(event.pointerId)) {\n            target.releasePointerCapture(event.pointerId);\n            onSlideEnd(event);\n          }\n        })\n      }\n    );\n  }\n);\nvar TRACK_NAME = \"SliderTrack\";\nvar SliderTrack = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSlider, ...trackProps } = props;\n    const context = useSliderContext(TRACK_NAME, __scopeSlider);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        \"data-orientation\": context.orientation,\n        ...trackProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nSliderTrack.displayName = TRACK_NAME;\nvar RANGE_NAME = \"SliderRange\";\nvar SliderRange = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSlider, ...rangeProps } = props;\n    const context = useSliderContext(RANGE_NAME, __scopeSlider);\n    const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const valuesCount = context.values.length;\n    const percentages = context.values.map(\n      (value) => convertValueToPercentage(value, context.min, context.max)\n    );\n    const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;\n    const offsetEnd = 100 - Math.max(...percentages);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-orientation\": context.orientation,\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        ...rangeProps,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          [orientation.startEdge]: offsetStart + \"%\",\n          [orientation.endEdge]: offsetEnd + \"%\"\n        }\n      }\n    );\n  }\n);\nSliderRange.displayName = RANGE_NAME;\nvar THUMB_NAME = \"SliderThumb\";\nvar SliderThumb = React.forwardRef(\n  (props, forwardedRef) => {\n    const getItems = useCollection(props.__scopeSlider);\n    const [thumb, setThumb] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n    const index = React.useMemo(\n      () => thumb ? getItems().findIndex((item) => item.ref.current === thumb) : -1,\n      [getItems, thumb]\n    );\n    return /* @__PURE__ */ jsx(SliderThumbImpl, { ...props, ref: composedRefs, index });\n  }\n);\nvar SliderThumbImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSlider, index, name, ...thumbProps } = props;\n    const context = useSliderContext(THUMB_NAME, __scopeSlider);\n    const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);\n    const [thumb, setThumb] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n    const isFormControl = thumb ? context.form || !!thumb.closest(\"form\") : true;\n    const size = useSize(thumb);\n    const value = context.values[index];\n    const percent = value === void 0 ? 0 : convertValueToPercentage(value, context.min, context.max);\n    const label = getLabel(index, context.values.length);\n    const orientationSize = size?.[orientation.size];\n    const thumbInBoundsOffset = orientationSize ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction) : 0;\n    React.useEffect(() => {\n      if (thumb) {\n        context.thumbs.add(thumb);\n        return () => {\n          context.thumbs.delete(thumb);\n        };\n      }\n    }, [thumb, context.thumbs]);\n    return /* @__PURE__ */ jsxs(\n      \"span\",\n      {\n        style: {\n          transform: \"var(--radix-slider-thumb-transform)\",\n          position: \"absolute\",\n          [orientation.startEdge]: `calc(${percent}% + ${thumbInBoundsOffset}px)`\n        },\n        children: [\n          /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(\n            Primitive.span,\n            {\n              role: \"slider\",\n              \"aria-label\": props[\"aria-label\"] || label,\n              \"aria-valuemin\": context.min,\n              \"aria-valuenow\": value,\n              \"aria-valuemax\": context.max,\n              \"aria-orientation\": context.orientation,\n              \"data-orientation\": context.orientation,\n              \"data-disabled\": context.disabled ? \"\" : void 0,\n              tabIndex: context.disabled ? void 0 : 0,\n              ...thumbProps,\n              ref: composedRefs,\n              style: value === void 0 ? { display: \"none\" } : props.style,\n              onFocus: composeEventHandlers(props.onFocus, () => {\n                context.valueIndexToChangeRef.current = index;\n              })\n            }\n          ) }),\n          isFormControl && /* @__PURE__ */ jsx(\n            BubbleInput,\n            {\n              name: name ?? (context.name ? context.name + (context.values.length > 1 ? \"[]\" : \"\") : void 0),\n              form: context.form,\n              value\n            },\n            index\n          )\n        ]\n      }\n    );\n  }\n);\nSliderThumb.displayName = THUMB_NAME;\nvar BubbleInput = (props) => {\n  const { value, ...inputProps } = props;\n  const ref = React.useRef(null);\n  const prevValue = usePrevious(value);\n  React.useEffect(() => {\n    const input = ref.current;\n    const inputProto = window.HTMLInputElement.prototype;\n    const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"value\");\n    const setValue = descriptor.set;\n    if (prevValue !== value && setValue) {\n      const event = new Event(\"input\", { bubbles: true });\n      setValue.call(input, value);\n      input.dispatchEvent(event);\n    }\n  }, [prevValue, value]);\n  return /* @__PURE__ */ jsx(\"input\", { style: { display: \"none\" }, ...inputProps, ref, defaultValue: value });\n};\nfunction getNextSortedValues(prevValues = [], nextValue, atIndex) {\n  const nextValues = [...prevValues];\n  nextValues[atIndex] = nextValue;\n  return nextValues.sort((a, b) => a - b);\n}\nfunction convertValueToPercentage(value, min, max) {\n  const maxSteps = max - min;\n  const percentPerStep = 100 / maxSteps;\n  const percentage = percentPerStep * (value - min);\n  return clamp(percentage, [0, 100]);\n}\nfunction getLabel(index, totalValues) {\n  if (totalValues > 2) {\n    return `Value ${index + 1} of ${totalValues}`;\n  } else if (totalValues === 2) {\n    return [\"Minimum\", \"Maximum\"][index];\n  } else {\n    return void 0;\n  }\n}\nfunction getClosestValueIndex(values, nextValue) {\n  if (values.length === 1) return 0;\n  const distances = values.map((value) => Math.abs(value - nextValue));\n  const closestDistance = Math.min(...distances);\n  return distances.indexOf(closestDistance);\n}\nfunction getThumbInBoundsOffset(width, left, direction) {\n  const halfWidth = width / 2;\n  const halfPercent = 50;\n  const offset = linearScale([0, halfPercent], [0, halfWidth]);\n  return (halfWidth - offset(left) * direction) * direction;\n}\nfunction getStepsBetweenValues(values) {\n  return values.slice(0, -1).map((value, index) => values[index + 1] - value);\n}\nfunction hasMinStepsBetweenValues(values, minStepsBetweenValues) {\n  if (minStepsBetweenValues > 0) {\n    const stepsBetweenValues = getStepsBetweenValues(values);\n    const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n    return actualMinStepsBetweenValues >= minStepsBetweenValues;\n  }\n  return true;\n}\nfunction linearScale(input, output) {\n  return (value) => {\n    if (input[0] === input[1] || output[0] === output[1]) return output[0];\n    const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n    return output[0] + ratio * (value - input[0]);\n  };\n}\nfunction getDecimalCount(value) {\n  return (String(value).split(\".\")[1] || \"\").length;\n}\nfunction roundValue(value, decimalCount) {\n  const rounder = Math.pow(10, decimalCount);\n  return Math.round(value * rounder) / rounder;\n}\nvar Root = Slider;\nvar Track = SliderTrack;\nvar Range = SliderRange;\nvar Thumb = SliderThumb;\nexport {\n  Range,\n  Root,\n  Slider,\n  SliderRange,\n  SliderThumb,\n  SliderTrack,\n  Thumb,\n  Track,\n  createSliderScope\n};\n//# sourceMappingURL=index.mjs.map\n","import type { CSSProperties } from 'react';\nimport type { PossibleThumbs, TSlider } from './slider.types';\n\ntype UseInlineGradient = Pick<\n  TSlider<PossibleThumbs, PossibleThumbs>,\n  'disabled' | 'offColor' | 'onColor' | 'orientation' | 'brandComponentTheme' | 'variant'\n> & {\n  /**\n   * Array of 3-tuples. First value determines \"on\" or \"off\", 0 or 1, respectively.\n   * The remainder specify the `on` percentages in the gradient [0,10], [40,50].\n   */\n  values: Tuple<3, number>[];\n  /** Whether the language displayed on the page is right to left */\n  isRtlLanguage?: boolean;\n};\n\nexport const defaultColorVariables = {\n  offColor: 'color-border-form',\n  onColor: 'color-primary',\n  disabledColor: 'color-bg-disabled',\n} as const;\n\nexport const primaryColorVariables = {\n  offColor: 'color-primary',\n  onColor: 'color-primary',\n} as const;\n\nconst customColorVariables = {\n  offColor: 'slider-gradient-off-color',\n  onColor: 'slider-gradient-on-color',\n};\n\n/**\n * This hook is used specifically to return css for the horizontal gradient in the `Slider` component\n * using the colors from the [style guide](/?path=/docs/library-styles-colors--colors)\n *\n * > Ideally this inline styling could eventually be replaced with css vars via TW plugin.\n */\nexport const useInlineGradient = ({\n  values,\n  disabled = false,\n  offColor = defaultColorVariables.offColor,\n  onColor = defaultColorVariables.onColor,\n  isRtlLanguage = false,\n  orientation = 'horizontal',\n  variant = 'default',\n  brandComponentTheme,\n}: UseInlineGradient): CSSProperties => {\n  const direction = getDirection({ isRtlLanguage, orientation });\n  const { on: gradientOnColor, off: gradientOffColor } = getGradientColors({\n    brandComponentTheme,\n    variant,\n    offColor,\n    onColor,\n  });\n  const gradientDisabledColor = `var(--${defaultColorVariables.disabledColor})`;\n  const on = `rgb(${disabled ? gradientDisabledColor : gradientOnColor})`;\n  const off = `rgb(${disabled ? gradientDisabledColor : gradientOffColor})`;\n  const collect = values.reduce((prev, val) => {\n    /** first value determines if section is filled or not */\n    const filled = Boolean(val[0]);\n    return `${prev}, ${filled ? on : off} ${val[1]}%, ${filled ? on : off} ${val[2]}%`;\n  }, ``);\n  const background = `linear-gradient(to ${direction}${collect})`;\n  return { background };\n};\n\nfunction getDirection({\n  orientation,\n  isRtlLanguage,\n}: Pick<UseInlineGradient, 'orientation' | 'isRtlLanguage'>) {\n  if (orientation === 'vertical') {\n    return 'top';\n  }\n  if (isRtlLanguage) {\n    return 'left';\n  }\n  return 'right';\n}\n\nfunction getGradientColors({\n  brandComponentTheme,\n  variant,\n  onColor,\n  offColor,\n}: Pick<UseInlineGradient, 'brandComponentTheme' | 'variant' | 'offColor' | 'onColor'>) {\n  const themeSuffix = brandComponentTheme ? `-${brandComponentTheme}` : '';\n  const presetVariables = variant === 'primary' ? primaryColorVariables : { onColor, offColor };\n  return {\n    off: `var(--${customColorVariables.offColor}${themeSuffix}, var(--${presetVariables.offColor}))`,\n    on: `var(--${customColorVariables.onColor}${themeSuffix}, var(--${presetVariables.onColor}))`,\n  };\n}\n\nexport default useInlineGradient;\n","import { useIsomorphicLayoutEffect } from 'usehooks-ts';\nimport { useState, useCallback } from 'react';\n\nconst emptyRect = {\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  width: 0,\n  height: 0,\n} as DOMRect;\n\n/**\n * This custom useResizeObserver hook fixes an issue with label alignment for the slider in Safari.\n * @param initialRect partial DOMRect to be used before measure. defaults to empty rect\n * @todo add debounce or raf throttle\n */\nexport const useResizeObserver = (initialRect: Partial<DOMRect> = emptyRect) => {\n  const [element, setElement] = useState<HTMLElement | null>();\n  const [rect, setRect] = useState<DOMRect>(initialRect as Readonly<DOMRect>);\n\n  const ref = useCallback((e: HTMLElement | null) => {\n    setElement(e);\n  }, []);\n\n  useIsomorphicLayoutEffect(() => {\n    const ro = new ResizeObserver((entries) => {\n      setRect(entries[0] ? entries[0].contentRect : (initialRect as Readonly<DOMRect>));\n    });\n    if (element) {\n      ro.observe(element);\n    }\n    return () => {\n      element && ro.unobserve(element);\n      setRect(emptyRect);\n    };\n  }, [element, initialRect]);\n\n  return [ref, rect] as const;\n};\n","import { forwardRef, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { useIsomorphicLayoutEffect } from 'usehooks-ts';\n// Using a custom useResizeObserver hook due to a label alignment issue with the slider in Safari when the useResizeObserver hook from usehooks-ts is used.\n// This is likely happening because of how on initial mount the bounding box size is not recorded.\nimport { useResizeObserver } from './use-resize-observer';\nimport cx from 'classnames';\nimport type { PossibleThumbs } from './slider.types';\n\ntype TThumbLabelProps<T extends PossibleThumbs, U extends T> = {\n  /** Whether the language is written right to left */\n  isRtlLanguage: boolean;\n  /** A tuple of labels corresponding to each input value, they are screen reader only labels and add additional context to the visible labels shown */\n  inputLabels: Tuple<U, string>;\n  /** array of labels */\n  labels: string[] | ReactNode[];\n  /** Whether the thumb label is displayed as text or a tooltip */\n  labelType: 'text' | 'tooltip';\n  /** array of normalized positions of label thumbs along the track */\n  valueRatios: number[];\n};\n\n// the thumb diameter\nexport const THUMB_W = 28;\n// the distance at which labels are joined with a LabelJoin\nexport const LABEL_JOIN_DISTANCE = 20;\nexport const JOIN_LABEL_LENGTH = 6;\n\nconst LABEL_JOIN_CENTER = LABEL_JOIN_DISTANCE / 2 + JOIN_LABEL_LENGTH / 2;\n\nconst tooltipClasses =\n  'relative h-max bg-bg text-text-alt text-left text-xs font-normal px-4 py-2.5 w-max border border-border';\n\nconst textClasses =\n  'absolute inline-block w-20 max-w-max -translate-x-2/4 whitespace-nowrap text-center font-bold';\n\nconst calculateLabelPositions = (\n  trackRect: DOMRect,\n  valueRatios: number[],\n  labelRefs: HTMLElement[],\n  isRtlLanguage: boolean\n) => {\n  const labelRects = labelRefs?.map((label) => label.getBoundingClientRect());\n  const xCoordinates = labelRects?.map((rect, i) => {\n    let x =\n      (trackRect?.width - THUMB_W) * (valueRatios[i] as number) + THUMB_W / 2 - rect?.width / 2;\n    if (x < trackRect?.left) {\n      x = 0;\n    } else if (x + rect?.width > trackRect?.right) {\n      x = trackRect?.right - rect?.width;\n    }\n    return isRtlLanguage ? -x : x;\n  });\n\n  if (isRtlLanguage) {\n    xCoordinates.reverse();\n  }\n\n  return { xCoordinates, labelRects };\n};\n\nconst adjustLabelOverlaps = (\n  xCoordinates: number[],\n  labelRects: DOMRect[],\n  trackRect: DOMRect,\n  isRtlLanguage: boolean\n) => {\n  const joinLabelXCoordinates = Array<number | null>(xCoordinates?.length).fill(null);\n\n  for (let i = 0; i < xCoordinates.length - 1; i++) {\n    const overlap =\n      (xCoordinates[i] as number) +\n      LABEL_JOIN_DISTANCE +\n      (labelRects[i] as DOMRect)?.width -\n      (xCoordinates[i + 1] as number);\n    if (overlap > 0) {\n      const limits = isRtlLanguage\n        ? {\n            left: -(trackRect.right - (labelRects[i] as DOMRect)?.width),\n            right: 0,\n            track: trackRect?.left,\n          }\n        : {\n            left: 0,\n            right: trackRect.right - (labelRects[i + 1] as DOMRect)?.width,\n            track: trackRect.right,\n          };\n\n      if ((xCoordinates[i] as number) - overlap / 2 < limits?.left) {\n        xCoordinates[i] = limits?.left;\n        xCoordinates[i + 1] =\n          (xCoordinates[i] as number) + (labelRects[i] as DOMRect)?.width + LABEL_JOIN_DISTANCE;\n      } else if (\n        (xCoordinates[i + 1] as number) + (labelRects[i + 1] as DOMRect)?.width + overlap / 2 >\n        limits.track\n      ) {\n        xCoordinates[i + 1] = limits.right;\n        xCoordinates[i] =\n          (xCoordinates[i + 1] as number) - (labelRects[i] as DOMRect)?.width - LABEL_JOIN_DISTANCE;\n      } else {\n        (xCoordinates[i] as number) -= overlap / 2;\n        (xCoordinates[i + 1] as number) += overlap / 2;\n      }\n      joinLabelXCoordinates[i] = isRtlLanguage\n        ? (xCoordinates[i] as number) + LABEL_JOIN_CENTER\n        : (xCoordinates[i + 1] as number) - LABEL_JOIN_CENTER;\n    }\n  }\n\n  for (let i = xCoordinates?.length - 1; i > 0; i--) {\n    const overlap =\n      (xCoordinates[i - 1] as number) +\n      (labelRects[i - 1] as DOMRect)?.width +\n      LABEL_JOIN_DISTANCE -\n      (xCoordinates[i] as number);\n    if (overlap > 0) {\n      (xCoordinates[i - 1] as number) -= overlap;\n      joinLabelXCoordinates[i - 1] = isRtlLanguage\n        ? (xCoordinates[i - 1] as number) + LABEL_JOIN_DISTANCE - JOIN_LABEL_LENGTH\n        : (xCoordinates[i] as number) - LABEL_JOIN_DISTANCE + JOIN_LABEL_LENGTH;\n    }\n  }\n\n  if (isRtlLanguage) {\n    const overlap = xCoordinates[0] as number;\n    const limit = -trackRect.right + (labelRects[labelRects?.length - 1] as DOMRect)?.width;\n    if (overlap < limit) {\n      xCoordinates[0] = limit;\n      for (let i = 0; i < xCoordinates?.length - 1; i++) {\n        if (joinLabelXCoordinates[i] !== null) {\n          joinLabelXCoordinates[i] =\n            (xCoordinates[i] as number) + LABEL_JOIN_DISTANCE - JOIN_LABEL_LENGTH;\n          xCoordinates[i + 1] =\n            (xCoordinates[i] as number) + (labelRects[i] as DOMRect)?.width + LABEL_JOIN_DISTANCE;\n        } else break;\n      }\n    }\n  } else {\n    const overlap = -(xCoordinates[0] as number);\n    if (overlap > 0) {\n      (xCoordinates[0] as number) += overlap;\n      for (let i = 0; i < xCoordinates?.length - 1; i++) {\n        if (joinLabelXCoordinates[i] !== null) {\n          joinLabelXCoordinates[i] = (joinLabelXCoordinates[i] as number) + overlap;\n          (xCoordinates[i + 1] as number) += overlap;\n        } else break;\n      }\n    }\n  }\n\n  return joinLabelXCoordinates;\n};\n\ntype LabelProps = {\n  /** Screenreader only label to give additional context to the visible labels */\n  additionalLabel?: string;\n  id: string;\n  /** Label content */\n  label: string | ReactNode;\n  /** The horizontal position for the label center correctly over the thumb */\n  labelPosition?: number;\n  /** Whether the label is shown as text or in a tooltip */\n  labelType: string;\n};\n\nfunction getTooltipTopOffset({ tooltipRect }: { tooltipRect?: DOMRect }) {\n  return tooltipRect ? tooltipRect?.height + 2 : 0;\n}\n\nconst Label = forwardRef<HTMLSpanElement, LabelProps>(\n  ({ additionalLabel, id, label, labelPosition, labelType }, forwardedRef) => {\n    return (\n      <span\n        id={id}\n        key={id}\n        ref={forwardedRef}\n        className={labelType === 'tooltip' ? tooltipClasses : textClasses}\n        style={{ transform: `translateX(${labelPosition}px` }}\n      >\n        <span aria-hidden=\"true\">{label}</span>\n        <span className=\"sr-only\">{additionalLabel}</span>\n      </span>\n    );\n  }\n);\n\nLabel.displayName = 'Label';\n\n/**\n * smart positioned text labels that position themselves as close to centered over their corresponding thumb positions\n * as possible. valueRatios[] are normalized thumb positions from 0 to 1. A layout effect and resize observer hook is used to prevent overlaps\n * @todo the layout effect is O(n) and could possibly be improved, and definitely cleaned up a bit\n */\nconst ThumbLabels = <T extends PossibleThumbs, U extends T>({\n  inputLabels,\n  isRtlLanguage,\n  labels,\n  labelType = 'text',\n  valueRatios,\n}: TThumbLabelProps<T, U>) => {\n  const [trackRef, trackRect] = useResizeObserver();\n  const [labelsX, setLabelsX] = useState<number[]>([]);\n  const labelRefs = useRef<HTMLElement[]>([]).current;\n  const [labelElementRects, setLabelRects] = useState<DOMRect[]>([]);\n  const [joinLabelXCoordinates, setJoinLabelXCoordinates] = useState<Array<number | null>>([]);\n  const [topOffsetState, setTopOffset] = useState<number>(0);\n\n  useIsomorphicLayoutEffect(() => {\n    const { xCoordinates, labelRects } = calculateLabelPositions(\n      trackRect,\n      valueRatios,\n      labelRefs,\n      isRtlLanguage\n    );\n    setLabelRects(labelRects);\n    const topOffset = getTooltipTopOffset({\n      tooltipRect: labelElementRects[0],\n    });\n    setTopOffset(topOffset);\n    const joinLabelXCoordinates = adjustLabelOverlaps(\n      xCoordinates,\n      labelRects,\n      trackRect,\n      isRtlLanguage\n    );\n    setJoinLabelXCoordinates(joinLabelXCoordinates);\n    setLabelsX(xCoordinates);\n  }, [trackRect, valueRatios, isRtlLanguage, topOffsetState, setTopOffset]);\n\n  return (\n    <span\n      ref={trackRef}\n      className={cx('absolute flex size-full justify-between', {\n        '-top-5': labelType === 'text',\n        '-z-1': labelType === 'tooltip',\n      })}\n      style={labelType === 'tooltip' ? { top: `-${topOffsetState}px` } : {}}\n    >\n      {labels?.map((label: ReactNode, i: number) => {\n        return (\n          <Label\n            // eslint-disable-next-line react/no-array-index-key\n            key={i}\n            id={`slider-thumb-label-${i}`}\n            label={label}\n            ref={(ref) => {\n              if (ref) {\n                // eslint-disable-next-line react-compiler/react-compiler\n                labelRefs[i] = ref;\n              }\n            }}\n            labelPosition={labelsX[i]}\n            labelType={labelType}\n            additionalLabel={inputLabels[i]}\n          />\n        );\n      })}\n      {joinLabelXCoordinates\n        .filter((value: number | null) => value !== null)\n        .map((value: number | null, i: number) => (\n          <span\n            className=\"text-text-alt absolute inline-block text-center before:content-['-']\"\n            aria-hidden=\"true\"\n            // eslint-disable-next-line react/no-array-index-key\n            key={i}\n            style={{\n              transform: `translateX(${value}px)`,\n            }}\n          />\n        ))}\n    </span>\n  );\n};\n\nexport default ThumbLabels;\n","import { useRef } from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport type { PossibleThumbs, TSlider } from './slider.types';\nimport useInlineGradient, { defaultColorVariables } from './use-inline-gradient';\nimport cx from 'classnames';\nimport ThumbLabels from './thumb-labels';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\n\n/**\n * A slider component that can have multiple thumbs. Each thumb can have a label and a value.\n * @see [Radix UI React Slider](https://www.radix-ui.com/primitives/docs/components/slider)\n */\nexport const Slider = <T extends PossibleThumbs, U extends T>({\n  disabled = false,\n  fillIndex = 0,\n  hiddenLegend = false,\n  inputLabels,\n  labelType = 'text',\n  language,\n  max = 1,\n  maxLabel,\n  min = 0,\n  minLabel,\n  offColor = defaultColorVariables.offColor,\n  onChange,\n  onColor = defaultColorVariables.onColor,\n  step = 1,\n  thumbLabelFn,\n  title,\n  values,\n  orientation = 'horizontal',\n  variant = 'default',\n  brandComponentTheme,\n}: TSlider<T, U>) => {\n  const isRtlLanguage = isRtl(language);\n  const isDefault = variant === 'default';\n  const isPrimary = variant === 'primary';\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isVertical = orientation === 'vertical';\n  const isHorizontal = orientation === 'horizontal';\n  const thumbRef = useRef<HTMLSpanElement>(null);\n\n  const valueRatios = values.map((val) => {\n    /** set each input's ratio between min and max. always clamped between 0 and 1 */\n    let valueRatio = (val - min) / (max - min);\n    if (valueRatio < 0) valueRatio = 0;\n    else if (valueRatio > 1) valueRatio = 1;\n    return valueRatio;\n  });\n\n  /** collect fill areas for thumb track. alternates 'on', 'off' */\n  const areas = values.map((_, i) => i % 2);\n  /** add starting fill index. do we start with 'on' or 'off' */\n  const fillAreas: OneLonger<Tuple<U, number>> =\n    fillIndex === 1\n      ? ([fillIndex, ...areas] as OneLonger<Tuple<U, number>>)\n      : ([...areas, fillIndex] as OneLonger<Tuple<U, number>>);\n  /** list of gradient values for thu */\n  const gradValues = fillAreas.reduce((prev, filled, i) => {\n    prev.push([\n      filled,\n      i === 0 ? 0 : (valueRatios[i - 1] as number) * 100,\n      i === fillAreas.length - 1 ? 100 : (valueRatios[i] as number) * 100,\n    ]);\n    return prev;\n  }, [] as Array<Tuple<3, number>>);\n\n  const inlineGradProps = useInlineGradient({\n    values: gradValues,\n    disabled,\n    onColor,\n    offColor,\n    isRtlLanguage,\n    orientation,\n    brandComponentTheme,\n  });\n  const defaultLabelFn = (val: number) => `${val}`;\n  const thumbLabels = values.map(thumbLabelFn || defaultLabelFn) as Tuple<U, string>;\n  const labels = isRtlLanguage ? thumbLabels.reverse() : thumbLabels;\n  const WrapperElement = values.length > 1 ? 'fieldset' : 'div';\n  const TitleElement = values.length > 1 ? 'legend' : 'p';\n\n  return (\n    <WrapperElement\n      className={cx('px-0.5', {\n        'text-text-disabled': disabled,\n        'h-full py-4': isVertical,\n        'mb-8 pt-8': isHorizontal,\n      })}\n    >\n      <TitleElement\n        className={cx('label w-full', {\n          'mb-4': labelType === 'tooltip',\n          'sr-only': hiddenLegend,\n        })}\n      >\n        {title}\n      </TitleElement>\n      <div\n        className={cx({\n          'relative z-10': labelType === 'tooltip',\n          'h-full': isVertical,\n        })}\n      >\n        <SliderPrimitive.Root\n          className={cx('relative flex touch-none select-none', {\n            'h-full justify-center': isVertical,\n            'h-10 w-full items-center': isHorizontal,\n          })}\n          dir={isRtlLanguage ? 'rtl' : 'ltr'}\n          disabled={disabled}\n          max={max}\n          min={min}\n          minStepsBetweenThumbs={1}\n          name={title}\n          step={step}\n          onValueChange={onChange}\n          value={values}\n          orientation={orientation}\n        >\n          <SliderPrimitive.Track\n            className={cx('slider-track', {\n              'slider-track--vertical': isVertical,\n              'slider-track--horizontal': isHorizontal,\n            })}\n            data-testid=\"slider-track\"\n            style={{ ...inlineGradProps }}\n          >\n            <SliderPrimitive.Range className=\"slider-range\" />\n          </SliderPrimitive.Track>\n          {values.map((_value, i) => {\n            return (\n              <SliderPrimitive.Thumb\n                // eslint-disable-next-line react/no-array-index-key\n                key={i}\n                className={cx('slider-thumb group', {\n                  'slider-thumb--horizontal': isHorizontal,\n                  'slider-thumb--vertical': isVertical,\n                  'slider-thumb--disabled': disabled,\n                  'slider-thumb--default': isDefault,\n                  'slider-thumb--primary': isPrimary,\n                  'slider-thumb--dark': isDark,\n                  'slider-thumb--light': isLight,\n                })}\n                // radix applies this name attribute to the generated input field rendered\n                name={`slider-input-${i}`}\n                // this id is applied to the span radix renders as the thumb\n                id={`slider-thumb-${i}`}\n                aria-valuetext={labels[i]}\n                asChild\n                {...(isHorizontal && { 'aria-labelledby': `slider-thumb-label-${i}` })}\n                {...(isVertical && { 'aria-label': inputLabels[i] })}\n              >\n                <span ref={thumbRef} className=\"relative block\">\n                  {labelType === 'tooltip' ? (\n                    // Tooltip arrow styles to ensure the arrow follows the tooltip correctly\n                    <span\n                      className={cx(\n                        'relative block size-full',\n                        'after:bg-bg after:border-border after:absolute after:-top-4 after:left-[calc(50%_-_6px)] after:inline-block after:size-3 after:rotate-[-135deg] after:border-l after:border-t group-hover:after:-top-[19px] group-focus:after:-top-[19px]'\n                      )}\n                    />\n                  ) : null}\n                </span>\n              </SliderPrimitive.Thumb>\n            );\n          })}\n          {isHorizontal ? (\n            <ThumbLabels\n              labels={labels}\n              inputLabels={inputLabels}\n              valueRatios={valueRatios}\n              labelType={labelType}\n              isRtlLanguage={isRtlLanguage}\n            />\n          ) : null}\n        </SliderPrimitive.Root>\n      </div>\n      {minLabel && maxLabel ? (\n        <div className=\"relative flex justify-between\">\n          <div aria-hidden=\"true\">{minLabel}</div>\n          <div aria-hidden=\"true\">{maxLabel}</div>\n        </div>\n      ) : null}\n    </WrapperElement>\n  );\n};\n\nexport default Slider;\n","export * from './slider';\nexport * from './slider.types';\n","export * from './lib';\n","import classnames from 'classnames';\n\ntype Args = {\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nexport const getTextColorClasses = ({ brandComponentTheme }: Args) => {\n  const isLight = brandComponentTheme === 'light';\n  const isDark = brandComponentTheme === 'dark';\n  return classnames({\n    'text-primary brand-ht:text-text-inverse': isLight,\n    'text-text-inverse brand-gu:!text-primary brand-hi-refresh:!text-primary brand-es:!text-primary brand-nd:!text-primary':\n      isDark,\n  });\n};\n\nexport const getBackgroundColorClasses = ({ brandComponentTheme }: Args) => {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  return classnames({\n    'bg-bg brand-ey:bg-bg-light brand-ou:bg-secondary': !isDark && !isLight,\n    'bg-bg-dark brand-es:bg-bg brand-gu:bg-bg brand-hi-refresh:bg-bg brand-nd:bg-bg': isDark,\n    'bg-bg-light brand-es:bg-bg brand-ey:bg-bg brand-gu:bg-bg brand-hi-refresh:bg-bg brand-nd:bg-bg':\n      isLight,\n  });\n};\n\nexport const getClasses = ({ brandComponentTheme }: Args) => {\n  return classnames(\n    getTextColorClasses({ brandComponentTheme }),\n    getBackgroundColorClasses({ brandComponentTheme })\n  );\n};\n","import { useIsClient } from 'usehooks-ts';\nimport { Slider } from '@dx-ui/osc-slider';\nimport classnames from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { getClasses } from './util/classes';\nimport type { VideoControlsProps } from './video-player.controls';\nimport type { PlayerState, useVideoPlayer } from './hooks/use-video-player';\n\ntype VolumeSliderProps = Pick<VideoControlsProps, 'brandComponentTheme'> &\n  Pick<ReturnType<typeof useVideoPlayer>['videoControlsProps'], 'updateVolume' | 'playerState'>;\n\nconst volumeConfig = {\n  min: 0,\n  max: 100,\n  step: 5,\n};\n\nexport const lowestVolume: PlayerState['volume'] = [volumeConfig.step];\n\nexport const initialVolume: PlayerState['volume'] = [\n  Math.max(volumeConfig.step, Math.floor(volumeConfig.max / 2)),\n];\n\nexport function VolumeSlider({\n  brandComponentTheme,\n  playerState,\n  updateVolume,\n}: VolumeSliderProps) {\n  const isClient = useIsClient();\n  const { t, i18n } = useTranslation('osc-video-player');\n  const isDark = brandComponentTheme === 'dark';\n  const volume = playerState.isMuted ? 0 : playerState.volume[0];\n\n  if (!isClient) {\n    return null;\n  }\n\n  return (\n    // eslint-disable-next-line @nx/workspace-form-requires-method\n    <form\n      className={classnames(\n        'sr-only !absolute bottom-12 shadow group-has-[:focus]:not-sr-only',\n        'group-has-[:focus]:!h-32 group-has-[:focus]:!w-full group-has-[:focus]:lg:!h-40',\n        'group-hover:not-sr-only group-hover:!h-32 group-hover:!w-full group-hover:lg:!h-40',\n        getClasses({ brandComponentTheme })\n      )}\n    >\n      <Slider\n        title={t('volume.label')}\n        hiddenLegend={true}\n        inputLabels={[t('volume.button')]}\n        thumbLabelFn={() => t('volume.ariaLabel', { volume })}\n        values={[volume]}\n        onChange={updateVolume}\n        language={i18n.language}\n        min={volumeConfig.min}\n        max={volumeConfig.max}\n        step={volumeConfig.step}\n        fillIndex={1}\n        orientation=\"vertical\"\n        onColor={isDark ? 'color-bg' : 'color-primary'}\n        variant=\"primary\"\n        brandComponentTheme={brandComponentTheme}\n      />\n    </form>\n  );\n}\n","import { useEventListener, useOnClickOutside, useToggle } from 'usehooks-ts';\nimport { useId, useRef } from 'react';\nimport { getKeyDownNavigation } from '@dx-ui/utilities-accessibility';\n\n/**\n * Hook to manage the state of a popup menu.\n */\nexport function useMenu() {\n  const menuId = useId();\n  const popupButtonRef = useRef<React.ElementRef<'button'>>(null);\n  const popupMenuRef = useRef<React.ElementRef<'div'>>(null);\n  const [isOpen, toggleMenu, setIsOpen] = useToggle();\n  const closeMenu = () => setIsOpen(false);\n\n  return {\n    menuId,\n    isOpen,\n    toggleMenu,\n    closeMenu,\n    popupButtonRef,\n    popupMenuRef,\n  };\n}\n\ntype UseEventListenersOptions = Pick<\n  ReturnType<typeof useMenu>,\n  'popupButtonRef' | 'popupMenuRef'\n> & {\n  resetMenu: VoidFunction;\n};\n\n/**\n * Hook to manage event listeners for a popup menu.\n */\nexport function useEventListeners(options: UseEventListenersOptions) {\n  const { popupButtonRef, popupMenuRef, resetMenu } = options;\n  const focusButton = () => popupButtonRef.current?.focus();\n\n  useOnClickOutside(popupMenuRef, (event) => {\n    if (!popupButtonRef.current?.contains(event.target as HTMLElement)) {\n      resetMenu();\n    }\n  });\n\n  useEventListener(\n    'keydown',\n    (event) => {\n      event.stopPropagation();\n      switch (event.key) {\n        case 'Tab':\n          window.requestAnimationFrame(() => {\n            if (!popupMenuRef.current?.contains(document.activeElement)) {\n              resetMenu();\n              focusButton();\n            }\n          });\n          break;\n        case 'Escape':\n          resetMenu();\n          focusButton();\n          break;\n        case 'ArrowUp':\n        case 'ArrowDown':\n          {\n            const activeList = popupMenuRef.current?.querySelector('ul');\n            const elements = Array.from(activeList?.querySelectorAll('button') || []);\n            const onKeyDownNavigation = getKeyDownNavigation({ elements });\n            onKeyDownNavigation(event);\n          }\n          break;\n        default:\n          break;\n      }\n    },\n    popupMenuRef\n  );\n}\n","/**\n * Ensures the cue has text content.\n */\nexport function isValidCue(cue: VTTCue) {\n  return cue.text.trim().length > 0;\n}\n\n/**\n * Generates a unique cue id.\n */\nexport function getCueId(cue: VTTCue) {\n  return ['cue', cue.id, crypto.randomUUID()].filter(Boolean).join('-');\n}\n\n/**\n * Parses the VTTCue text and returns the text content.\n */\nexport function getCueText(cue: VTTCue) {\n  try {\n    const fragment = cue.getCueAsHTML();\n    const text = fragment.textContent || '';\n    const html = new XMLSerializer().serializeToString(fragment);\n    return { text, html };\n  } catch {\n    return { text: cue.text, html: cue.text };\n  }\n}\n\n/**\n * The smallest buffer to add to the cue startTime when adjusting the\n * video currentTime due to precision mismatch related to activeCues.\n * https://stackoverflow.com/questions/55777551/how-do-i-avoid-floating-point-rounding-errors-in-webvtt\n */\nexport const CUE_BUFFER = 0.00001;\n","import type { useId } from 'react';\n\nexport type EventType = ValuesOf<typeof VIDEO_EVENTS>;\n\nexport type VideoEventDetail = {\n  type: EventType;\n  id: ReturnType<typeof useId>;\n};\n\nexport const VIDEO_EVENTS = {\n  PAUSE_OTHERS: 'pause-others',\n  PAUSE_SELF: 'pause-self',\n} as const;\n\nexport const VIDEO_UPDATE_EVENT = 'video-player-update';\n\nexport const dispatchVideoEvent = (detail: VideoEventDetail) => {\n  window.dispatchEvent(new CustomEvent<VideoEventDetail>(VIDEO_UPDATE_EVENT, { detail }));\n};\n","import { useRef, useState, useEffect, useCallback, useId } from 'react';\nimport { useEventListener } from 'usehooks-ts';\nimport { useAutoPlay } from './use-autoplay';\nimport { useTrackQuery } from '../hooks/use-track-query';\nimport { useFadeControls } from './use-fade-controls';\nimport { findCaption, findTranscript } from '../util/matchers';\nimport { getMetricsTrackName, getMetricsVideoName, trackEvent } from '../util/metrics';\n\nimport type { VideoTrack, TrackOption, BaseVideoTrack } from '../video-player.controls';\nimport { initialVolume, lowestVolume } from '../video-player.volume-slider';\nimport { useMenu } from './use-control-menu';\nimport { CUE_BUFFER } from '../util/cue';\nimport type { VideoEventDetail } from '../util/event-emitter';\nimport { dispatchVideoEvent, VIDEO_EVENTS, VIDEO_UPDATE_EVENT } from '../util/event-emitter';\nimport type { VideoProps } from '../video-player.player';\n\nexport type VideoPlayerProps = BaseVideoTrack &\n  Pick<VideoProps, 'isAutoPlay' | 'captionData'> &\n  Partial<{\n    hasAudio: boolean;\n    playerId: ReturnType<typeof useId>;\n    audioTracks: BaseVideoTrack[];\n    wrapperElement: React.RefObject<HTMLDivElement>;\n    shouldControlsRemainVisible?: boolean;\n  }>;\n\nexport type PlayerState = {\n  isMuted: boolean;\n  isPlaying: boolean;\n  showCaptions: boolean;\n  activeCaptionTrack: TrackOption | null;\n  activeTranscript: TrackOption | null;\n  activeVideoTrack: VideoTrack | null;\n  volume: Tuple<1, number>;\n};\n\nconst defaultPlayerState: PlayerState = {\n  isMuted: true,\n  isPlaying: true,\n  showCaptions: false,\n  activeCaptionTrack: null,\n  activeTranscript: null,\n  activeVideoTrack: null,\n  volume: initialVolume,\n};\n\n/**\n * Hook to manage the state and behavior of the video player.\n */\nexport function useVideoPlayer(props: VideoPlayerProps) {\n  const videoElement = useRef<HTMLVideoElement>(null);\n  const internalPlayerId = useId();\n  const playerId = props.playerId ?? internalPlayerId;\n  const hasAudio = props.hasAudio ?? true;\n  const hookProps = { ...props, videoElement };\n  const [playerState, setPlayerState] = useState<PlayerState>(() => {\n    try {\n      const videoPlayerSettings: Partial<PlayerState> = JSON.parse(\n        localStorage.getItem('videoPlayerSettings') || '{}'\n      );\n      return { ...defaultPlayerState, ...videoPlayerSettings };\n    } catch {\n      return defaultPlayerState;\n    }\n  });\n  const optionsState = useTrackQuery(hookProps);\n  const controlsState = useFadeControls({ ...hookProps, ...playerState });\n  const settingsMenu = useMenu();\n  const activeVideo = playerState.activeVideoTrack || optionsState[0];\n  const videoName = getMetricsVideoName(props.videoName ?? '');\n\n  const playVideo = useCallback(() => {\n    void videoElement.current?.play()?.catch(() => null);\n  }, []);\n\n  const pauseVideo = useCallback(() => videoElement.current?.pause(), []);\n\n  const muteVideo = useCallback(() => {\n    if (videoElement.current) {\n      videoElement.current.muted = true;\n      videoElement.current.volume = 0;\n    }\n  }, []);\n\n  const unmuteVideo = useCallback(([volume]: PlayerState['volume']) => {\n    if (videoElement.current) {\n      videoElement.current.muted = false;\n      videoElement.current.volume = volume / 100;\n    }\n  }, []);\n\n  function togglePlayButton() {\n    setPlayerState((playerState) => {\n      const isPlaying = !playerState.isPlaying;\n      if (isPlaying) {\n        playVideo();\n        if (hasAudio) {\n          dispatchVideoEvent({ type: VIDEO_EVENTS.PAUSE_OTHERS, id: playerId });\n        }\n        trackEvent('user_play', videoName);\n      } else {\n        pauseVideo();\n      }\n      return { ...playerState, isPlaying };\n    });\n  }\n\n  function persistSettings(state: Partial<PlayerState>) {\n    localStorage.setItem('videoPlayerSettings', JSON.stringify(state));\n  }\n\n  function performAudioActions({ isMuted, isPlaying, volume }: PlayerState) {\n    if (isMuted) {\n      muteVideo();\n    } else {\n      unmuteVideo(volume);\n      if (isPlaying) {\n        dispatchVideoEvent({ type: VIDEO_EVENTS.PAUSE_OTHERS, id: playerId });\n      }\n    }\n    persistSettings({ volume });\n  }\n\n  function updateVolume(volume: PlayerState['volume']) {\n    setPlayerState((playerState) => {\n      const isMuted = volume[0] <= 0;\n      const state = { ...playerState, isMuted, volume };\n      performAudioActions(state);\n      return state;\n    });\n  }\n\n  function toggleMuteButton() {\n    setPlayerState((playerState) => {\n      const isMuted = !playerState.isMuted;\n      const volume = playerState.volume[0] <= 0 ? lowestVolume : playerState.volume;\n      const state = { ...playerState, isMuted, volume };\n      trackEvent('sound', videoName);\n      performAudioActions(state);\n      return state;\n    });\n  }\n\n  function toggleCaptions() {\n    setPlayerState((playerState) => {\n      trackEvent('cc', videoName);\n      const showCaptions = !playerState.showCaptions;\n      return { ...playerState, showCaptions };\n    });\n  }\n\n  function updateCaption(selectedCaption: PlayerState['activeCaptionTrack']) {\n    setPlayerState((playerState) => {\n      const isSingleCaption = (activeVideo?.captionTracks?.length ?? 1) === 1;\n      const trackName = getMetricsTrackName(selectedCaption);\n      const eventName = isSingleCaption ? 'cc' : (`sub_${trackName}` as const);\n      trackEvent(eventName, videoName);\n      return {\n        ...playerState,\n        showCaptions: Boolean(selectedCaption),\n        activeCaptionTrack: selectedCaption || playerState.activeCaptionTrack,\n      };\n    });\n  }\n\n  function updateTranscript(selectedTranscript: PlayerState['activeTranscript']) {\n    setPlayerState((playerState) => {\n      const trackName = getMetricsTrackName(selectedTranscript);\n      const eventName = `transcript_${trackName}` as const;\n      trackEvent(eventName, videoName);\n      return { ...playerState, activeTranscript: selectedTranscript };\n    });\n  }\n\n  function updateAudioTrack(selectedVideoTrack: NonNullable<PlayerState['activeVideoTrack']>) {\n    setPlayerState((playerState) => {\n      if (playerState.activeVideoTrack?.videoUrl === selectedVideoTrack.videoUrl) {\n        return playerState;\n      }\n\n      const activeCaptionTrack = playerState.activeCaptionTrack\n        ? findCaption({ selectedVideoTrack, activeTrack: playerState.activeCaptionTrack })\n        : null;\n\n      const activeTranscript = playerState.activeTranscript\n        ? findTranscript({ selectedVideoTrack, activeTrack: playerState.activeTranscript })\n        : null;\n\n      if (videoElement.current) {\n        const isGroupMatch = activeVideo?.videoGroup === selectedVideoTrack.videoGroup;\n        const currentTime = isGroupMatch ? videoElement.current.currentTime : 0;\n        videoElement.current.src = selectedVideoTrack.videoUrl;\n        videoElement.current.currentTime = currentTime;\n      }\n\n      const videoLabel = getMetricsVideoName(selectedVideoTrack.videoLabel || '');\n      const eventName = `audiotrack_${videoLabel}` as const;\n      trackEvent(eventName, videoName);\n      playerState.isPlaying ? playVideo() : pauseVideo();\n\n      return {\n        ...playerState,\n        activeTranscript,\n        activeCaptionTrack,\n        activeVideoTrack: selectedVideoTrack,\n      };\n    });\n  }\n\n  function closeTranscript() {\n    updateTranscript(null);\n    settingsMenu.popupButtonRef.current?.focus();\n  }\n\n  function onCueSelect(cue: VTTCue) {\n    if (videoElement.current) {\n      const adjustedTime = cue.startTime + CUE_BUFFER;\n      videoElement.current.currentTime = adjustedTime;\n    }\n  }\n\n  const isAutoPlay = useAutoPlay({\n    isAutoPlay: props.isAutoPlay ?? defaultPlayerState.isPlaying,\n  });\n\n  useEffect(() => {\n    setPlayerState((playerState) => {\n      if (isAutoPlay) {\n        muteVideo();\n        playVideo();\n      } else {\n        unmuteVideo(playerState.volume);\n        pauseVideo();\n      }\n      return {\n        ...playerState,\n        isMuted: isAutoPlay,\n        isPlaying: isAutoPlay,\n      };\n    });\n  }, [isAutoPlay, muteVideo, pauseVideo, playVideo, unmuteVideo]);\n\n  useEffect(() => {\n    if (playerState.showCaptions) {\n      const inActiveCaptionTracks = (activeVideo?.captionTracks ?? []).filter(\n        (option): option is HTMLTrackElement => option.src !== playerState.activeCaptionTrack?.src\n      );\n\n      if (inActiveCaptionTracks.length) {\n        inActiveCaptionTracks.forEach((track) => {\n          track.track.oncuechange = null;\n        });\n      }\n\n      if (playerState.activeCaptionTrack) {\n        // eslint-disable-next-line react-compiler/react-compiler\n        playerState.activeCaptionTrack.track.oncuechange = () => {\n          setPlayerState((playerState) => ({\n            ...playerState,\n            activeCaptionTrack: playerState.activeCaptionTrack,\n          }));\n        };\n      }\n    } else {\n      if (playerState.activeCaptionTrack) {\n        playerState.activeCaptionTrack.track.oncuechange = null;\n      }\n    }\n  }, [activeVideo?.captionTracks, playerState.activeCaptionTrack, playerState.showCaptions]);\n\n  useEventListener('metrics-ready', () => {\n    if (isAutoPlay && videoName) {\n      trackEvent('autoplay', videoName);\n    }\n  });\n\n  useEventListener(VIDEO_UPDATE_EVENT, (event: CustomEvent<VideoEventDetail>) => {\n    const isPauseOthersEvent = event.detail.type === VIDEO_EVENTS.PAUSE_OTHERS;\n    const isPauseSelfEvent = event.detail.type === VIDEO_EVENTS.PAUSE_SELF;\n    const isPauseEvent = isPauseOthersEvent || isPauseSelfEvent;\n\n    if (hasAudio && playerState.isPlaying && isPauseEvent) {\n      const isOtherVideo = event.detail.id !== playerId;\n      const isSameVideo = event.detail.id === playerId;\n      const shouldPauseAll = isPauseOthersEvent && isOtherVideo;\n      const shouldPauseSelf = isPauseSelfEvent && isSameVideo;\n      if (shouldPauseAll || shouldPauseSelf) {\n        togglePlayButton();\n      }\n    }\n  });\n\n  return {\n    videoProps: {\n      videoElement,\n    },\n    videoCaptionProps: {\n      showCaptions: playerState.showCaptions,\n      activeCaptionTrack: playerState.activeCaptionTrack,\n    },\n    videoTranscriptProps: {\n      activeTranscript: playerState.activeTranscript,\n      closeTranscript,\n      onCueSelect,\n    },\n    videoControlsProps: {\n      controlsState,\n      activeVideo,\n      playerState,\n      optionsState,\n      togglePlayButton,\n      toggleMuteButton,\n      toggleCaptions,\n      settingsMenu,\n      updateCaption,\n      updateTranscript,\n      updateAudioTrack,\n      updateVolume,\n      videoElement,\n      hasAudio,\n    },\n  };\n}\n","import classnames from 'classnames';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { logWarning } from '@dx-ui/framework-logger';\nimport { useAutoPlay } from './hooks/use-autoplay';\n\ntype VideoElement = React.ComponentProps<'video'>;\n\nexport type VideoProps = Omit<VideoElement, 'src' | 'autoPlay' | 'id' | 'poster'> & {\n  /**\n   * The location (URL) of the video file\n   */\n  videoUrl: NonNullable<VideoElement['src']>;\n  /**\n   * Ref that gets added to the video element.\n   */\n  videoElement: React.RefObject<HTMLVideoElement>;\n  /**\n   * The poster for the video\n   */\n  posterImageUrl?: VideoElement['poster'];\n  videoId?: VideoElement['id'];\n  /**\n   * When present, the video will automatically start playing.\n   */\n  isAutoPlay?: VideoElement['autoPlay'];\n  /**\n   * Caption link and text\n   */\n  captionData?: CaptionProps;\n  /**\n   * Classname for the Video tag\n   */\n  videoClassName?: React.ComponentProps<'div'>['className'];\n  /**\n   * Classname for the Figure tag\n   */\n  figureClassName?: React.ComponentProps<'div'>['className'];\n};\n\n/**\n * Provides the ability to play videos on a continuous loop with optional caption.\n */\nexport function Video({\n  videoUrl,\n  posterImageUrl,\n  videoElement,\n  videoId,\n  captionData,\n  isAutoPlay = true,\n  muted = isAutoPlay,\n  figureClassName,\n  videoClassName,\n  ...rest\n}: VideoProps) {\n  const preventPreload = posterImageUrl && !isAutoPlay;\n  const autoPlay = useAutoPlay({ isAutoPlay });\n\n  return (\n    <figure className={figureClassName}>\n      {videoUrl ? (\n        <div className={classnames('relative w-full overflow-hidden', rest.className)}>\n          <video\n            id={videoId}\n            data-testid=\"video-player\"\n            loop\n            playsInline\n            {...rest}\n            className={classnames('bg-bg-alt w-full object-cover', videoClassName)}\n            src={videoUrl}\n            poster={posterImageUrl}\n            autoPlay={autoPlay}\n            muted={muted}\n            ref={videoElement}\n            crossOrigin=\"anonymous\"\n            preload={preventPreload ? 'none' : undefined}\n            onError={(e) => {\n              logWarning(\n                'OSCVideoPlayer',\n                new Error('video onError'),\n                `Failed to load ${videoUrl}`\n              );\n              rest.onError?.(e);\n            }}\n          />\n        </div>\n      ) : null}\n\n      {captionData ? <Caption {...captionData} /> : null}\n    </figure>\n  );\n}\n","import classnames from 'classnames';\nimport { forwardRef } from 'react';\nimport type { VideoControlsProps } from './video-player.controls';\nimport { getClasses } from './util/classes';\n\ntype ControlButtonProps = Omit<React.ComponentProps<'button'>, 'type'> &\n  Pick<VideoControlsProps, 'brandComponentTheme'> & {\n    iconContent: React.ReactNode;\n    wrapperClassName?: React.ComponentProps<'li'>['className'];\n  };\n\nconst ControlButton = forwardRef<HTMLButtonElement, ControlButtonProps>(function ControlButton(\n  props,\n  ref\n) {\n  const { brandComponentTheme, children, iconContent, wrapperClassName, ...buttonProps } = props;\n  return (\n    <li className={wrapperClassName}>\n      <button\n        {...buttonProps}\n        ref={ref}\n        type=\"button\"\n        className={classnames(\n          'bg-bg z-1 focus:z-2 relative inline-flex size-12 items-center justify-center',\n          getClasses({ brandComponentTheme }),\n          buttonProps.className\n        )}\n      >\n        {iconContent}\n      </button>\n      {children}\n    </li>\n  );\n});\n\nexport { ControlButton };\n","import { Icon } from '@dx-ui/osc-icon';\nimport classnames from 'classnames';\nimport type { VideoControlsProps } from './video-player.controls';\n\nexport function ControlIcon({\n  brandComponentTheme,\n  ...iconProps\n}: React.ComponentProps<typeof Icon> & Pick<VideoControlsProps, 'brandComponentTheme'>) {\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  return (\n    <Icon\n      {...iconProps}\n      className={classnames(\n        'fill-primary',\n        {\n          'fill-text-inverse brand-es:fill-primary brand-gu:fill-primary brand-hi-refresh:fill-primary brand-nd:fill-primary':\n            isDark,\n          'brand-ht:fill-text-inverse': isLight,\n        },\n        iconProps.className\n      )}\n    />\n  );\n}\n","import { useEffect, useState } from 'react';\nimport classnames from 'classnames';\nimport type { useMenu } from './hooks/use-control-menu';\nimport type { VideoControlsProps } from './video-player.controls';\nimport { getClasses } from './util/classes';\n\nexport function ControlMenu(\n  props: ReturnType<typeof useMenu> &\n    Pick<VideoControlsProps, 'brandComponentTheme'> &\n    Pick<React.ComponentProps<'div'>, 'children' | 'className'> & {\n      wrapperRef: React.RefObject<HTMLElement>;\n    }\n) {\n  const { brandComponentTheme, menuId, popupMenuRef, isOpen, children, className } = props;\n  const isDark = brandComponentTheme === 'dark';\n  const maxHeight = useSafeMaxHeight(props);\n\n  return (\n    <div\n      id={menuId}\n      ref={popupMenuRef}\n      style={maxHeight ? { maxHeight: `${maxHeight}px` } : {}}\n      className={classnames(\n        'border-border absolute bottom-full start-0 w-full border-y shadow-md md:min-w-60',\n        getClasses({ brandComponentTheme }),\n        {\n          'overflow-y-auto overscroll-contain': Boolean(maxHeight),\n          'border-bg-dark': isDark,\n          'motion-safe:animate-fadein': isOpen,\n          'motion-safe:animate-fadeout': !isOpen,\n          hidden: !isOpen,\n        },\n        className\n      )}\n    >\n      {children}\n    </div>\n  );\n}\n\nfunction useSafeMaxHeight(props: React.ComponentProps<typeof ControlMenu>) {\n  const [maxHeight, setMaxHeight] = useState<number | null>(null);\n  const { isOpen, wrapperRef, popupMenuRef, popupButtonRef } = props;\n\n  useEffect(() => {\n    const wrapperRect = wrapperRef.current?.getBoundingClientRect();\n    const menuRect = popupMenuRef.current?.getBoundingClientRect();\n    const buttonRect = popupButtonRef.current?.getBoundingClientRect();\n\n    setMaxHeight(() => {\n      if (isOpen && menuRect && wrapperRect && buttonRect) {\n        const offset = wrapperRect.bottom - menuRect.bottom;\n        const buttonOffset = buttonRect.height / 2;\n        return wrapperRect.height - offset - buttonOffset;\n      }\n      return null;\n    });\n  }, [isOpen, popupButtonRef, popupMenuRef, wrapperRef]);\n\n  return maxHeight;\n}\n","import classnames from 'classnames';\nimport type { VideoControlsProps } from './video-player.controls';\nimport { getClasses } from './util/classes';\n\nexport function ControlList(\n  props: Omit<React.ComponentProps<'ul'>, 'role'> & Pick<VideoControlsProps, 'brandComponentTheme'>\n) {\n  const { children, brandComponentTheme, ...listProps } = props;\n\n  return (\n    <ul\n      {...listProps}\n      role=\"menu\"\n      className={classnames(\n        'motion-safe:animate-fadein divide-border flex w-full flex-col divide-y',\n        getClasses({ brandComponentTheme }),\n        listProps.className\n      )}\n    >\n      {children}\n    </ul>\n  );\n}\n","import classnames from 'classnames';\nimport type { VideoControlsProps } from './video-player.controls';\nimport { getTextColorClasses } from './util/classes';\n\nexport function ControlItem({\n  brandComponentTheme,\n  beforeSection,\n  afterSection,\n  children,\n  wrapperClassName,\n  ...buttonProps\n}: {\n  beforeSection?: React.ReactNode;\n  afterSection?: React.ReactNode;\n} & Omit<React.ComponentProps<'button'>, 'type'> &\n  Pick<VideoControlsProps, 'brandComponentTheme'> & {\n    wrapperClassName?: React.ComponentProps<'li'>['className'];\n  }) {\n  return (\n    <li className={classnames('p-1.5', wrapperClassName)}>\n      <button\n        {...buttonProps}\n        type=\"button\"\n        className={classnames(\n          'focus:z-2 relative flex w-full items-center gap-1 p-1 text-start',\n          buttonProps.className\n        )}\n      >\n        {beforeSection}\n        <span\n          className={classnames(\n            'text-primary underline',\n            getTextColorClasses({ brandComponentTheme })\n          )}\n        >\n          {children}\n        </span>\n        {afterSection}\n      </button>\n    </li>\n  );\n}\n","import classnames from 'classnames';\nimport { useState } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport type { useMenu } from './hooks/use-control-menu';\nimport { useEventListeners } from './hooks/use-control-menu';\nimport { ControlIcon } from './video-player.control-icon';\nimport { ControlButton } from './video-player.control-button';\nimport { ControlMenu } from './video-player.control-menu';\nimport { ControlList } from './video-player.control-list';\nimport { ControlItem } from './video-player.control-item';\nimport { getClasses } from './util/classes';\nimport type { Track, TrackOption, VideoControlsProps } from './video-player.controls';\nimport type { useVideoPlayer } from './hooks/use-video-player';\n\ntype SettingsMenuProps = Pick<VideoControlsProps, 'brandComponentTheme'> &\n  Pick<\n    ReturnType<typeof useVideoPlayer>['videoControlsProps'],\n    | 'activeVideo'\n    | 'updateAudioTrack'\n    | 'updateCaption'\n    | 'updateTranscript'\n    | 'optionsState'\n    | 'playerState'\n    | 'videoElement'\n  > & {\n    menuProps: ReturnType<typeof useMenu>;\n  };\n\nexport function SettingsMenu(props: SettingsMenuProps) {\n  const { brandComponentTheme } = props;\n  const { t } = useTranslation('osc-video-player');\n  const menuOptions = useMenuOptions(props);\n  const { isOpen, toggleMenu, menuId, popupButtonRef, popupMenuRef } = menuOptions;\n\n  return (\n    <ControlButton\n      aria-label={t('settings')}\n      aria-controls={menuId}\n      aria-haspopup\n      aria-expanded={isOpen}\n      ref={popupButtonRef}\n      onClick={toggleMenu}\n      brandComponentTheme={brandComponentTheme}\n      iconContent={\n        <>\n          <ControlIcon\n            name=\"settings\"\n            brandComponentTheme={brandComponentTheme}\n            className={classnames({ hidden: isOpen })}\n          />\n          <ControlIcon\n            name=\"settings\"\n            variant=\"solid\"\n            brandComponentTheme={brandComponentTheme}\n            className={classnames({ hidden: !isOpen })}\n          />\n        </>\n      }\n    >\n      <ControlMenu {...menuOptions} wrapperRef={props.videoElement}>\n        {isOpen ? (\n          <Menu\n            {...props}\n            {...menuOptions}\n            popupButtonRef={popupButtonRef}\n            popupMenuRef={popupMenuRef}\n          />\n        ) : null}\n      </ControlMenu>\n    </ControlButton>\n  );\n}\n\ntype MenuProps = ReturnType<typeof useMenuOptions>;\ntype ControlMenuProps = SettingsMenuProps & MenuProps;\n\nfunction Menu({\n  menuOptions,\n  brandComponentTheme,\n  closeMenu,\n  popupButtonRef,\n  popupMenuRef,\n  goToMainMenu,\n}: ControlMenuProps) {\n  function resetMenu() {\n    closeMenu();\n    goToMainMenu();\n  }\n\n  useEventListeners({\n    popupMenuRef,\n    popupButtonRef,\n    resetMenu,\n  });\n\n  const selectedOption = menuOptions.find((option) => option.isSelected);\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  if (selectedOption) {\n    return (\n      <ControlList key={selectedOption.type} brandComponentTheme={brandComponentTheme}>\n        {selectedOption.options.map((subOption) => (\n          <ControlItem\n            key={subOption.label}\n            brandComponentTheme={brandComponentTheme}\n            onClick={() => {\n              selectedOption.onSelection(subOption.track);\n              resetMenu();\n              popupButtonRef.current?.focus();\n            }}\n            role=\"menuitemradio\"\n            aria-checked={subOption.isSelected}\n            autoFocus={subOption.isSelected}\n            beforeSection={\n              <ControlIcon\n                size=\"sm\"\n                name=\"check\"\n                brandComponentTheme={brandComponentTheme}\n                className={classnames({ '!fill-transparent': !subOption.isSelected })}\n              />\n            }\n          >\n            {subOption.label}\n          </ControlItem>\n        ))}\n        <ControlItem\n          key={selectedOption.type}\n          brandComponentTheme={brandComponentTheme}\n          wrapperClassName={classnames(\n            { 'bg-bg-alt': !isLight && !isDark },\n            getClasses({ brandComponentTheme })\n          )}\n          onClick={goToMainMenu}\n          beforeSection={\n            <ControlIcon\n              size=\"sm\"\n              name=\"arrowhead-left\"\n              brandComponentTheme={brandComponentTheme}\n              className=\"rtl:rotate-180\"\n            />\n          }\n          autoFocus={!selectedOption.options.some((subOption) => subOption.isSelected)}\n          aria-expanded={true}\n        >\n          {selectedOption.label}\n        </ControlItem>\n      </ControlList>\n    );\n  }\n\n  return (\n    <ControlList brandComponentTheme={brandComponentTheme}>\n      {menuOptions.map((option, index) => (\n        <ControlItem\n          key={option.type}\n          brandComponentTheme={brandComponentTheme}\n          onClick={option.onMenuOptionClick}\n          className=\"justify-between\"\n          autoFocus={index === 0}\n          aria-expanded={false}\n          afterSection={\n            <ControlIcon\n              size=\"sm\"\n              name=\"arrowhead-left\"\n              brandComponentTheme={brandComponentTheme}\n              className=\"rotate-180 rtl:rotate-0\"\n            />\n          }\n        >\n          {option.label}\n        </ControlItem>\n      ))}\n    </ControlList>\n  );\n}\n\ntype Option = {\n  isSelected: boolean;\n  label: TrackOption['label'];\n  track: TrackOption | null;\n};\n\ntype SelectOption = Pick<Option, 'isSelected'> & {\n  label: React.ReactNode;\n  type: Track['type'];\n  options: Option[];\n  onSelection: (option: TrackOption | null) => void;\n  onMenuOptionClick: () => void;\n};\n\nfunction useMenuOptions(options: SettingsMenuProps) {\n  const { t } = useTranslation('osc-video-player');\n  const [selectedOption, setSelectedOption] = useState<Track['type'] | 'mainMenu'>('mainMenu');\n  const captionOptions = options.activeVideo?.captionTracks || [];\n  const hasCaptions = captionOptions.length > 1;\n  const hasAudioTracks = options.optionsState.length > 1;\n  const transcriptOptions = options.activeVideo?.transcriptTracks || [];\n  const hasTranscripts = transcriptOptions.length > 0;\n  const goToMainMenu = () => setSelectedOption('mainMenu');\n\n  const menuOptions = [\n    hasCaptions && {\n      type: 'captionTrack',\n      label: (\n        <>\n          {t('subtitles')}/<abbr title={t('captions')}>{t('cc')}</abbr>\n        </>\n      ),\n      isSelected: selectedOption === 'captionTrack',\n      onSelection: options.updateCaption,\n      onMenuOptionClick: () => setSelectedOption('captionTrack'),\n      options: [\n        {\n          isSelected: !options.playerState.showCaptions,\n          label: t('off'),\n          track: null,\n        },\n        ...captionOptions.map((track) => ({\n          isSelected:\n            options.playerState.showCaptions &&\n            options.playerState.activeCaptionTrack?.src === track.src,\n          label: track.label,\n          track,\n        })),\n      ],\n    },\n    hasAudioTracks && {\n      type: 'audioTrack',\n      label: t('audioTrack'),\n      isSelected: selectedOption === 'audioTrack',\n      onSelection: options.updateAudioTrack,\n      onMenuOptionClick: () => setSelectedOption('audioTrack'),\n      options: options.optionsState.map((track) => ({\n        isSelected: options.activeVideo?.videoUrl === track.videoUrl,\n        label: track.videoLabel,\n        track,\n      })),\n    },\n    hasTranscripts && {\n      type: 'transcriptTrack',\n      label: t('transcript'),\n      isSelected: selectedOption === 'transcriptTrack',\n      onSelection: options.updateTranscript,\n      onMenuOptionClick: () => setSelectedOption('transcriptTrack'),\n      options: [\n        {\n          isSelected: !options.playerState.activeTranscript,\n          label: t('off'),\n          track: null,\n        },\n        ...transcriptOptions.map((track) => ({\n          isSelected: options.playerState.activeTranscript?.src === track.src,\n          label: track.label,\n          track,\n        })),\n      ],\n    },\n  ].filter(Boolean) as SelectOption[];\n\n  return {\n    ...options.menuProps,\n    goToMainMenu,\n    menuOptions,\n  };\n}\n","import { useRef } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { useEventListener } from 'usehooks-ts';\nimport classnames from 'classnames';\nimport { ControlButton } from './video-player.control-button';\nimport { ControlIcon } from './video-player.control-icon';\nimport { SettingsMenu } from './video-player.settings-menu';\nimport { VolumeSlider } from './video-player.volume-slider';\nimport type { useVideoPlayer } from './hooks/use-video-player';\nimport { getKeyDownNavigation } from '@dx-ui/utilities-accessibility';\nimport { getClasses } from './util/classes';\n\nexport type Track = {\n  type: StringWithAutocompleteOptions<'captionTrack' | 'transcriptTrack' | 'audioTrack'>;\n  url: string;\n  label: string;\n  language: string;\n};\n\nexport type BaseVideoTrack = {\n  videoGroup?: 'standard' | 'extended';\n  videoLabel?: string;\n  videoName?: string;\n  videoUrl: string;\n  isMuted?: boolean;\n  altText?: string;\n  captionTracks?: Track[];\n  transcriptTracks?: Track[];\n};\n\nexport type TrackOption = HTMLTrackElement;\n\nexport type VideoTrack = Omit<BaseVideoTrack, 'captionTracks' | 'transcriptTracks'> & {\n  captionTracks: TrackOption[];\n  transcriptTracks: TrackOption[];\n};\n\nexport type VideoControlsProps = {\n  /** Used to help with positioning of the controls */\n  className?: string;\n  /** For color theming */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  videoVariant?: 'cinemagraph';\n};\n\n/**\n * A set of video controls for internal video sources that includes pause/play, mute/unmute, and closed captions.\n *\n * This should generally be used with the `useVideoPlayer` hook from `@dx-ui/osc-video-player`.\n * The hook provides the necessary state and functions to control the video player.\n * Consumers can spread the props from the videoControlsProps returned from the hook.\n *\n * Accepts className to add your own placement and styles to the component.\n */\nexport function VideoControls(\n  props: ReturnType<typeof useVideoPlayer>['videoControlsProps'] & VideoControlsProps\n) {\n  const {\n    className,\n    brandComponentTheme,\n    controlsState,\n    playerState,\n    activeVideo,\n    optionsState,\n    toggleCaptions,\n    toggleMuteButton,\n    togglePlayButton,\n    settingsMenu,\n    updateCaption,\n    updateTranscript,\n    updateAudioTrack,\n    updateVolume,\n    videoVariant,\n    hasAudio,\n    videoElement,\n  } = props;\n  const { t } = useTranslation('osc-video-player');\n  const listRef = useRef<React.ElementRef<'ul'>>(null);\n  const hasCaptions = (activeVideo?.captionTracks || []).length > 0;\n  const hasMultipleCaptions = (activeVideo?.captionTracks || []).length > 1;\n  const hasTranscripts = (activeVideo?.transcriptTracks || []).length > 0;\n  const hasAudioDescriptions = optionsState.length > 1;\n  const hasSettings = hasMultipleCaptions || hasTranscripts || hasAudioDescriptions;\n  const isSettingsMenuOpen = settingsMenu?.isOpen;\n  const isCinemagraph = videoVariant === 'cinemagraph';\n\n  useEventListener(\n    'keydown',\n    (event) => {\n      const target = event.target as HTMLButtonElement;\n      if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n        if (!target?.id?.includes('slider-thumb')) {\n          event.preventDefault();\n          const elements = Array.from(listRef.current?.querySelectorAll('button') || []);\n          const onKeyDownNavigation = getKeyDownNavigation({ elements });\n          onKeyDownNavigation(event);\n        }\n      }\n    },\n    listRef\n  );\n\n  const pauseButtonLabel = isCinemagraph ? t('pauseAnimation') : t('pause');\n  const playButtonLabel = isCinemagraph ? t('playAnimation') : t('play');\n  return (\n    <div className={className} data-testid=\"video-controls\">\n      <ul\n        className={classnames(\n          'bg-bg divide-border relative z-10 inline-flex divide-x shadow-md motion-safe:transition-opacity rtl:divide-x-reverse',\n          getClasses({ brandComponentTheme }),\n          {\n            'opacity-100': controlsState.isVisible,\n            'opacity-0': !controlsState.isVisible,\n          }\n        )}\n        data-testid=\"testBackgroundCss\"\n        ref={listRef}\n      >\n        <ControlButton\n          aria-label={playerState.isPlaying ? pauseButtonLabel : playButtonLabel}\n          brandComponentTheme={brandComponentTheme}\n          onClick={togglePlayButton}\n          iconContent={\n            <>\n              <ControlIcon\n                brandComponentTheme={brandComponentTheme}\n                className={classnames({ hidden: !playerState.isPlaying })}\n                name=\"pause\"\n              />\n              <ControlIcon\n                brandComponentTheme={brandComponentTheme}\n                className={classnames({ hidden: playerState.isPlaying })}\n                name=\"play\"\n              />\n            </>\n          }\n        />\n        {hasAudio ? (\n          <ControlButton\n            aria-label={playerState.isMuted ? t('unmute') : t('mute')}\n            brandComponentTheme={brandComponentTheme}\n            onClick={toggleMuteButton}\n            wrapperClassName=\"group relative\"\n            iconContent={\n              <>\n                <ControlIcon\n                  brandComponentTheme={brandComponentTheme}\n                  className={classnames({ hidden: !playerState.isMuted })}\n                  name=\"sound-off\"\n                />\n                <ControlIcon\n                  brandComponentTheme={brandComponentTheme}\n                  className={classnames({ hidden: playerState.isMuted })}\n                  name=\"sound-on\"\n                />\n              </>\n            }\n          >\n            {!isSettingsMenuOpen ? (\n              <VolumeSlider\n                brandComponentTheme={brandComponentTheme}\n                playerState={playerState}\n                updateVolume={updateVolume}\n              />\n            ) : null}\n          </ControlButton>\n        ) : null}\n        {hasCaptions ? (\n          <ControlButton\n            aria-label={t('captions')}\n            aria-pressed={Boolean(playerState.activeCaptionTrack)}\n            brandComponentTheme={brandComponentTheme}\n            onClick={() => {\n              const currentTrack = playerState.activeCaptionTrack;\n              const firstTrack = activeVideo?.captionTracks?.[0] as HTMLTrackElement;\n              currentTrack ? toggleCaptions() : updateCaption(firstTrack);\n            }}\n            iconContent={\n              <>\n                <ControlIcon\n                  brandComponentTheme={brandComponentTheme}\n                  className={classnames({ hidden: !playerState.showCaptions })}\n                  variant=\"solid\"\n                  name=\"closed-captions\"\n                />\n                <ControlIcon\n                  brandComponentTheme={brandComponentTheme}\n                  className={classnames({ hidden: playerState.showCaptions })}\n                  name=\"closed-captions\"\n                />\n              </>\n            }\n          />\n        ) : null}\n        {hasSettings ? (\n          <SettingsMenu\n            brandComponentTheme={brandComponentTheme}\n            activeVideo={activeVideo}\n            optionsState={optionsState}\n            playerState={playerState}\n            updateAudioTrack={updateAudioTrack}\n            updateTranscript={updateTranscript}\n            updateCaption={updateCaption}\n            menuProps={settingsMenu}\n            videoElement={videoElement}\n          />\n        ) : null}\n      </ul>\n    </div>\n  );\n}\n","import classnames from 'classnames';\nimport type { VideoControlsProps } from './video-player.controls';\nimport type { useVideoPlayer } from './hooks/use-video-player';\nimport { isValidCue, getCueText } from './util/cue';\n\ntype VideoCaptionsProps = ReturnType<typeof useVideoPlayer>['videoCaptionProps'] &\n  Pick<VideoControlsProps, 'brandComponentTheme'> &\n  React.ComponentProps<'div'>;\n\nexport function VideoCaptions({\n  showCaptions,\n  activeCaptionTrack,\n  brandComponentTheme: _brandComponentTheme,\n  ...elementProps\n}: VideoCaptionsProps) {\n  const activeCues = showCaptions\n    ? (Array.from(activeCaptionTrack?.track.activeCues ?? []) as VTTCue[]).filter(isValidCue)\n    : [];\n\n  if (activeCues.length) {\n    return (\n      <div\n        {...elementProps}\n        className={classnames(\n          'bg-text/75 text-text-inverse flex flex-col items-center justify-center overflow-auto p-2 lg:text-lg',\n          elementProps.className\n        )}\n      >\n        {activeCues.map((cue) => (\n          <div\n            key={cue.text}\n            dangerouslySetInnerHTML={{\n              __html: getCueText(cue).html,\n            }}\n          />\n        ))}\n      </div>\n    );\n  }\n\n  return null;\n}\n","import type { VideoControlsProps } from './video-player.controls';\nimport type { useVideoPlayer } from './hooks/use-video-player';\nimport { useTranslation } from 'next-i18next';\nimport { Icon } from '@dx-ui/osc-icon';\nimport classnames from 'classnames';\nimport { useState, useMemo, useRef, useEffect, useCallback } from 'react';\nimport { useEventListener, useBoolean } from 'usehooks-ts';\nimport { getKeyDownNavigation } from '@dx-ui/utilities-accessibility';\nimport { BrandButton } from '@dx-ui/osc-brand-buttons';\nimport { isValidCue, getCueText, getCueId } from './util/cue';\nimport './video-player.css';\n\ntype PlayerTranscriptProps = ReturnType<typeof useVideoPlayer>['videoTranscriptProps'];\n\ntype VideoTranscriptProps = PlayerTranscriptProps &\n  Pick<VideoControlsProps, 'brandComponentTheme'> &\n  React.ComponentProps<'div'>;\n\ntype TranscriptProps = VideoTranscriptProps & {\n  activeTranscript: NonNullable<VideoTranscriptProps['activeTranscript']>;\n};\n\nexport function VideoTranscript(props: VideoTranscriptProps) {\n  return props.activeTranscript ? (\n    <Transcript {...props} activeTranscript={props.activeTranscript} />\n  ) : null;\n}\n\nfunction Transcript({\n  activeTranscript,\n  closeTranscript,\n  onCueSelect,\n  brandComponentTheme,\n  ...elementProps\n}: TranscriptProps) {\n  const { t } = useTranslation('osc-video-player');\n\n  return (\n    <div {...elementProps} className={classnames('bg-bg relative p-4', elementProps.className)}>\n      <div className=\"flex w-full items-center justify-between p-1\">\n        <h3 className=\"flex items-center pb-2 font-semibold\">\n          <Icon className=\"me-2\" name=\"transcripts\" />\n          {t('transcript')}\n        </h3>\n        <button aria-label={t('close')} type=\"button\" onClick={closeTranscript} autoFocus>\n          <Icon name=\"close\" />\n        </button>\n      </div>\n      <TranscriptList\n        key={activeTranscript.track.id}\n        activeTranscript={activeTranscript}\n        brandComponentTheme={brandComponentTheme}\n        closeTranscript={closeTranscript}\n        onCueSelect={onCueSelect}\n      />\n    </div>\n  );\n}\n\nfunction useCues(activeTranscript: TranscriptProps['activeTranscript']) {\n  const allCues = useMemo(() => getCues(activeTranscript), [activeTranscript]);\n  const [{ activeCues, lastActiveCue }, setActiveCues] = useState<{\n    activeCues: VTTCue[];\n    lastActiveCue: VTTCue;\n  }>(() => {\n    const activeCues = getActiveCues(activeTranscript);\n    const lastActiveCue = activeCues[activeCues.length - 1] || (allCues[0] as VTTCue);\n    return { activeCues, lastActiveCue };\n  });\n\n  function updateCues() {\n    setActiveCues((cueState) => {\n      const activeCues = getActiveCues(activeTranscript);\n      const activeCue = activeCues[activeCues.length - 1];\n      const lastActiveCue = activeCue || cueState.lastActiveCue;\n      return { activeCues, lastActiveCue };\n    });\n  }\n\n  return {\n    allCues,\n    activeCues,\n    lastActiveCue,\n    updateCues,\n  };\n}\n\nfunction TranscriptList({\n  activeTranscript,\n  closeTranscript,\n  onCueSelect,\n  brandComponentTheme,\n}: Pick<\n  TranscriptProps,\n  'activeTranscript' | 'closeTranscript' | 'onCueSelect' | 'brandComponentTheme'\n>) {\n  const { t } = useTranslation('osc-video-player');\n  const listRef = useRef<React.ElementRef<'ol'>>(null);\n  const { value: isSyncing, setTrue: startSync, setFalse: stopSync } = useBoolean(true);\n  const [focusedButton, setFocusedButton] = useState<HTMLButtonElement | null>(null);\n  const activeTranscriptRef = useRef(activeTranscript);\n  const { allCues, activeCues, lastActiveCue, updateCues } = useCues(activeTranscript);\n  const isAutoScrolling = useRef(activeCues.length > 0);\n\n  const onScroll = () => {\n    if (!isAutoScrolling.current) {\n      stopSync();\n    }\n  };\n\n  const onScrollEnd = () => {\n    isAutoScrolling.current = false;\n  };\n\n  const scrollToActiveCue = useCallback(() => {\n    const firstActiveCue = activeCues[0];\n    if (listRef.current && firstActiveCue && isSyncing) {\n      const activeButton = getActiveButton(listRef, firstActiveCue);\n      if (activeButton && activeButton.parentElement) {\n        const { offsetTop, offsetHeight } = activeButton.parentElement;\n        const { marginTop, marginBottom } = window.getComputedStyle(activeButton.parentElement);\n        const itemMargins = parseInt(marginTop, 10) + parseInt(marginBottom, 10);\n        const itemOffset = offsetTop - offsetHeight - itemMargins;\n        const top = itemOffset - listRef.current.offsetTop;\n        isAutoScrolling.current = true;\n        listRef.current.scrollTo({ top });\n      }\n    }\n  }, [isSyncing, activeCues]);\n\n  const onKeyDown = (event: KeyboardEvent) => {\n    event.stopPropagation();\n    switch (event.key) {\n      case 'Escape':\n        closeTranscript();\n        break;\n      case 'ArrowUp':\n      case 'ArrowDown':\n        const onKeyDownNavigation = getKeyDownNavigation({\n          elements: getAllButtons(listRef),\n          onNextFocus: setFocusedButton,\n          onPreviousFocus: setFocusedButton,\n        });\n        onKeyDownNavigation(event);\n        break;\n      default:\n        break;\n    }\n  };\n\n  useEffect(scrollToActiveCue, [scrollToActiveCue]);\n  useEventListener('cuechange', updateCues, activeTranscriptRef);\n  useEventListener('scroll', onScroll, listRef);\n  useEventListener('scrollend', onScrollEnd, listRef);\n  useEventListener('keydown', onKeyDown, listRef);\n\n  return (\n    <>\n      <ol\n        className={classnames(\n          'max-h-64 space-y-1 overflow-y-auto overscroll-contain motion-safe:scroll-smooth sm:max-h-80',\n          {\n            'pb-10': !isSyncing,\n          }\n        )}\n        ref={listRef}\n        data-testid=\"video-player-transcript-list\"\n      >\n        {allCues.map((cue) => {\n          const isActive = activeCues.includes(cue);\n          const isFocusable = focusedButton\n            ? focusedButton.dataset.id === cue.id\n            : lastActiveCue === cue;\n          return (\n            <TranscriptLine\n              isActive={isActive}\n              isFocusable={isFocusable}\n              cue={cue}\n              key={cue.id}\n              onCueSelect={onCueSelect}\n            />\n          );\n        })}\n      </ol>\n      {!isSyncing ? (\n        <BrandButton\n          className=\"absolute bottom-2 start-1/2 -translate-x-1/2 text-sm rtl:translate-x-1/2\"\n          onClick={() => {\n            isAutoScrolling.current = true;\n            startSync();\n            setFocusedButton(null);\n            getActiveButton(listRef, lastActiveCue)?.focus();\n          }}\n          label={t('sync')}\n          brandComponentTheme={brandComponentTheme}\n          variant=\"solid\"\n        />\n      ) : null}\n    </>\n  );\n}\n\nfunction TranscriptLine({\n  cue,\n  onCueSelect,\n  isActive,\n  isFocusable,\n}: Pick<TranscriptProps, 'onCueSelect'> & {\n  cue: VTTCue;\n  isActive: boolean;\n  isFocusable: boolean;\n}) {\n  const { t } = useTranslation('osc-video-player');\n  const { text, html } = getCueText(cue);\n  return (\n    <li className=\"p-1\">\n      <button\n        type=\"button\"\n        className={classnames('hover:bg-bg-alt flex items-baseline gap-3 rounded-sm p-1', {\n          'bg-bg-alt': isActive,\n        })}\n        onClick={() => onCueSelect(cue)}\n        tabIndex={isFocusable ? 0 : -1}\n        data-id={cue.id}\n        aria-current={isActive ? 'time' : false}\n        aria-label={t('time', {\n          minutes: t('minute', { count: floorMinutes(cue.startTime) }),\n          seconds: t('second', { count: floorSeconds(cue.startTime) }),\n          text,\n        })}\n      >\n        <span className=\"text-primary font-semibold tabular-nums underline\">\n          {formatTime(cue.startTime)}\n        </span>\n        <span className=\"text-start\" dangerouslySetInnerHTML={{ __html: html }} />\n      </button>\n    </li>\n  );\n}\n\nfunction getActiveCues(activeTranscript: TranscriptProps['activeTranscript']) {\n  return (Array.from(activeTranscript.track.activeCues || []) as VTTCue[]).filter(isValidCue);\n}\n\nfunction getCues(activeTranscript: TranscriptProps['activeTranscript']) {\n  return (Array.from(activeTranscript.track.cues || []) as VTTCue[])\n    .filter(isValidCue)\n    .map((cue) => {\n      cue.id = cue.id || getCueId(cue);\n      return cue;\n    });\n}\n\nfunction formatTime(time: number) {\n  const minFmt = padTime(floorMinutes(time));\n  const secFmt = padTime(floorSeconds(time));\n  return `${minFmt}:${secFmt}`;\n}\n\nconst floorMinutes = (time: number) => Math.floor(time / 60);\nconst floorSeconds = (time: number) => Math.floor(time % 60);\nconst padTime = (time: number) => time.toString().padStart(2, '0');\n\nfunction getActiveButton(\n  listRef: React.RefObject<HTMLUListElement>,\n  cue: VTTCue\n): HTMLButtonElement | null {\n  return (listRef.current?.querySelector(`[data-id=\"${cue.id}\"]`) as HTMLButtonElement) || null;\n}\n\nfunction getAllButtons(listRef: React.RefObject<HTMLUListElement>): HTMLButtonElement[] {\n  return Array.from(listRef.current?.querySelectorAll('li > button') || []);\n}\n","import classnames from 'classnames';\nimport { useMemo } from 'react';\n\ntype UseVideoPlayerClassesProps = Partial<{ isLandscape: boolean }>;\n\nexport function useVideoPlayerClasses({ isLandscape = true }: UseVideoPlayerClassesProps) {\n  const baseControlsClasses = 'absolute -bottom-6 start-1/2 z-10 -translate-x-1/2';\n\n  return useMemo(\n    () => ({\n      captionClassNames: classnames(\n        'absolute inset-x-0 bottom-8 mx-auto w-[calc(100%-2rem)] sm:max-w-fit',\n        {\n          'sm:bottom-16 sm:mb-2': isLandscape,\n        }\n      ),\n      controlsClassNames: {\n        default: classnames(baseControlsClasses, 'rtl:translate-x-1/2', {\n          'sm:bottom-4 sm:start-4 sm:translate-x-0 sm:rtl:translate-x-0': isLandscape,\n        }),\n        center: classnames(baseControlsClasses, 'lg:bottom-4 rtl:translate-x-1/2'),\n        left: classnames(baseControlsClasses, 'lg:bottom-4 lg:start-4 lg:translate-x-0'),\n        right: classnames(\n          baseControlsClasses,\n          'lg:bottom-4 lg:end-4 lg:start-auto lg:translate-x-0'\n        ),\n      },\n      transcriptClassNames: 'container p-4 pt-8 sm:pt-4',\n      wrapperClassNames: 'relative',\n    }),\n    [isLandscape]\n  );\n}\n","import Head from 'next/head';\n\ntype Schema = {\n  name: string;\n  logo: string;\n  description: string;\n  thumbnailUrl: string;\n  uploadDate: string;\n  duration: string;\n  embedUrl: string;\n};\n\nexport type VideoPlayerMarkupProps = {\n  markupSchemas?: Schema[] | null;\n};\n\nexport const VideoPlayerMarkup: React.FC<VideoPlayerMarkupProps> = ({ markupSchemas }) => {\n  return markupSchemas?.map(\n    ({ name, logo, description, thumbnailUrl, uploadDate, duration, embedUrl }) => (\n      <Head key={name}>\n        <script\n          data-testid=\"video-markup-schema\"\n          type=\"application/ld+json\"\n          dangerouslySetInnerHTML={{\n            __html: JSON.stringify({\n              '@context': 'http://schema.org',\n              '@type': 'VideoObject',\n              name,\n              logo,\n              description,\n              thumbnailUrl,\n              uploadDate,\n              duration,\n              embedUrl,\n            }),\n          }}\n        />\n      </Head>\n    )\n  );\n};\n","import { useRef } from 'react';\nimport classnames from 'classnames';\nimport { useVideoPlayer } from './hooks/use-video-player';\nimport { Video } from './video-player.player';\nimport { VideoControls } from './video-player.controls';\nimport { VideoCaptions } from './video-player.captions';\nimport { VideoTranscript } from './video-player.transcripts';\nimport { useVideoPlayerClasses } from './hooks/use-video-player-classnames';\nimport { VideoPlayerMarkup } from './video-player.markup';\n\ntype HookProps = Parameters<typeof useVideoPlayer>[0];\ntype VideoProps = Omit<React.ComponentProps<typeof Video>, 'videoElement' | 'isAutoPlay'>;\ntype CaptionProps = Pick<React.ComponentProps<typeof VideoCaptions>, 'className'>;\ntype TranscriptProps = Pick<React.ComponentProps<typeof VideoTranscript>, 'className'>;\ntype ControlsProps = Pick<React.ComponentProps<typeof VideoControls>, 'className' | 'videoVariant'>;\ntype Orientation = 'portrait' | 'landscape';\n\ntype VideoPlayerProps = HookProps &\n  VideoProps &\n  Partial<{\n    brandComponentTheme: CmsBrandComponentTheme;\n    videoCaptionsProps: CaptionProps;\n    videoControlsProps: ControlsProps;\n    videoTranscriptProps: TranscriptProps;\n    wrapperClassName: React.ComponentProps<'div'>['className'];\n    orientation: Orientation;\n    altText: string | undefined;\n  }> & {\n    markupSchemas?: React.ComponentProps<typeof VideoPlayerMarkup>['markupSchemas'];\n  };\n\n/**\n * Native video player that composes a number of components to render a video with\n * support for closed captions, audio descriptions, and transcripts.\n *\n * @note Does not support ABS (Adaptive bitrate streaming).\n */\nexport function VideoPlayer({\n  videoCaptionsProps,\n  videoControlsProps,\n  videoTranscriptProps,\n  audioTracks,\n  captionTracks,\n  transcriptTracks,\n  brandComponentTheme,\n  videoGroup = 'standard',\n  videoLabel,\n  videoName,\n  wrapperClassName,\n  orientation = 'landscape',\n  markupSchemas,\n  hasAudio,\n  ...videoProps\n}: VideoPlayerProps) {\n  const wrapperElement = useRef<React.ElementRef<'div'>>(null);\n  const isLandscape = orientation === 'landscape';\n  const playerClasses = useVideoPlayerClasses({ isLandscape });\n  const playerProps = useVideoPlayer({\n    ...videoProps,\n    hasAudio,\n    videoGroup,\n    videoLabel,\n    videoName,\n    wrapperElement,\n    audioTracks,\n    captionTracks,\n    transcriptTracks,\n  });\n\n  return (\n    <>\n      <div\n        className={classnames(playerClasses.wrapperClassNames, wrapperClassName)}\n        ref={wrapperElement}\n      >\n        <Video {...videoProps} {...playerProps.videoProps} />\n        <VideoCaptions\n          {...videoCaptionsProps}\n          {...playerProps.videoCaptionProps}\n          brandComponentTheme={brandComponentTheme}\n          className={classnames(playerClasses.captionClassNames, videoCaptionsProps?.className)}\n        />\n        <VideoControls\n          {...videoControlsProps}\n          {...playerProps.videoControlsProps}\n          brandComponentTheme={brandComponentTheme}\n          className={classnames(\n            playerClasses.controlsClassNames['default'],\n            videoControlsProps?.className\n          )}\n        />\n      </div>\n      <VideoTranscript\n        {...playerProps.videoTranscriptProps}\n        brandComponentTheme={brandComponentTheme}\n        className={classnames(playerClasses.transcriptClassNames, videoTranscriptProps?.className)}\n      />\n      <VideoPlayerMarkup markupSchemas={markupSchemas} />\n    </>\n  );\n}\n","import type { Multimedia as AwardMultimedia } from 'dx-shared-schema/dist/types/couchbase/award';\nimport type { Multimedia as BrandMultimedia } from 'dx-shared-schema/dist/types/couchbase/brand';\nimport type { Multimedia as EventMultimedia } from 'dx-shared-schema/dist/types/couchbase/event';\nimport type { Multimedia as PartnerMultimedia } from 'dx-shared-schema/dist/types/couchbase/partner';\nimport type { Multimedia as LocationMultimedia } from 'dx-shared-schema/dist/types/couchbase/location';\nimport type { Multimedia as PlaceMultimedia } from 'dx-shared-schema/dist/types/couchbase/place';\nimport type { Multimedia as StoryMultimedia } from 'dx-shared-schema/dist/types/couchbase/story';\nimport type { VideoPlayer } from './video-player';\nimport type { VideoPlayerMarkup } from './video-player.markup';\nimport type { VideoPlayerProps } from './hooks/use-video-player';\nimport { env } from '@dx-ui/framework-env';\nimport groupBy from 'lodash/groupBy';\n\ntype AllMultimedia =\n  | AwardMultimedia\n  | BrandMultimedia\n  | EventMultimedia\n  | PartnerMultimedia\n  | LocationMultimedia\n  | PlaceMultimedia\n  | StoryMultimedia;\n\ntype Metadata = AllMultimedia['multimediaMetadata'][number];\n\n// NOTE: Re-construct these types to resolve the incompatible types between dx-shared-schema and Core+ types\nexport type Multimedia = Omit<AllMultimedia, 'multimediaMetadata' | 'orientation'> & {\n  multimediaMetadata: MultimediaMetadatum[];\n  orientation: AllMultimedia['orientation'];\n};\n\nexport type MultimediaMetadatum = Omit<Metadata, 'language' | 'type'> & {\n  language: string;\n  type: Metadata['type'];\n};\n\ntype MappedPage = { brandCode?: string; pathname?: string };\n\nexport function mapMultimediaListToVideoProps({\n  multimedia,\n  mappedPage,\n  groupIdentifier = multimedia[0]?.groupIdentifier || null,\n}: {\n  multimedia: Multimedia[];\n  mappedPage: MappedPage;\n  groupIdentifier?: string | null;\n}): React.ComponentProps<typeof VideoPlayer> {\n  const [firstVideo, ...additionalVideos] = groupMultimedia(multimedia, groupIdentifier);\n  const videoTrack = mapMultimediaToVideoTrack(firstVideo);\n\n  const markupSchemas: Required<React.ComponentProps<typeof VideoPlayerMarkup>['markupSchemas']> =\n    multimedia\n      .filter((multimedia) => multimedia.description)\n      .map((multimedia) =>\n        mapVideoMarkup(multimedia as ValidatedVideoMarkupMultimedia, mappedPage)\n      );\n\n  return {\n    ...videoTrack,\n    audioTracks: additionalVideos.map(mapMultimediaToVideoTrack),\n    isAutoPlay: firstVideo.videoAutoPlay,\n    isMuted: firstVideo.noAudio,\n    altText: firstVideo.altText ?? '',\n    orientation: firstVideo.orientation,\n    posterImageUrl: firstVideo.posterImageUrl,\n    markupSchemas,\n  };\n}\n\nfunction mapMultimediaToVideoTrack(multimedia: Multimedia): Omit<VideoPlayerProps, 'audioTracks'> {\n  return {\n    videoName: multimedia.videoName,\n    videoUrl: multimedia.videoUrl,\n    videoGroup: getVideoGroup(multimedia),\n    videoLabel: multimedia.audioTrackLabel || multimedia.alternativeVideoLabel,\n    //description field is an interim measure. Here is long term solution https://jira.hilton.com/browse/NHCBP-5914\n    ...(multimedia.description && { altText: multimedia.description }),\n    captionTracks: filterByTrackType(multimedia.multimediaMetadata, 'captionTrack'),\n    captionData: mapCaptionData(multimedia.captionLink),\n    transcriptTracks: filterByTrackType(multimedia.multimediaMetadata, 'transcriptTrack'),\n  };\n}\n\nfunction filterByTrackType(\n  multimediaMetadata: MultimediaMetadatum[],\n  type: MultimediaMetadatum['type']\n) {\n  return multimediaMetadata.filter((metadata) => metadata.type === type);\n}\n\nfunction groupMultimedia(multimediaList: Multimedia[], groupIdentifier: string | null) {\n  return (\n    groupBy(multimediaList, (multimedia) => multimedia.groupIdentifier || null)[\n      String(groupIdentifier)\n    ] || []\n  ).toSorted((a, b) => Number(b.primaryVideo ?? 0) - Number(a.primaryVideo ?? 0)) as [\n    Multimedia,\n    ...Multimedia[]\n  ];\n}\n\nfunction getVideoGroup(multimedia: Multimedia): NonNullable<VideoPlayerProps['videoGroup']> {\n  const isExtended = Boolean(multimedia.extended || multimedia.extendedAudioDescription);\n  return isExtended ? 'extended' : 'standard';\n}\n\ntype NoUndefinedField<T> = { [P in keyof T]: Exclude<T[P], null | undefined> };\n\ntype ValidatedVideoMarkupMultimedia = NoUndefinedField<\n  Required<\n    Pick<\n      Multimedia,\n      'videoName' | 'description' | 'posterImageUrl' | 'uploadDatetime' | 'videoDuration'\n    >\n  >\n>;\n\nfunction mapVideoMarkup(multimedia: ValidatedVideoMarkupMultimedia, mappedPage: MappedPage) {\n  const { brandCode = 'WW', pathname = '' } = mappedPage;\n  const baseUrl = env('OHW_BASE_URL', 'https://www.hilton.com');\n  return {\n    name: multimedia.videoName,\n    logo: new URL(`/modules/assets/svgs/logos/${brandCode}.svg`, baseUrl).toString(),\n    description: multimedia.description,\n    thumbnailUrl: multimedia.posterImageUrl,\n    uploadDate: multimedia.uploadDatetime.toString(),\n    duration: multimedia.videoDuration,\n    embedUrl: new URL(pathname, baseUrl).toString(),\n  };\n}\n\nfunction mapCaptionData(\n  captionLink: AllMultimedia['captionLink']\n): VideoPlayerProps['captionData'] {\n  if (captionLink) {\n    return {\n      caption: captionLink.linkLabel,\n      captionLink: captionLink.linkUrl,\n      captionLinkTarget: captionLink.isNewWindow ? '_blank' : undefined,\n    };\n  }\n  return undefined;\n}\n","export * from './video-player';\nexport * from './video-player.player';\nexport * from './video-player.captions';\nexport * from './video-player.controls';\nexport * from './video-player.transcripts';\nexport * from './hooks/use-video-player';\nexport * from './hooks/use-video-player-classnames';\nexport * from './video-player.markup';\nexport * from './video-player.mapper';\nexport * from './util/event-emitter';\n","export * from './lib';\n","export const youtubeEmbedUrlPattern = RegExp('^https://(www.)?youtube.com/embed/');\nexport const youtubeShortsUrlPattern = RegExp('^https://(www.)?youtube.com/shorts/');\nexport const youtubePlaylistUrlPattern = RegExp(\n  '^https://(www.)?youtube.com/watch\\\\?v=[^&]+&list=[^&]+'\n);\n\nexport const testUrlPattern = (url: string, pattern: RegExp) => {\n  return pattern.test(url);\n};\n\nexport const getVideoSrc = (\n  url: string | null,\n  source: string | null,\n  autoPlay: boolean,\n  autoLoop: boolean\n) => {\n  switch (source) {\n    case 'youtube-short':\n    case 'youtube': {\n      if (!url) {\n        return '';\n      }\n\n      try {\n        const parsedUrl = new URL(url);\n\n        let videoId, listId, listIndex;\n        const isShortsLink = testUrlPattern(url, youtubeShortsUrlPattern);\n        const isEmbedLink = testUrlPattern(url, youtubeEmbedUrlPattern);\n        const isPlaylistLink = testUrlPattern(url, youtubePlaylistUrlPattern);\n\n        if (isEmbedLink || isShortsLink) {\n          videoId = parsedUrl.pathname ? parsedUrl.pathname.substring(isShortsLink ? 8 : 7) : '';\n\n          const slashIndex = videoId.indexOf('/');\n          if (slashIndex > 0) {\n            videoId = videoId.substring(0, slashIndex);\n          }\n        } else {\n          videoId = parsedUrl.searchParams.get('v');\n        }\n\n        if (isPlaylistLink) {\n          listId = parsedUrl.searchParams.get('list');\n          listIndex = parsedUrl.searchParams.get('index');\n          return `https://www.youtube.com/embed?listType=playlist&list=${listId}&rel=0;&autoplay=${\n            autoPlay ? '1' : '0'\n          }&controls=1&enablejsapi=1&showinfo=0&playsinline=1&cc_lang_pref=en&cc_load_policy=0&modestbranding=1${\n            autoPlay ? '&mute=1' : ''\n          }${listIndex ? `&index=${listIndex}` : ''}`;\n        }\n\n        if (videoId) {\n          return `https://www.youtube.com/embed/${videoId}/?rel=0;&autoplay=${\n            autoPlay ? '1' : '0'\n          }&controls=1&enablejsapi=1&showinfo=0&playsinline=1&cc_lang_pref=en&cc_load_policy=0&modestbranding=1${\n            autoPlay ? '&mute=1' : ''\n          }${autoLoop ? `&loop=1&playlist=${videoId}` : ''}`;\n        }\n        return '';\n      } catch {\n        return '';\n      }\n    }\n    default: {\n      return url || '';\n    }\n  }\n};\n","export * from './get-video-src';\n","export * from './lib';\n","import { useRef, useCallback, useEffect } from 'react';\nimport { getVideoSrc } from '@dx-ui/utilities-get-video-src';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport cx from 'classnames';\n\ndeclare global {\n  interface Window {\n    YT: {\n      Player: { new (arg0: string, arg1: Record<string, unknown>): void };\n    };\n    onYouTubeIframeAPIReady: () => void;\n  }\n}\n\nexport type TYouTubeVideoProps = {\n  id?: string;\n  name?: string;\n  /**\n   * A11y requirement, iframe title for screen readers\n   */\n  title: string;\n  /**\n   * for example \"youtube\"\n   */\n  source: string;\n  /**\n   * Url of the video\n   */\n  url: string;\n  /**\n   * When present, the video will automatically start playing.\n   */\n  isAutoPlay?: boolean;\n  /**\n   * Specifies that the video will start over again, every time it is finished\n   */\n  isAutoLoop?: boolean;\n  /**\n   * Specified video aspect ratio\n   */\n  isVertical?: boolean;\n  /**\n   * Adds rounded corners\n   */\n  isRounded?: boolean;\n  /**\n   * Can be used to add styling to the wrapper div\n   */\n  wrapperClassName?: string;\n  /**\n   * This event fires whenever the player's state changes. https://developers.google.com/youtube/iframe_api_reference\n   */\n  onStateChange?: (e: unknown) => void;\n};\n\n/**\n * Renders a video player for YouTube supported videos and urls.\n *\n * Refer to the `getVideoSrc` util to see other supported source types.\n */\nexport const YouTubeVideo = ({\n  title,\n  source,\n  url,\n  id = 'video',\n  isAutoPlay = false,\n  isAutoLoop = true,\n  wrapperClassName,\n  isRounded,\n  onStateChange,\n  isVertical = source === 'youtube-short',\n}: TYouTubeVideoProps) => {\n  const player = useRef<unknown>();\n  const aspectRatio: AspectRatio = isVertical ? '9:16' : '16:9';\n  const videoSrc = getVideoSrc(url || '', source || '', isAutoPlay, isAutoLoop);\n\n  const onPlayerReady = useCallback(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (event: any) => {\n      if (isAutoPlay) {\n        event.target.mute();\n        event.target.playVideo();\n      }\n    },\n    [isAutoPlay]\n  );\n\n  const loadVideo = useCallback(() => {\n    // The Player object is created uniquely based on the id in props\n    const { YT } = window;\n\n    player.current = new YT.Player(`${id}-youtube-video`, {\n      events: {\n        onReady: onPlayerReady,\n        onStateChange,\n      },\n    });\n  }, [id, onPlayerReady, onStateChange]);\n\n  useEffect(() => {\n    const ytHasLoaded = !!window.YT?.Player;\n\n    if (!ytHasLoaded) {\n      // If not, load the script asynchronously\n      const tag = document.createElement('script');\n\n      tag.src = 'https://www.youtube.com/iframe_api';\n\n      // onYouTubeIframeAPIReady will load the video after the script is loaded\n      const previous = window.onYouTubeIframeAPIReady;\n\n      window.onYouTubeIframeAPIReady = () => {\n        if (previous) {\n          previous();\n        }\n\n        loadVideo();\n      };\n\n      const firstScriptTag = document.getElementsByTagName('script')[0];\n      firstScriptTag &&\n        firstScriptTag.parentNode &&\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n    } else {\n      // If script is already there, load the video directly\n      loadVideo();\n    }\n  }, [loadVideo]);\n\n  return (\n    <div\n      id={id}\n      className={cx(\n        'brand-qq:max-w-full brand-qq:justify-start brand-qq:items-start brand-qq:p-0 relative flex w-full items-center justify-center',\n        wrapperClassName\n      )}\n      style={{ aspectRatio: aspectRatio.replace(':', '/') }}\n    >\n      <div className=\"flex size-full justify-center\">\n        <iframe\n          className={cx({\n            'left-0 top-0 h-full w-full': !isVertical,\n            'aspect-[9/16]': isVertical,\n            'rounded-xl': isRounded,\n          })}\n          data-e2e={`${id}Video`}\n          data-testid={`${id}Video`}\n          id={`${id}-youtube-video`}\n          src={videoSrc}\n          allow=\"encrypted-media; autoplay\"\n          allowFullScreen\n          title={title || 'No video available'}\n          // The \"sandbox\" attribute is from Checkmarx; see NHCBP-4137\n          sandbox=\"allow-same-origin allow-scripts allow-popups allow-forms allow-popups-to-escape-sandbox\"\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default YouTubeVideo;\n","export * from './lib/youtube-video';\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 { useEffect, useState } from 'react';\n\nconst getHasUserModifiedFontDefaults = (maxSize: number) => {\n  const { fontSize, wordSpacing, letterSpacing } = getComputedStyle(document.documentElement);\n  const hasModifiedLetterSpacing = letterSpacing !== 'normal';\n  const hasModifiedFontSize = parseInt(fontSize.split('px')[0] || '') > maxSize;\n  const hasModifiedWordSpacing =\n    wordSpacing !== 'normal' && parseInt(wordSpacing.split('px')[0] || '') > 0;\n  if (hasModifiedFontSize || hasModifiedWordSpacing || hasModifiedLetterSpacing) {\n    return true;\n  }\n  return false;\n};\n\n/* Default browser font size is 16px, function defaults to a max of 20px  */\nexport const useHasUserModifiedFontDefaults = (maxSize = 20) => {\n  const [hasUserModifiedFonts, setHasUserModifiedFonts] = useState(false);\n  useEffect(() => {\n    setHasUserModifiedFonts(getHasUserModifiedFontDefaults(maxSize));\n  }, [maxSize]);\n  return hasUserModifiedFonts;\n};\n","import { useHasUserModifiedFontDefaults } from './use-has-user-modified-font-defaults';\nexport const getIsReducedMotion = () =>\n  typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n    ? window.matchMedia('(prefers-reduced-motion: reduce)').matches\n    : true;\n\nexport const getKeyDownNavigation =\n  <T extends HTMLElement[]>({\n    elements,\n    initiatingRef,\n    onPreviousFocus,\n    onNextFocus,\n  }: {\n    elements: T;\n    initiatingRef?: React.MutableRefObject<HTMLElement | null>;\n    onPreviousFocus?: (focusElement: T[number] | null) => void;\n    onNextFocus?: (focusElement: T[number] | null) => void;\n  }) =>\n  (e: KeyboardEvent | React.KeyboardEvent<HTMLElement>) => {\n    const focusPrevious = (el: EventTarget | null) => {\n      const currentIndex = elements.findIndex((elements) => elements === el);\n      if (currentIndex === 0) {\n        initiatingRef?.current?.focus();\n        return;\n      }\n      const element = elements.at(currentIndex - 1) || null;\n      element?.focus();\n      onPreviousFocus?.(element);\n    };\n    const focusNext = (el: EventTarget | null) => {\n      const currentIndex = elements.findIndex((elements) => elements === el);\n      const element = elements.at(currentIndex + 1) || null;\n      element?.focus();\n      onNextFocus?.(element);\n    };\n    const isArrowUp = e.key === 'ArrowUp';\n    const isArrowDown = e.key === 'ArrowDown';\n    const isArrowLeft = e.key === 'ArrowLeft';\n    const isArrowRight = e.key === 'ArrowRight';\n    if (isArrowUp || isArrowLeft) {\n      e.preventDefault();\n      focusPrevious(e.target);\n    }\n    if (isArrowDown || isArrowRight) {\n      e.preventDefault();\n      focusNext(e.target);\n    }\n  };\n\nexport { useHasUserModifiedFontDefaults };\n","export * from './lib';\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","const RTL_LANGUAGES = ['ar', 'he'];\n\n/**\n * Returns whether a locale is LTR (left to right) or RTL (right to left)\n *\n * Currently arabic (ar) is only supported RTL locale\n * @param lang - ISO code for locale\n */\nexport const getLanguageDirection = (lang?: string) =>\n  !!lang && RTL_LANGUAGES.includes(lang.toLowerCase()) ? 'rtl' : 'ltr';\n\n/**\n * Returns a boolean as to whether a locale is LTR (left to right) or RTL (right to left)\n *\n * Currently arabic (ar) is only supported RTL locale\n * @param lang\n */\nexport const isRtl = (lang?: string) => getLanguageDirection(lang) === 'rtl';\n","/**\n * Checks window object to determine whether app is running on client or not.\n */\nexport const isBrowser = typeof window !== 'undefined';\n","/* eslint-disable no-param-reassign */\nimport * as matcher from 'matcher';\nimport type { Rule } from '@dx-shared/rule-engine';\nimport { RuleEngine } from '@dx-shared/rule-engine';\n\nconst HOST_REGEX = new RegExp('^www(.\\\\w+)?.hilton.com$');\nconst ENGLISH = 'en';\nconst SLASH = '/';\nconst DOUBLE_SLASH = '//';\n\n/**\n * Utility to determine if a provided URL supports translations for a non-English page by validating the URL\n * against the tranlate URLs rule.\n *\n * Also corrects OHW URLs to fix the URL origin to the current origin, and appends a trailing slash to the path.\n *\n * The URL config returned contains the following fields:\n * 1. The transformed URL based on the language and/or standardization.\n * 2. A flag indicating if a redirect is necessary if the provided URL doesn't match the final transformed URL.\n * 3. A flag indicating if a speedbump should be displayed if we need to route the user from a non-English URL to an English URL.\n *    The speedbump flag can also be use server side to determine if a page not found error (404) should be displayed to the user.\n * 4. A flag indicating if the URL is an internal application URL.\n * 1475984025\n *\n * @param tranlateUrlsRuleEngine\n * @param url\n * @param origin\n * @param language\n */\nexport function getUrlConfig(\n  tranlateUrlsRuleEngine: RuleEngine,\n  url: string,\n  origin: string,\n  language = ENGLISH,\n  appBasePaths?: string[],\n  facts?: UrlRuleFacts\n): UrlConfig {\n  if (url && url.startsWith('#')) {\n    return { appUrl: false, redirect: false, speedbump: false, url };\n  }\n  // Parse the URL. Sets the origin if the URL is a relative path.\n  const parsedURL: URL = new URL(url, origin);\n  const originalUrl = parsedURL.toString();\n  const originalPath = originalUrl.slice(parsedURL.origin.length);\n  // Correct the host and language in the path of all OHW URLs.\n  const isOHWUrl = HOST_REGEX.test(parsedURL.host);\n  if (isOHWUrl) {\n    // Standarize all URLS by appending a trailing slash.\n    if (!parsedURL.pathname.endsWith(SLASH)) {\n      parsedURL.pathname = `${parsedURL.pathname}${SLASH}`;\n    }\n    // Replace the language in the path to English. Assume all pages are only supported in English\n    // and will swicth it back if the page is supported in-language.\n    parsedURL.pathname = parsedURL.pathname.replace(`/${language}/`, `/${ENGLISH}/`);\n    // If the OHW URL origin doesn't match the current origin, correct the OHW URL with the current origin.\n    if (parsedURL.origin !== origin) {\n      parsedURL.host = origin.slice(origin.indexOf(DOUBLE_SLASH) + 2);\n      parsedURL.protocol = origin.slice(0, origin.indexOf(DOUBLE_SLASH));\n    }\n  }\n\n  let speedbump = false;\n\n  // For non-english languages, determine if the URL is translated\n  if (language !== ENGLISH) {\n    // When sending an URL into the rule engine, use the relative path for OHW URLs, and the absolute path for external URLs.\n    let ruleUrl = isOHWUrl ? parsedURL.pathname : `${parsedURL.origin}${parsedURL.pathname}`;\n    // Standarize all URLS by appending a trailing slash so the rule engine matching is consistent.\n    if (!ruleUrl.endsWith(SLASH)) {\n      ruleUrl = `${ruleUrl}${SLASH}`;\n    }\n\n    // Run the rule to determine if the URL is translated\n    const ruleFacts = { ...(facts || {}), url: ruleUrl, language };\n    const isTranslatedUrl = tranlateUrlsRuleEngine.run(ruleFacts);\n\n    // Display speedbump if URL is not translated\n    speedbump = !isTranslatedUrl;\n    // If a OHW URL and the URL is translated, then replace the language in the path\n    if (isOHWUrl && isTranslatedUrl) {\n      parsedURL.pathname = parsedURL.pathname.replace(`/${ENGLISH}/`, `/${language}/`);\n    }\n  }\n\n  const finalUrl = parsedURL.toString();\n  const finalPath = finalUrl.slice(parsedURL.origin.length);\n  const appUrl =\n    isOHWUrl &&\n    !!appBasePaths?.some((appBasePath) => matcher.isMatch(parsedURL.pathname, appBasePath));\n  const redirect = isOHWUrl && originalPath !== finalPath;\n\n  // Return URL config\n  return { appUrl, redirect, speedbump, url: isOHWUrl ? finalPath : finalUrl };\n}\n\nexport type { Rule };\n\nexport { RuleEngine };\n\nexport type UrlConfig = {\n  appUrl: boolean;\n  redirect: boolean;\n  speedbump: boolean;\n  url: string;\n};\n\nexport type UrlRuleFacts = {\n  brandCode?: string;\n  ctyhocn?: string;\n};\n","export * from './url-config';\n","export * from './lib';\n","import * as React from 'react';\n\nfunction setRefs<T>(ref: React.Ref<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    const mutableRef = ref as React.MutableRefObject<T>;\n    mutableRef.current = value;\n  }\n}\n\nexport function useForkedRef<ForwardRef, LocalRef extends ForwardRef>(\n  forwardedRef: React.Ref<ForwardRef>,\n  localRef: React.Ref<LocalRef>\n): (instance: LocalRef | null) => void {\n  return React.useCallback(\n    (value) => {\n      setRefs(forwardedRef, value);\n      setRefs(localRef, value);\n    },\n    [forwardedRef, localRef]\n  );\n}\n","export * from './lib/use-forked-ref';\n","const props: (keyof DOMRect)[] = ['bottom', 'height', 'left', 'right', 'top', 'width'];\n\nconst rectChanged = (a: DOMRect = {} as DOMRect, b: DOMRect = {} as DOMRect) =>\n  props.some((prop) => a[prop] !== b[prop]);\n\nconst observedNodes = new Map<Element, RectProps>();\nlet rafId: number;\n\nconst run = () => {\n  const changedStates: RectProps[] = [];\n  observedNodes.forEach((state, node) => {\n    const newRect = node.getBoundingClientRect();\n    if (rectChanged(newRect, state.rect)) {\n      state.rect = newRect;\n      changedStates.push(state);\n    }\n  });\n\n  changedStates.forEach((state) => {\n    state.callbacks.forEach((cb) => cb(state.rect));\n  });\n\n  rafId = window.requestAnimationFrame(run);\n};\n\nexport default function observeRect(node: Element, cb: (rect: DOMRect | undefined) => void) {\n  return {\n    observe() {\n      const wasEmpty = observedNodes.size === 0;\n      if (observedNodes.has(node)) {\n        observedNodes.get(node)!.callbacks.push(cb);\n      } else {\n        observedNodes.set(node, {\n          rect: undefined,\n          hasRectChanged: false,\n          callbacks: [cb],\n        });\n      }\n      if (wasEmpty) run();\n    },\n\n    unobserve() {\n      const state = observedNodes.get(node);\n      if (state) {\n        // Remove the callback\n        const index = state.callbacks.indexOf(cb);\n        if (index >= 0) state.callbacks.splice(index, 1);\n\n        // Remove the node reference\n        if (!state.callbacks.length) observedNodes.delete(node);\n\n        // Stop the loop\n        if (!observedNodes.size) cancelAnimationFrame(rafId);\n      }\n    },\n  };\n}\n\nexport type PartialRect = Partial<DOMRect>;\n\nexport type RectProps = {\n  rect: DOMRect | undefined;\n  hasRectChanged: boolean;\n  callbacks: ((rect: DOMRect | undefined) => void)[];\n};\n","/* eslint-disable no-console */\nimport * as React from 'react';\nimport observeRect from './oberserve-rect';\nimport { useIsomorphicLayoutEffect } from 'usehooks-ts';\n\nconst __DEV__ = process.env.NODE_ENV === 'development';\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Rect\n *\n * @param props\n */\nconst Rect: React.FC<RectProps> = ({ onChange, observe = true, children }) => {\n  const ref = React.useRef<HTMLElement | null>(null);\n  const rect = useRectBase(ref, { observe, onChange });\n  return children({ ref, rect });\n};\n\n/**\n * @see Docs https://reach.tech/rect#rect-props\n */\ntype RectProps = UseRectOptions & {\n  /**\n   * A function that calls back to you with a `ref` to place on an element and\n   * the `rect` measurements of the dom node.\n   *\n   * **Note**: On the first render `rect` will be `undefined` because we can't\n   * measure a node that has not yet been rendered. Make sure your code accounts\n   * for this.\n   *\n   * @see Docs https://reach.tech/rect#rect-onchange\n   */\n  children: (args: { rect: PRect | null; ref: React.RefObject<unknown> }) => JSX.Element;\n};\n\nRect.displayName = 'Rect';\n\n////////////////////////////////////////////////////////////////////////////////\n/**\n * useRect\n *\n * @param nodeRef\n * @param observe\n * @param onChange\n */\nfunction useRectBase<T extends Element = HTMLElement>(\n  nodeRef: React.RefObject<T | undefined | null>,\n  options?: UseRectOptions\n): null | DOMRect {\n  const [element, setElement] = React.useState(nodeRef.current);\n  const initialRectIsSet = React.useRef(false);\n  const initialRefIsSet = React.useRef(false);\n  const [rect, setRect] = React.useState<DOMRect | undefined>(undefined);\n  const onChangeRef = React.useRef(options?.onChange);\n\n  useIsomorphicLayoutEffect(() => {\n    onChangeRef.current = options?.onChange;\n    if (nodeRef.current !== element) {\n      setElement(nodeRef.current);\n    }\n  });\n\n  useIsomorphicLayoutEffect(() => {\n    if (element && !initialRectIsSet.current) {\n      initialRectIsSet.current = true;\n      setRect(element.getBoundingClientRect());\n    }\n  }, [element]);\n\n  useIsomorphicLayoutEffect(() => {\n    let elem = element;\n    // State initializes before refs are placed, meaning the element state will\n    // be undefined on the first render. We still want the rect on the first\n    // render, so initially we'll use the nodeRef that was passed instead of\n    // state for our measurements.\n    if (!initialRefIsSet.current) {\n      initialRefIsSet.current = true;\n      elem = nodeRef.current;\n    }\n\n    if (!elem) {\n      if (__DEV__) {\n        console.warn('You need to place the ref');\n      }\n      return;\n    }\n\n    const observer = observeRect(elem, (rect) => {\n      onChangeRef.current?.(rect);\n      setRect(rect);\n    });\n    observer.observe();\n    return () => {\n      observer.unobserve();\n    };\n  }, [element, nodeRef]);\n\n  return rect || null;\n}\n\n/**\n * @see Docs https://reach.tech/rect#userect\n */\ntype UseRectOptions = {\n  /**\n   * Tells `Rect` to observe the position of the node or not. While observing,\n   * the `children` render prop may call back very quickly (especially while\n   * scrolling) so it can be important for performance to avoid observing when\n   * you don't need to.\n   *\n   * This is typically used for elements that pop over other elements (like a\n   * dropdown menu), so you don't need to observe all the time, only when the\n   * popup is active.\n   *\n   * Pass `true` to observe, `false` to ignore.\n   *\n   * @see Docs https://reach.tech/rect#userect-observe\n   */\n  observe?: boolean;\n  /**\n   * Calls back whenever the `rect` of the element changes.\n   *\n   * @see Docs https://reach.tech/rect#userect-onchange\n   */\n  onChange?: (rect: PRect | undefined) => void;\n};\n\ntype PRect = Partial<DOMRect> & {\n  readonly bottom: number;\n  readonly height: number;\n  readonly left: number;\n  readonly right: number;\n  readonly top: number;\n  readonly width: number;\n};\n\n/**\n *\n * Measures DOM elements (aka. bounding client rect). This is cloned from the last available version of `@reach/userect` with some modifications made\n * @link https://reach.tech/rect/#userect\n * @see getBoundingClientRect https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n * @see Source                https://github.com/reach/reach-ui/blob/main/packages/rect/src/reach-rect.tsx\n */\nfunction useRect({\n  ref,\n  onResize,\n}: {\n  ref: Parameters<typeof useRectBase>[0];\n  onResize?: (rect: DOMRect) => void;\n}) {\n  return useRectBase(ref, {\n    onChange(rect) {\n      onResize?.(rect as DOMRect);\n    },\n  });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Exports\n\nexport type { PRect, UseRectOptions, RectProps };\nexport { Rect, useRect };\n","export * from './use-rect';\n","export * from './lib';\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}","import type { DomainLocale } from '../server/config'\nimport type { normalizeLocalePath as NormalizeFn } from './normalize-locale-path'\nimport type { detectDomainLocale as DetectFn } from './detect-domain-locale'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function getDomainLocale(\n  path: string,\n  locale?: string | false,\n  locales?: string[],\n  domainLocales?: DomainLocale[]\n) {\n  if (process.env.__NEXT_I18N_SUPPORT) {\n    const normalizeLocalePath: typeof NormalizeFn =\n      require('./normalize-locale-path').normalizeLocalePath\n    const detectDomainLocale: typeof DetectFn =\n      require('./detect-domain-locale').detectDomainLocale\n\n    const target = locale || normalizeLocalePath(path, locales).detectedLocale\n    const domain = detectDomainLocale(domainLocales, undefined, target)\n    if (domain) {\n      const proto = `http${domain.http ? '' : 's'}://`\n      const finalLocale = target === domain.defaultLocale ? '' : `/${target}`\n      return `${proto}${domain.domain}${normalizePathTrailingSlash(\n        `${basePath}${finalLocale}${path}`\n      )}`\n    }\n    return false\n  } else {\n    return false\n  }\n}\n","'use client'\n\nimport React, {\n  useRef,\n  useEffect,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n  forwardRef,\n  use,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport Head from '../shared/lib/head'\nimport { getImgProps } from '../shared/lib/get-img-props'\nimport type {\n  ImageProps,\n  ImgProps,\n  OnLoad,\n  OnLoadingComplete,\n  PlaceholderValue,\n} from '../shared/lib/get-img-props'\nimport type {\n  ImageConfigComplete,\n  ImageLoaderProps,\n} from '../shared/lib/image-config'\nimport { imageConfigDefault } from '../shared/lib/image-config'\nimport { ImageConfigContext } from '../shared/lib/image-config-context.shared-runtime'\nimport { warnOnce } from '../shared/lib/utils/warn-once'\nimport { RouterContext } from '../shared/lib/router-context.shared-runtime'\n\n// @ts-ignore - This is replaced by webpack alias\nimport defaultLoader from 'next/dist/shared/lib/image-loader'\nimport { useMergedRef } from './use-merged-ref'\n\n// This is replaced by webpack define plugin\nconst configEnv = process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete\n\nif (typeof window === 'undefined') {\n  ;(globalThis as any).__NEXT_IMAGE_IMPORTED = true\n}\n\nexport type { ImageLoaderProps }\nexport type ImageLoader = (p: ImageLoaderProps) => string\n\ntype ImgElementWithDataProp = HTMLImageElement & {\n  'data-loaded-src': string | undefined\n}\n\ntype ImageElementProps = ImgProps & {\n  unoptimized: boolean\n  placeholder: PlaceholderValue\n  onLoadRef: React.MutableRefObject<OnLoad | undefined>\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>\n  setBlurComplete: (b: boolean) => void\n  setShowAltText: (b: boolean) => void\n  sizesInput: string | undefined\n}\n\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(\n  img: ImgElementWithDataProp,\n  placeholder: PlaceholderValue,\n  onLoadRef: React.MutableRefObject<OnLoad | undefined>,\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>,\n  setBlurComplete: (b: boolean) => void,\n  unoptimized: boolean,\n  sizesInput: string | undefined\n) {\n  const src = img?.src\n  if (!img || img['data-loaded-src'] === src) {\n    return\n  }\n  img['data-loaded-src'] = src\n  const p = 'decode' in img ? img.decode() : Promise.resolve()\n  p.catch(() => {}).then(() => {\n    if (!img.parentElement || !img.isConnected) {\n      // Exit early in case of race condition:\n      // - onload() is called\n      // - decode() is called but incomplete\n      // - unmount is called\n      // - decode() completes\n      return\n    }\n    if (placeholder !== 'empty') {\n      setBlurComplete(true)\n    }\n    if (onLoadRef?.current) {\n      // Since we don't have the SyntheticEvent here,\n      // we must create one with the same shape.\n      // See https://reactjs.org/docs/events.html\n      const event = new Event('load')\n      Object.defineProperty(event, 'target', { writable: false, value: img })\n      let prevented = false\n      let stopped = false\n      onLoadRef.current({\n        ...event,\n        nativeEvent: event,\n        currentTarget: img,\n        target: img,\n        isDefaultPrevented: () => prevented,\n        isPropagationStopped: () => stopped,\n        persist: () => {},\n        preventDefault: () => {\n          prevented = true\n          event.preventDefault()\n        },\n        stopPropagation: () => {\n          stopped = true\n          event.stopPropagation()\n        },\n      })\n    }\n    if (onLoadingCompleteRef?.current) {\n      onLoadingCompleteRef.current(img)\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      const origSrc = new URL(src, 'http://n').searchParams.get('url') || src\n      if (img.getAttribute('data-nimg') === 'fill') {\n        if (!unoptimized && (!sizesInput || sizesInput === '100vw')) {\n          let widthViewportRatio =\n            img.getBoundingClientRect().width / window.innerWidth\n          if (widthViewportRatio < 0.6) {\n            if (sizesInput === '100vw') {\n              warnOnce(\n                `Image with src \"${origSrc}\" has \"fill\" prop and \"sizes\" prop of \"100vw\", but image is not rendered at full viewport width. Please adjust \"sizes\" to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes`\n              )\n            } else {\n              warnOnce(\n                `Image with src \"${origSrc}\" has \"fill\" but is missing \"sizes\" prop. Please add it to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes`\n              )\n            }\n          }\n        }\n        if (img.parentElement) {\n          const { position } = window.getComputedStyle(img.parentElement)\n          const valid = ['absolute', 'fixed', 'relative']\n          if (!valid.includes(position)) {\n            warnOnce(\n              `Image with src \"${origSrc}\" has \"fill\" and parent element with invalid \"position\". Provided \"${position}\" should be one of ${valid\n                .map(String)\n                .join(',')}.`\n            )\n          }\n        }\n        if (img.height === 0) {\n          warnOnce(\n            `Image with src \"${origSrc}\" has \"fill\" and a height value of 0. This is likely because the parent element of the image has not been styled to have a set height.`\n          )\n        }\n      }\n\n      const heightModified =\n        img.height.toString() !== img.getAttribute('height')\n      const widthModified = img.width.toString() !== img.getAttribute('width')\n      if (\n        (heightModified && !widthModified) ||\n        (!heightModified && widthModified)\n      ) {\n        warnOnce(\n          `Image with src \"${origSrc}\" has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles 'width: \"auto\"' or 'height: \"auto\"' to maintain the aspect ratio.`\n        )\n      }\n    }\n  })\n}\n\nfunction getDynamicProps(\n  fetchPriority?: string\n): Record<string, string | undefined> {\n  if (Boolean(use)) {\n    // In React 19.0.0 or newer, we must use camelCase\n    // prop to avoid \"Warning: Invalid DOM property\".\n    // See https://github.com/facebook/react/pull/25927\n    return { fetchPriority }\n  }\n  // In React 18.2.0 or older, we must use lowercase prop\n  // to avoid \"Warning: Invalid DOM property\".\n  return { fetchpriority: fetchPriority }\n}\n\nconst ImageElement = forwardRef<HTMLImageElement | null, ImageElementProps>(\n  (\n    {\n      src,\n      srcSet,\n      sizes,\n      height,\n      width,\n      decoding,\n      className,\n      style,\n      fetchPriority,\n      placeholder,\n      loading,\n      unoptimized,\n      fill,\n      onLoadRef,\n      onLoadingCompleteRef,\n      setBlurComplete,\n      setShowAltText,\n      sizesInput,\n      onLoad,\n      onError,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const ownRef = useCallback(\n      (img: ImgElementWithDataProp | null) => {\n        if (!img) {\n          return\n        }\n        if (onError) {\n          // If the image has an error before react hydrates, then the error is lost.\n          // The workaround is to wait until the image is mounted which is after hydration,\n          // then we set the src again to trigger the error handler (if there was an error).\n          // eslint-disable-next-line no-self-assign\n          img.src = img.src\n        }\n        if (process.env.NODE_ENV !== 'production') {\n          if (!src) {\n            console.error(`Image is missing required \"src\" property:`, img)\n          }\n          if (img.getAttribute('alt') === null) {\n            console.error(\n              `Image is missing required \"alt\" property. Please add Alternative Text to describe the image for screen readers and search engines.`\n            )\n          }\n        }\n        if (img.complete) {\n          handleLoading(\n            img,\n            placeholder,\n            onLoadRef,\n            onLoadingCompleteRef,\n            setBlurComplete,\n            unoptimized,\n            sizesInput\n          )\n        }\n      },\n      [\n        src,\n        placeholder,\n        onLoadRef,\n        onLoadingCompleteRef,\n        setBlurComplete,\n        onError,\n        unoptimized,\n        sizesInput,\n      ]\n    )\n\n    const ref = useMergedRef(forwardedRef, ownRef)\n\n    return (\n      <img\n        {...rest}\n        {...getDynamicProps(fetchPriority)}\n        // It's intended to keep `loading` before `src` because React updates\n        // props in order which causes Safari/Firefox to not lazy load properly.\n        // See https://github.com/facebook/react/issues/25883\n        loading={loading}\n        width={width}\n        height={height}\n        decoding={decoding}\n        data-nimg={fill ? 'fill' : '1'}\n        className={className}\n        style={style}\n        // It's intended to keep `src` the last attribute because React updates\n        // attributes in order. If we keep `src` the first one, Safari will\n        // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n        // updated by React. That causes multiple unnecessary requests if `srcSet`\n        // and `sizes` are defined.\n        // This bug cannot be reproduced in Chrome or Firefox.\n        sizes={sizes}\n        srcSet={srcSet}\n        src={src}\n        ref={ref}\n        onLoad={(event) => {\n          const img = event.currentTarget as ImgElementWithDataProp\n          handleLoading(\n            img,\n            placeholder,\n            onLoadRef,\n            onLoadingCompleteRef,\n            setBlurComplete,\n            unoptimized,\n            sizesInput\n          )\n        }}\n        onError={(event) => {\n          // if the real image fails to load, this will ensure \"alt\" is visible\n          setShowAltText(true)\n          if (placeholder !== 'empty') {\n            // If the real image fails to load, this will still remove the placeholder.\n            setBlurComplete(true)\n          }\n          if (onError) {\n            onError(event)\n          }\n        }}\n      />\n    )\n  }\n)\n\nfunction ImagePreload({\n  isAppRouter,\n  imgAttributes,\n}: {\n  isAppRouter: boolean\n  imgAttributes: ImgProps\n}) {\n  const opts = {\n    as: 'image',\n    imageSrcSet: imgAttributes.srcSet,\n    imageSizes: imgAttributes.sizes,\n    crossOrigin: imgAttributes.crossOrigin,\n    referrerPolicy: imgAttributes.referrerPolicy,\n    ...getDynamicProps(imgAttributes.fetchPriority),\n  }\n\n  if (isAppRouter && ReactDOM.preload) {\n    // See https://github.com/facebook/react/pull/26940\n    ReactDOM.preload(\n      imgAttributes.src,\n      // @ts-expect-error TODO: upgrade to `@types/react-dom@18.3.x`\n      opts\n    )\n    return null\n  }\n\n  return (\n    <Head>\n      <link\n        key={\n          '__nimg-' +\n          imgAttributes.src +\n          imgAttributes.srcSet +\n          imgAttributes.sizes\n        }\n        rel=\"preload\"\n        // Note how we omit the `href` attribute, as it would only be relevant\n        // for browsers that do not support `imagesrcset`, and in those cases\n        // it would cause the incorrect image to be preloaded.\n        //\n        // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n        href={imgAttributes.srcSet ? undefined : imgAttributes.src}\n        {...opts}\n      />\n    </Head>\n  )\n}\n\n/**\n * The `Image` component is used to optimize images.\n *\n * Read more: [Next.js docs: `Image`](https://nextjs.org/docs/app/api-reference/components/image)\n */\nexport const Image = forwardRef<HTMLImageElement | null, ImageProps>(\n  (props, forwardedRef) => {\n    const pagesRouter = useContext(RouterContext)\n    // We're in the app directory if there is no pages router.\n    const isAppRouter = !pagesRouter\n\n    const configContext = useContext(ImageConfigContext)\n    const config = useMemo(() => {\n      const c = configEnv || configContext || imageConfigDefault\n      const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n      const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n      const qualities = c.qualities?.sort((a, b) => a - b)\n      return { ...c, allSizes, deviceSizes, qualities }\n    }, [configContext])\n\n    const { onLoad, onLoadingComplete } = props\n    const onLoadRef = useRef(onLoad)\n\n    useEffect(() => {\n      onLoadRef.current = onLoad\n    }, [onLoad])\n\n    const onLoadingCompleteRef = useRef(onLoadingComplete)\n\n    useEffect(() => {\n      onLoadingCompleteRef.current = onLoadingComplete\n    }, [onLoadingComplete])\n\n    const [blurComplete, setBlurComplete] = useState(false)\n    const [showAltText, setShowAltText] = useState(false)\n\n    const { props: imgAttributes, meta: imgMeta } = getImgProps(props, {\n      defaultLoader,\n      imgConf: config,\n      blurComplete,\n      showAltText,\n    })\n\n    return (\n      <>\n        {\n          <ImageElement\n            {...imgAttributes}\n            unoptimized={imgMeta.unoptimized}\n            placeholder={imgMeta.placeholder}\n            fill={imgMeta.fill}\n            onLoadRef={onLoadRef}\n            onLoadingCompleteRef={onLoadingCompleteRef}\n            setBlurComplete={setBlurComplete}\n            setShowAltText={setShowAltText}\n            sizesInput={props.sizes}\n            ref={forwardedRef}\n          />\n        }\n        {imgMeta.priority ? (\n          <ImagePreload\n            isAppRouter={isAppRouter}\n            imgAttributes={imgAttributes}\n          />\n        ) : null}\n      </>\n    )\n  }\n)\n","'use client'\n\nimport React, {\n  useRef,\n  useEffect,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n  type JSX,\n} from 'react'\nimport * as ReactDOM from 'react-dom'\nimport Head from '../../shared/lib/head'\nimport {\n  imageConfigDefault,\n  VALID_LOADERS,\n} from '../../shared/lib/image-config'\nimport type {\n  ImageConfigComplete,\n  LoaderValue,\n} from '../../shared/lib/image-config'\nimport { useIntersection } from '../use-intersection'\nimport { ImageConfigContext } from '../../shared/lib/image-config-context.shared-runtime'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\nimport { normalizePathTrailingSlash } from '../normalize-trailing-slash'\n\nfunction normalizeSrc(src: string): string {\n  return src[0] === '/' ? src.slice(1) : src\n}\n\nconst supportsFloat = typeof ReactDOM.preload === 'function'\nconst DEFAULT_Q = 75\nconst configEnv = process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete\nconst loadedImageURLs = new Set<string>()\nconst allImgs = new Map<\n  string,\n  { src: string; priority: boolean; placeholder: string }\n>()\nlet perfObserver: PerformanceObserver | undefined\nconst emptyDataURL =\n  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n\nif (typeof window === 'undefined') {\n  ;(globalThis as any).__NEXT_IMAGE_IMPORTED = true\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined] as const\ntype LoadingValue = (typeof VALID_LOADING_VALUES)[number]\ntype ImageConfig = ImageConfigComplete & { allSizes: number[] }\nexport type ImageLoader = (resolverProps: ImageLoaderProps) => string\n\nexport type ImageLoaderProps = {\n  src: string\n  width: number\n  quality?: number\n}\n\n// Do not export - this is an internal type only\n// because `next.config.js` is only meant for the\n// built-in loaders, not for a custom loader() prop.\ntype ImageLoaderWithConfig = (\n  resolverProps: ImageLoaderPropsWithConfig\n) => string\ntype ImageLoaderPropsWithConfig = ImageLoaderProps & {\n  config: Readonly<ImageConfig>\n}\n\nfunction imgixLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  // Demo: https://static.imgix.net/daisy.png?auto=format&fit=max&w=300\n  const url = new URL(`${config.path}${normalizeSrc(src)}`)\n  const params = url.searchParams\n\n  // auto params can be combined with comma separation, or reiteration\n  params.set('auto', params.getAll('auto').join(',') || 'format')\n  params.set('fit', params.get('fit') || 'max')\n  params.set('w', params.get('w') || width.toString())\n\n  if (quality) {\n    params.set('q', quality.toString())\n  }\n\n  return url.href\n}\n\nfunction akamaiLoader({\n  config,\n  src,\n  width,\n}: ImageLoaderPropsWithConfig): string {\n  return `${config.path}${normalizeSrc(src)}?imwidth=${width}`\n}\n\nfunction cloudinaryLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  // Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit,q_auto/turtles.jpg\n  const params = ['f_auto', 'c_limit', 'w_' + width, 'q_' + (quality || 'auto')]\n  const paramsString = params.join(',') + '/'\n  return `${config.path}${paramsString}${normalizeSrc(src)}`\n}\n\nfunction customLoader({ src }: ImageLoaderProps): string {\n  throw new Error(\n    `Image with src \"${src}\" is missing \"loader\" prop.` +\n      `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`\n  )\n}\n\nfunction defaultLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  if (process.env.NODE_ENV !== 'production') {\n    const missingValues = []\n\n    // these should always be provided but make sure they are\n    if (!src) missingValues.push('src')\n    if (!width) missingValues.push('width')\n\n    if (missingValues.length > 0) {\n      throw new Error(\n        `Next Image Optimization requires ${missingValues.join(\n          ', '\n        )} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify(\n          { src, width, quality }\n        )}`\n      )\n    }\n\n    if (src.startsWith('//')) {\n      throw new Error(\n        `Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`\n      )\n    }\n\n    if (src.startsWith('/') && config.localPatterns) {\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const {\n          hasLocalMatch,\n        } = require('../../shared/lib/match-local-pattern')\n        if (!hasLocalMatch(config.localPatterns, src)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\` does not match \\`images.localPatterns\\` configured in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n          )\n        }\n      }\n    }\n\n    if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\n      let parsedSrc: URL\n      try {\n        parsedSrc = new URL(src)\n      } catch (err) {\n        console.error(err)\n        throw new Error(\n          `Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`\n        )\n      }\n\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const {\n          hasRemoteMatch,\n        } = require('../../shared/lib/match-remote-pattern')\n        if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host`\n          )\n        }\n      }\n    }\n\n    if (quality && config.qualities && !config.qualities.includes(quality)) {\n      throw new Error(\n        `Invalid quality prop (${quality}) on \\`next/image\\` does not match \\`images.qualities\\` configured in your \\`next.config.js\\`\\n` +\n          `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`\n      )\n    }\n  }\n\n  const q =\n    quality ||\n    config.qualities?.reduce((prev, cur) =>\n      Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q) ? cur : prev\n    ) ||\n    DEFAULT_Q\n\n  if (!config.dangerouslyAllowSVG && src.split('?', 1)[0].endsWith('.svg')) {\n    // Special case to make svg serve as-is to avoid proxying\n    // through the built-in Image Optimization API.\n    return src\n  }\n\n  return `${normalizePathTrailingSlash(config.path)}?url=${encodeURIComponent(\n    src\n  )}&w=${width}&q=${q}`\n}\n\nconst loaders = new Map<\n  LoaderValue,\n  (props: ImageLoaderPropsWithConfig) => string\n>([\n  ['default', defaultLoader],\n  ['imgix', imgixLoader],\n  ['cloudinary', cloudinaryLoader],\n  ['akamai', akamaiLoader],\n  ['custom', customLoader],\n])\n\nconst VALID_LAYOUT_VALUES = [\n  'fill',\n  'fixed',\n  'intrinsic',\n  'responsive',\n  undefined,\n] as const\ntype LayoutValue = (typeof VALID_LAYOUT_VALUES)[number]\n\ntype PlaceholderValue = 'blur' | 'empty'\n\ntype OnLoadingComplete = (result: {\n  naturalWidth: number\n  naturalHeight: number\n}) => void\n\ntype ImgElementStyle = NonNullable<JSX.IntrinsicElements['img']['style']>\n\ntype ImgElementWithDataProp = HTMLImageElement & {\n  'data-loaded-src': string | undefined\n}\n\nexport interface StaticImageData {\n  src: string\n  height: number\n  width: number\n  blurDataURL?: string\n}\n\ninterface StaticRequire {\n  default: StaticImageData\n}\n\ntype StaticImport = StaticRequire | StaticImageData\n\ntype SafeNumber = number | `${number}`\n\nfunction isStaticRequire(\n  src: StaticRequire | StaticImageData\n): src is StaticRequire {\n  return (src as StaticRequire).default !== undefined\n}\n\nfunction isStaticImageData(\n  src: StaticRequire | StaticImageData\n): src is StaticImageData {\n  return (src as StaticImageData).src !== undefined\n}\n\nfunction isStaticImport(src: string | StaticImport): src is StaticImport {\n  return (\n    typeof src === 'object' &&\n    (isStaticRequire(src as StaticImport) ||\n      isStaticImageData(src as StaticImport))\n  )\n}\n\nexport type ImageProps = Omit<\n  JSX.IntrinsicElements['img'],\n  'src' | 'srcSet' | 'ref' | 'width' | 'height' | 'loading'\n> & {\n  src: string | StaticImport\n  width?: SafeNumber\n  height?: SafeNumber\n  layout?: LayoutValue\n  loader?: ImageLoader\n  quality?: SafeNumber\n  priority?: boolean\n  loading?: LoadingValue\n  lazyRoot?: React.RefObject<HTMLElement | null> | null\n  lazyBoundary?: string\n  placeholder?: PlaceholderValue\n  blurDataURL?: string\n  unoptimized?: boolean\n  objectFit?: ImgElementStyle['objectFit']\n  objectPosition?: ImgElementStyle['objectPosition']\n  onLoadingComplete?: OnLoadingComplete\n}\n\ntype ImageElementProps = Omit<ImageProps, 'src' | 'loader'> & {\n  srcString: string\n  imgAttributes: GenImgAttrsResult\n  heightInt: number | undefined\n  widthInt: number | undefined\n  qualityInt: number | undefined\n  layout: LayoutValue\n  imgStyle: ImgElementStyle\n  blurStyle: ImgElementStyle\n  isLazy: boolean\n  loading: LoadingValue\n  config: ImageConfig\n  unoptimized: boolean\n  loader: ImageLoaderWithConfig\n  placeholder: PlaceholderValue\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>\n  setBlurComplete: (b: boolean) => void\n  setIntersection: (img: HTMLImageElement | null) => void\n  isVisible: boolean\n  noscriptSizes: string | undefined\n}\n\nfunction getWidths(\n  { deviceSizes, allSizes }: ImageConfig,\n  width: number | undefined,\n  layout: LayoutValue,\n  sizes: string | undefined\n): { widths: number[]; kind: 'w' | 'x' } {\n  if (sizes && (layout === 'fill' || layout === 'responsive')) {\n    // Find all the \"vw\" percent sizes used in the sizes prop\n    const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g\n    const percentSizes = []\n    for (let match; (match = viewportWidthRe.exec(sizes)); match) {\n      percentSizes.push(parseInt(match[2]))\n    }\n    if (percentSizes.length) {\n      const smallestRatio = Math.min(...percentSizes) * 0.01\n      return {\n        widths: allSizes.filter((s) => s >= deviceSizes[0] * smallestRatio),\n        kind: 'w',\n      }\n    }\n    return { widths: allSizes, kind: 'w' }\n  }\n  if (\n    typeof width !== 'number' ||\n    layout === 'fill' ||\n    layout === 'responsive'\n  ) {\n    return { widths: deviceSizes, kind: 'w' }\n  }\n\n  const widths = [\n    ...new Set(\n      // > This means that most OLED screens that say they are 3x resolution,\n      // > are actually 3x in the green color, but only 1.5x in the red and\n      // > blue colors. Showing a 3x resolution image in the app vs a 2x\n      // > resolution image will be visually the same, though the 3x image\n      // > takes significantly more data. Even true 3x resolution screens are\n      // > wasteful as the human eye cannot see that level of detail without\n      // > something like a magnifying glass.\n      // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n      [width, width * 2 /*, width * 3*/].map(\n        (w) => allSizes.find((p) => p >= w) || allSizes[allSizes.length - 1]\n      )\n    ),\n  ]\n  return { widths, kind: 'x' }\n}\n\ntype GenImgAttrsData = {\n  config: ImageConfig\n  src: string\n  unoptimized: boolean\n  layout: LayoutValue\n  loader: ImageLoaderWithConfig\n  width?: number\n  quality?: number\n  sizes?: string\n}\n\ntype GenImgAttrsResult = {\n  src: string\n  srcSet: string | undefined\n  sizes: string | undefined\n}\n\nfunction generateImgAttrs({\n  config,\n  src,\n  unoptimized,\n  layout,\n  width,\n  quality,\n  sizes,\n  loader,\n}: GenImgAttrsData): GenImgAttrsResult {\n  if (unoptimized) {\n    return { src, srcSet: undefined, sizes: undefined }\n  }\n\n  const { widths, kind } = getWidths(config, width, layout, sizes)\n  const last = widths.length - 1\n\n  return {\n    sizes: !sizes && kind === 'w' ? '100vw' : sizes,\n    srcSet: widths\n      .map(\n        (w, i) =>\n          `${loader({ config, src, quality, width: w })} ${\n            kind === 'w' ? w : i + 1\n          }${kind}`\n      )\n      .join(', '),\n\n    // It's intended to keep `src` the last attribute because React updates\n    // attributes in order. If we keep `src` the first one, Safari will\n    // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n    // updated by React. That causes multiple unnecessary requests if `srcSet`\n    // and `sizes` are defined.\n    // This bug cannot be reproduced in Chrome or Firefox.\n    src: loader({ config, src, quality, width: widths[last] }),\n  }\n}\n\nfunction getInt(x: unknown): number | undefined {\n  if (typeof x === 'number') {\n    return x\n  }\n  if (typeof x === 'string') {\n    return parseInt(x, 10)\n  }\n  return undefined\n}\n\nfunction defaultImageLoader(loaderProps: ImageLoaderPropsWithConfig) {\n  const loaderKey = loaderProps.config?.loader || 'default'\n  const load = loaders.get(loaderKey)\n  if (load) {\n    return load(loaderProps)\n  }\n  throw new Error(\n    `Unknown \"loader\" found in \"next.config.js\". Expected: ${VALID_LOADERS.join(\n      ', '\n    )}. Received: ${loaderKey}`\n  )\n}\n\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(\n  img: ImgElementWithDataProp,\n  src: string,\n  layout: LayoutValue,\n  placeholder: PlaceholderValue,\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>,\n  setBlurComplete: (b: boolean) => void\n) {\n  if (!img || img.src === emptyDataURL || img['data-loaded-src'] === src) {\n    return\n  }\n  img['data-loaded-src'] = src\n  const p = 'decode' in img ? img.decode() : Promise.resolve()\n  p.catch(() => {}).then(() => {\n    if (!img.parentNode) {\n      // Exit early in case of race condition:\n      // - onload() is called\n      // - decode() is called but incomplete\n      // - unmount is called\n      // - decode() completes\n      return\n    }\n    loadedImageURLs.add(src)\n    if (placeholder === 'blur') {\n      setBlurComplete(true)\n    }\n    if (onLoadingCompleteRef?.current) {\n      const { naturalWidth, naturalHeight } = img\n      // Pass back read-only primitive values but not the\n      // underlying DOM element because it could be misused.\n      onLoadingCompleteRef.current({ naturalWidth, naturalHeight })\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (img.parentElement?.parentElement) {\n        const parent = getComputedStyle(img.parentElement.parentElement)\n        if (!parent.position) {\n          // The parent has not been rendered to the dom yet and therefore it has no position. Skip the warnings for such cases.\n        } else if (layout === 'responsive' && parent.display === 'flex') {\n          warnOnce(\n            `Image with src \"${src}\" may not render properly as a child of a flex container. Consider wrapping the image with a div to configure the width.`\n          )\n        } else if (\n          layout === 'fill' &&\n          parent.position !== 'relative' &&\n          parent.position !== 'fixed' &&\n          parent.position !== 'absolute'\n        ) {\n          warnOnce(\n            `Image with src \"${src}\" may not render properly with a parent using position:\"${parent.position}\". Consider changing the parent style to position:\"relative\" with a width and height.`\n          )\n        }\n      }\n    }\n  })\n}\n\nconst ImageElement = ({\n  imgAttributes,\n  heightInt,\n  widthInt,\n  qualityInt,\n  layout,\n  className,\n  imgStyle,\n  blurStyle,\n  isLazy,\n  placeholder,\n  loading,\n  srcString,\n  config,\n  unoptimized,\n  loader,\n  onLoadingCompleteRef,\n  setBlurComplete,\n  setIntersection,\n  onLoad,\n  onError,\n  isVisible,\n  noscriptSizes,\n  ...rest\n}: ImageElementProps) => {\n  loading = isLazy ? 'lazy' : loading\n  return (\n    <>\n      <img\n        {...rest}\n        {...imgAttributes}\n        decoding=\"async\"\n        data-nimg={layout}\n        className={className}\n        style={{ ...imgStyle, ...blurStyle }}\n        ref={useCallback(\n          (img: ImgElementWithDataProp) => {\n            if (process.env.NODE_ENV !== 'production') {\n              if (img && !srcString) {\n                console.error(`Image is missing required \"src\" property:`, img)\n              }\n            }\n            setIntersection(img)\n            if (img?.complete) {\n              handleLoading(\n                img,\n                srcString,\n                layout,\n                placeholder,\n                onLoadingCompleteRef,\n                setBlurComplete\n              )\n            }\n          },\n          [\n            setIntersection,\n            srcString,\n            layout,\n            placeholder,\n            onLoadingCompleteRef,\n            setBlurComplete,\n          ]\n        )}\n        onLoad={(event) => {\n          const img = event.currentTarget as ImgElementWithDataProp\n          handleLoading(\n            img,\n            srcString,\n            layout,\n            placeholder,\n            onLoadingCompleteRef,\n            setBlurComplete\n          )\n          if (onLoad) {\n            onLoad(event)\n          }\n        }}\n        onError={(event) => {\n          if (placeholder === 'blur') {\n            // If the real image fails to load, this will still remove the placeholder.\n            setBlurComplete(true)\n          }\n          if (onError) {\n            onError(event)\n          }\n        }}\n      />\n      {(isLazy || placeholder === 'blur') && (\n        <noscript>\n          <img\n            {...rest}\n            // @ts-ignore - TODO: upgrade to `@types/react@17`\n            loading={loading}\n            decoding=\"async\"\n            data-nimg={layout}\n            style={imgStyle}\n            className={className}\n            // It's intended to keep `loading` before `src` because React updates\n            // props in order which causes Safari/Firefox to not lazy load properly.\n            // See https://github.com/facebook/react/issues/25883\n            {...generateImgAttrs({\n              config,\n              src: srcString,\n              unoptimized,\n              layout,\n              width: widthInt,\n              quality: qualityInt,\n              sizes: noscriptSizes,\n              loader,\n            })}\n          />\n        </noscript>\n      )}\n    </>\n  )\n}\n\nexport default function Image({\n  src,\n  sizes,\n  unoptimized = false,\n  priority = false,\n  loading,\n  lazyRoot = null,\n  lazyBoundary,\n  className,\n  quality,\n  width,\n  height,\n  style,\n  objectFit,\n  objectPosition,\n  onLoadingComplete,\n  placeholder = 'empty',\n  blurDataURL,\n  ...all\n}: ImageProps) {\n  const configContext = useContext(ImageConfigContext)\n  const config: ImageConfig = useMemo(() => {\n    const c = configEnv || configContext || imageConfigDefault\n    const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n    const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n    const qualities = c.qualities?.sort((a, b) => a - b)\n    return { ...c, allSizes, deviceSizes, qualities }\n  }, [configContext])\n\n  let rest: Partial<ImageProps> = all\n  let layout: NonNullable<LayoutValue> = sizes ? 'responsive' : 'intrinsic'\n  if ('layout' in rest) {\n    // Override default layout if the user specified one:\n    if (rest.layout) layout = rest.layout\n\n    // Remove property so it's not spread on <img>:\n    delete rest.layout\n  }\n\n  let loader: ImageLoaderWithConfig = defaultImageLoader\n  if ('loader' in rest) {\n    if (rest.loader) {\n      const customImageLoader = rest.loader\n      loader = (obj) => {\n        const { config: _, ...opts } = obj\n        // The config object is internal only so we must\n        // not pass it to the user-defined loader()\n        return customImageLoader(opts)\n      }\n    }\n    // Remove property so it's not spread on <img>\n    delete rest.loader\n  }\n\n  let staticSrc = ''\n  if (isStaticImport(src)) {\n    const staticImageData = isStaticRequire(src) ? src.default : src\n\n    if (!staticImageData.src) {\n      throw new Error(\n        `An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(\n          staticImageData\n        )}`\n      )\n    }\n    blurDataURL = blurDataURL || staticImageData.blurDataURL\n    staticSrc = staticImageData.src\n    if (!layout || layout !== 'fill') {\n      height = height || staticImageData.height\n      width = width || staticImageData.width\n      if (!staticImageData.height || !staticImageData.width) {\n        throw new Error(\n          `An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(\n            staticImageData\n          )}`\n        )\n      }\n    }\n  }\n  src = typeof src === 'string' ? src : staticSrc\n\n  let isLazy =\n    !priority && (loading === 'lazy' || typeof loading === 'undefined')\n  if (src.startsWith('data:') || src.startsWith('blob:')) {\n    // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n    unoptimized = true\n    isLazy = false\n  }\n  if (typeof window !== 'undefined' && loadedImageURLs.has(src)) {\n    isLazy = false\n  }\n  if (config.unoptimized) {\n    unoptimized = true\n  }\n\n  const [blurComplete, setBlurComplete] = useState(false)\n  const [setIntersection, isIntersected, resetIntersected] =\n    useIntersection<HTMLImageElement>({\n      rootRef: lazyRoot,\n      rootMargin: lazyBoundary || '200px',\n      disabled: !isLazy,\n    })\n  const isVisible = !isLazy || isIntersected\n\n  const wrapperStyle: JSX.IntrinsicElements['span']['style'] = {\n    boxSizing: 'border-box',\n    display: 'block',\n    overflow: 'hidden',\n    width: 'initial',\n    height: 'initial',\n    background: 'none',\n    opacity: 1,\n    border: 0,\n    margin: 0,\n    padding: 0,\n  }\n  const sizerStyle: JSX.IntrinsicElements['span']['style'] = {\n    boxSizing: 'border-box',\n    display: 'block',\n    width: 'initial',\n    height: 'initial',\n    background: 'none',\n    opacity: 1,\n    border: 0,\n    margin: 0,\n    padding: 0,\n  }\n  let hasSizer = false\n  let sizerSvgUrl: string | undefined\n  const layoutStyle: ImgElementStyle = {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    bottom: 0,\n    right: 0,\n\n    boxSizing: 'border-box',\n    padding: 0,\n    border: 'none',\n    margin: 'auto',\n\n    display: 'block',\n    width: 0,\n    height: 0,\n    minWidth: '100%',\n    maxWidth: '100%',\n    minHeight: '100%',\n    maxHeight: '100%',\n\n    objectFit,\n    objectPosition,\n  }\n\n  let widthInt = getInt(width)\n  let heightInt = getInt(height)\n  const qualityInt = getInt(quality)\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (!src) {\n      // React doesn't show the stack trace and there's\n      // no `src` to help identify which image, so we\n      // instead console.error(ref) during mount.\n      widthInt = widthInt || 1\n      heightInt = heightInt || 1\n      unoptimized = true\n    } else {\n      if (!VALID_LAYOUT_VALUES.includes(layout)) {\n        throw new Error(\n          `Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(\n            String\n          ).join(',')}.`\n        )\n      }\n\n      if (\n        (typeof widthInt !== 'undefined' && isNaN(widthInt)) ||\n        (typeof heightInt !== 'undefined' && isNaN(heightInt))\n      ) {\n        throw new Error(\n          `Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`\n        )\n      }\n      if (layout === 'fill' && (width || height)) {\n        warnOnce(\n          `Image with src \"${src}\" and \"layout='fill'\" has unused properties assigned. Please remove \"width\" and \"height\".`\n        )\n      }\n      if (!VALID_LOADING_VALUES.includes(loading)) {\n        throw new Error(\n          `Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(\n            String\n          ).join(',')}.`\n        )\n      }\n      if (priority && loading === 'lazy') {\n        throw new Error(\n          `Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`\n        )\n      }\n      if (sizes && layout !== 'fill' && layout !== 'responsive') {\n        warnOnce(\n          `Image with src \"${src}\" has \"sizes\" property but it will be ignored. Only use \"sizes\" with \"layout='fill'\" or \"layout='responsive'\"`\n        )\n      }\n      if (placeholder === 'blur') {\n        if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n          warnOnce(\n            `Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`\n          )\n        }\n        if (!blurDataURL) {\n          const VALID_BLUR_EXT = ['jpeg', 'png', 'webp', 'avif'] // should match next-image-loader\n\n          throw new Error(\n            `Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n          Possible solutions:\n            - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n            - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(\n              ','\n            )} (animated images not supported)\n            - Remove the \"placeholder\" property, effectively no blur effect\n          Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`\n          )\n        }\n      }\n      if ('ref' in rest) {\n        warnOnce(\n          `Image with src \"${src}\" is using unsupported \"ref\" property. Consider using the \"onLoadingComplete\" property instead.`\n        )\n      }\n\n      if (!unoptimized && loader !== defaultImageLoader) {\n        const urlStr = loader({\n          config,\n          src,\n          width: widthInt || 400,\n          quality: qualityInt || 75,\n        })\n        let url: URL | undefined\n        try {\n          url = new URL(urlStr)\n        } catch (err) {}\n        if (urlStr === src || (url && url.pathname === src && !url.search)) {\n          warnOnce(\n            `Image with src \"${src}\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.` +\n              `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`\n          )\n        }\n      }\n\n      if (style) {\n        let overwrittenStyles = Object.keys(style).filter(\n          (key) => key in layoutStyle\n        )\n        if (overwrittenStyles.length) {\n          warnOnce(\n            `Image with src ${src} is assigned the following styles, which are overwritten by automatically-generated styles: ${overwrittenStyles.join(\n              ', '\n            )}`\n          )\n        }\n      }\n\n      if (\n        typeof window !== 'undefined' &&\n        !perfObserver &&\n        window.PerformanceObserver\n      ) {\n        perfObserver = new PerformanceObserver((entryList) => {\n          for (const entry of entryList.getEntries()) {\n            // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n            const imgSrc = entry?.element?.src || ''\n            const lcpImage = allImgs.get(imgSrc)\n            if (\n              lcpImage &&\n              !lcpImage.priority &&\n              lcpImage.placeholder !== 'blur' &&\n              !lcpImage.src.startsWith('data:') &&\n              !lcpImage.src.startsWith('blob:')\n            ) {\n              // https://web.dev/lcp/#measure-lcp-in-javascript\n              warnOnce(\n                `Image with src \"${lcpImage.src}\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.` +\n                  `\\nRead more: https://nextjs.org/docs/api-reference/next/legacy/image#priority`\n              )\n            }\n          }\n        })\n        try {\n          perfObserver.observe({\n            type: 'largest-contentful-paint',\n            buffered: true,\n          })\n        } catch (err) {\n          // Log error but don't crash the app\n          console.error(err)\n        }\n      }\n    }\n  }\n  const imgStyle = Object.assign({}, style, layoutStyle)\n  const blurStyle =\n    placeholder === 'blur' && !blurComplete\n      ? {\n          backgroundSize: objectFit || 'cover',\n          backgroundPosition: objectPosition || '0% 0%',\n          filter: 'blur(20px)',\n          backgroundImage: `url(\"${blurDataURL}\")`,\n        }\n      : {}\n  if (layout === 'fill') {\n    // <Image src=\"i.png\" layout=\"fill\" />\n    wrapperStyle.display = 'block'\n    wrapperStyle.position = 'absolute'\n    wrapperStyle.top = 0\n    wrapperStyle.left = 0\n    wrapperStyle.bottom = 0\n    wrapperStyle.right = 0\n  } else if (\n    typeof widthInt !== 'undefined' &&\n    typeof heightInt !== 'undefined'\n  ) {\n    // <Image src=\"i.png\" width=\"100\" height=\"100\" />\n    const quotient = heightInt / widthInt\n    const paddingTop = isNaN(quotient) ? '100%' : `${quotient * 100}%`\n    if (layout === 'responsive') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"responsive\" />\n      wrapperStyle.display = 'block'\n      wrapperStyle.position = 'relative'\n      hasSizer = true\n      sizerStyle.paddingTop = paddingTop\n    } else if (layout === 'intrinsic') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"intrinsic\" />\n      wrapperStyle.display = 'inline-block'\n      wrapperStyle.position = 'relative'\n      wrapperStyle.maxWidth = '100%'\n      hasSizer = true\n      sizerStyle.maxWidth = '100%'\n      sizerSvgUrl = `data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27${widthInt}%27%20height=%27${heightInt}%27/%3e`\n    } else if (layout === 'fixed') {\n      // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"fixed\" />\n      wrapperStyle.display = 'inline-block'\n      wrapperStyle.position = 'relative'\n      wrapperStyle.width = widthInt\n      wrapperStyle.height = heightInt\n    }\n  } else {\n    // <Image src=\"i.png\" />\n    if (process.env.NODE_ENV !== 'production') {\n      throw new Error(\n        `Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`\n      )\n    }\n  }\n\n  let imgAttributes: GenImgAttrsResult = {\n    src: emptyDataURL,\n    srcSet: undefined,\n    sizes: undefined,\n  }\n\n  if (isVisible) {\n    imgAttributes = generateImgAttrs({\n      config,\n      src,\n      unoptimized,\n      layout,\n      width: widthInt,\n      quality: qualityInt,\n      sizes,\n      loader,\n    })\n  }\n\n  let srcString: string = src\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof window !== 'undefined') {\n      let fullUrl: URL\n      try {\n        fullUrl = new URL(imgAttributes.src)\n      } catch (e) {\n        fullUrl = new URL(imgAttributes.src, window.location.href)\n      }\n      allImgs.set(fullUrl.href, { src, priority, placeholder })\n    }\n  }\n\n  const linkProps:\n    | React.DetailedHTMLProps<\n        React.LinkHTMLAttributes<HTMLLinkElement>,\n        HTMLLinkElement\n      >\n    | undefined = supportsFloat\n    ? undefined\n    : {\n        imageSrcSet: imgAttributes.srcSet,\n        imageSizes: imgAttributes.sizes,\n        crossOrigin: rest.crossOrigin,\n        referrerPolicy: rest.referrerPolicy,\n      }\n\n  const useLayoutEffect =\n    typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n  const onLoadingCompleteRef = useRef(onLoadingComplete)\n\n  const previousImageSrc = useRef<string | StaticImport>(src)\n  useEffect(() => {\n    onLoadingCompleteRef.current = onLoadingComplete\n  }, [onLoadingComplete])\n\n  useLayoutEffect(() => {\n    if (previousImageSrc.current !== src) {\n      resetIntersected()\n      previousImageSrc.current = src\n    }\n  }, [resetIntersected, src])\n\n  const imgElementArgs = {\n    isLazy,\n    imgAttributes,\n    heightInt,\n    widthInt,\n    qualityInt,\n    layout,\n    className,\n    imgStyle,\n    blurStyle,\n    loading,\n    config,\n    unoptimized,\n    placeholder,\n    loader,\n    srcString,\n    onLoadingCompleteRef,\n    setBlurComplete,\n    setIntersection,\n    isVisible,\n    noscriptSizes: sizes,\n    ...rest,\n  }\n  return (\n    <>\n      <span style={wrapperStyle}>\n        {hasSizer ? (\n          <span style={sizerStyle}>\n            {sizerSvgUrl ? (\n              <img\n                style={{\n                  display: 'block',\n                  maxWidth: '100%',\n                  width: 'initial',\n                  height: 'initial',\n                  background: 'none',\n                  opacity: 1,\n                  border: 0,\n                  margin: 0,\n                  padding: 0,\n                }}\n                alt=\"\"\n                aria-hidden={true}\n                src={sizerSvgUrl}\n              />\n            ) : null}\n          </span>\n        ) : null}\n        <ImageElement {...imgElementArgs} />\n      </span>\n      {!supportsFloat && priority ? (\n        // Note how we omit the `href` attribute, as it would only be relevant\n        // for browsers that do not support `imagesrcset`, and in those cases\n        // it would likely cause the incorrect image to be preloaded.\n        //\n        // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n        <Head>\n          <link\n            key={\n              '__nimg-' +\n              imgAttributes.src +\n              imgAttributes.srcSet +\n              imgAttributes.sizes\n            }\n            rel=\"preload\"\n            as=\"image\"\n            href={imgAttributes.srcSet ? undefined : imgAttributes.src}\n            {...linkProps}\n          />\n        </Head>\n      ) : null}\n    </>\n  )\n}\n","'use client'\n\nimport type {\n  NextRouter,\n  PrefetchOptions as RouterPrefetchOptions,\n} from '../shared/lib/router/router'\n\nimport React from 'react'\nimport type { UrlObject } from 'url'\nimport { resolveHref } from './resolve-href'\nimport { isLocalURL } from '../shared/lib/router/utils/is-local-url'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport { isAbsoluteUrl } from '../shared/lib/utils'\nimport { addLocale } from './add-locale'\nimport { RouterContext } from '../shared/lib/router-context.shared-runtime'\nimport type { AppRouterInstance } from '../shared/lib/app-router-context.shared-runtime'\nimport { useIntersection } from './use-intersection'\nimport { getDomainLocale } from './get-domain-locale'\nimport { addBasePath } from './add-base-path'\nimport { useMergedRef } from './use-merged-ref'\n\ntype Url = string | UrlObject\ntype RequiredKeys<T> = {\n  [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T]\ntype OptionalKeys<T> = {\n  [K in keyof T]-?: {} extends Pick<T, K> ? K : never\n}[keyof T]\n\ntype InternalLinkProps = {\n  /**\n   * The path or URL to navigate to. It can also be an object.\n   *\n   * @example https://nextjs.org/docs/api-reference/next/link#with-url-object\n   */\n  href: Url\n  /**\n   * Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes).\n   */\n  as?: Url\n  /**\n   * Replace the current `history` state instead of adding a new url into the stack.\n   *\n   * @defaultValue `false`\n   */\n  replace?: boolean\n  /**\n   * Whether to override the default scroll behavior\n   *\n   * @example https://nextjs.org/docs/api-reference/next/link#disable-scrolling-to-the-top-of-the-page\n   *\n   * @defaultValue `true`\n   */\n  scroll?: boolean\n  /**\n   * Update the path of the current page without rerunning [`getStaticProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-props), [`getServerSideProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props) or [`getInitialProps`](/docs/pages/api-reference/functions/get-initial-props).\n   *\n   * @defaultValue `false`\n   */\n  shallow?: boolean\n  /**\n   * Forces `Link` to send the `href` property to its child.\n   *\n   * @defaultValue `false`\n   */\n  passHref?: boolean\n  /**\n   * Prefetch the page in the background.\n   * Any `<Link />` that is in the viewport (initially or through scroll) will be prefetched.\n   * Prefetch can be disabled by passing `prefetch={false}`. Prefetching is only enabled in production.\n   *\n   * In App Router:\n   * - `null` (default): For statically generated pages, this will prefetch the full React Server Component data. For dynamic pages, this will prefetch up to the nearest route segment with a [`loading.js`](https://nextjs.org/docs/app/api-reference/file-conventions/loading) file. If there is no loading file, it will not fetch the full tree to avoid fetching too much data.\n   * - `true`: This will prefetch the full React Server Component data for all route segments, regardless of whether they contain a segment with `loading.js`.\n   * - `false`: This will not prefetch any data, even on hover.\n   *\n   * In Pages Router:\n   * - `true` (default): The full route & its data will be prefetched.\n   * - `false`: Prefetching will not happen when entering the viewport, but will still happen on hover.\n   * @defaultValue `true` (pages router) or `null` (app router)\n   */\n  prefetch?: boolean | null\n  /**\n   * The active locale is automatically prepended. `locale` allows for providing a different locale.\n   * When `false` `href` has to include the locale as the default behavior is disabled.\n   * Note: This is only available in the Pages Router.\n   */\n  locale?: string | false\n  /**\n   * Enable legacy link behavior.\n   * @defaultValue `false`\n   * @see https://github.com/vercel/next.js/commit/489e65ed98544e69b0afd7e0cfc3f9f6c2b803b7\n   */\n  legacyBehavior?: boolean\n  /**\n   * Optional event handler for when the mouse pointer is moved onto Link\n   */\n  onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>\n  /**\n   * Optional event handler for when Link is touched.\n   */\n  onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n  /**\n   * Optional event handler for when Link is clicked.\n   */\n  onClick?: React.MouseEventHandler<HTMLAnchorElement>\n}\n\n// TODO-APP: Include the full set of Anchor props\n// adding this to the publicly exported type currently breaks existing apps\n\n// `RouteInferType` is a stub here to avoid breaking `typedRoutes` when the type\n// isn't generated yet. It will be replaced when the webpack plugin runs.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type LinkProps<RouteInferType = any> = InternalLinkProps\ntype LinkPropsRequired = RequiredKeys<LinkProps>\ntype LinkPropsOptional = OptionalKeys<InternalLinkProps>\n\nconst prefetched = new Set<string>()\n\ntype PrefetchOptions = RouterPrefetchOptions & {\n  /**\n   * bypassPrefetchedCheck will bypass the check to see if the `href` has\n   * already been fetched.\n   */\n  bypassPrefetchedCheck?: boolean\n}\n\nfunction prefetch(\n  router: NextRouter,\n  href: string,\n  as: string,\n  options: PrefetchOptions\n): void {\n  if (typeof window === 'undefined') {\n    return\n  }\n\n  if (!isLocalURL(href)) {\n    return\n  }\n\n  // We should only dedupe requests when experimental.optimisticClientCache is\n  // disabled.\n  if (!options.bypassPrefetchedCheck) {\n    const locale =\n      // Let the link's locale prop override the default router locale.\n      typeof options.locale !== 'undefined'\n        ? options.locale\n        : // Otherwise fallback to the router's locale.\n          'locale' in router\n          ? router.locale\n          : undefined\n\n    const prefetchedKey = href + '%' + as + '%' + locale\n\n    // If we've already fetched the key, then don't prefetch it again!\n    if (prefetched.has(prefetchedKey)) {\n      return\n    }\n\n    // Mark this URL as prefetched.\n    prefetched.add(prefetchedKey)\n  }\n\n  // Prefetch the JSON page if asked (only in the client)\n  // We need to handle a prefetch error here since we may be\n  // loading with priority which can reject but we don't\n  // want to force navigation since this is only a prefetch\n  router.prefetch(href, as, options).catch((err) => {\n    if (process.env.NODE_ENV !== 'production') {\n      // rethrow to show invalid URL errors\n      throw err\n    }\n  })\n}\n\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n  const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n  const target = eventTarget.getAttribute('target')\n  return (\n    (target && target !== '_self') ||\n    event.metaKey ||\n    event.ctrlKey ||\n    event.shiftKey ||\n    event.altKey || // triggers resource download\n    (event.nativeEvent && event.nativeEvent.which === 2)\n  )\n}\n\nfunction linkClicked(\n  e: React.MouseEvent,\n  router: NextRouter | AppRouterInstance,\n  href: string,\n  as: string,\n  replace?: boolean,\n  shallow?: boolean,\n  scroll?: boolean,\n  locale?: string | false\n): void {\n  const { nodeName } = e.currentTarget\n\n  // anchors inside an svg have a lowercase nodeName\n  const isAnchorNodeName = nodeName.toUpperCase() === 'A'\n\n  if (isAnchorNodeName && (isModifiedEvent(e) || !isLocalURL(href))) {\n    // ignore click for browser’s default behavior\n    return\n  }\n\n  e.preventDefault()\n\n  const navigate = () => {\n    // If the router is an NextRouter instance it will have `beforePopState`\n    const routerScroll = scroll ?? true\n    if ('beforePopState' in router) {\n      router[replace ? 'replace' : 'push'](href, as, {\n        shallow,\n        locale,\n        scroll: routerScroll,\n      })\n    } else {\n      router[replace ? 'replace' : 'push'](as || href, {\n        scroll: routerScroll,\n      })\n    }\n  }\n\n  navigate()\n}\n\ntype LinkPropsReal = React.PropsWithChildren<\n  Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkProps> &\n    LinkProps\n>\n\nfunction formatStringOrUrl(urlObjOrString: UrlObject | string): string {\n  if (typeof urlObjOrString === 'string') {\n    return urlObjOrString\n  }\n\n  return formatUrl(urlObjOrString)\n}\n\n/**\n * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation between routes.\n *\n * It is the primary way to navigate between routes in Next.js.\n *\n * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)\n */\nconst Link = React.forwardRef<HTMLAnchorElement, LinkPropsReal>(\n  function LinkComponent(props, forwardedRef) {\n    let children: React.ReactNode\n\n    const {\n      href: hrefProp,\n      as: asProp,\n      children: childrenProp,\n      prefetch: prefetchProp = null,\n      passHref,\n      replace,\n      shallow,\n      scroll,\n      locale,\n      onClick,\n      onMouseEnter: onMouseEnterProp,\n      onTouchStart: onTouchStartProp,\n      legacyBehavior = false,\n      ...restProps\n    } = props\n\n    children = childrenProp\n\n    if (\n      legacyBehavior &&\n      (typeof children === 'string' || typeof children === 'number')\n    ) {\n      children = <a>{children}</a>\n    }\n\n    const router = React.useContext(RouterContext)\n\n    const prefetchEnabled = prefetchProp !== false\n\n    if (process.env.NODE_ENV !== 'production') {\n      function createPropError(args: {\n        key: string\n        expected: string\n        actual: string\n      }) {\n        return new Error(\n          `Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` +\n            (typeof window !== 'undefined'\n              ? \"\\nOpen your browser's console to view the Component stack trace.\"\n              : '')\n        )\n      }\n\n      // TypeScript trick for type-guarding:\n      const requiredPropsGuard: Record<LinkPropsRequired, true> = {\n        href: true,\n      } as const\n      const requiredProps: LinkPropsRequired[] = Object.keys(\n        requiredPropsGuard\n      ) as LinkPropsRequired[]\n      requiredProps.forEach((key: LinkPropsRequired) => {\n        if (key === 'href') {\n          if (\n            props[key] == null ||\n            (typeof props[key] !== 'string' && typeof props[key] !== 'object')\n          ) {\n            throw createPropError({\n              key,\n              expected: '`string` or `object`',\n              actual: props[key] === null ? 'null' : typeof props[key],\n            })\n          }\n        } else {\n          // TypeScript trick for type-guarding:\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          const _: never = key\n        }\n      })\n\n      // TypeScript trick for type-guarding:\n      const optionalPropsGuard: Record<LinkPropsOptional, true> = {\n        as: true,\n        replace: true,\n        scroll: true,\n        shallow: true,\n        passHref: true,\n        prefetch: true,\n        locale: true,\n        onClick: true,\n        onMouseEnter: true,\n        onTouchStart: true,\n        legacyBehavior: true,\n      } as const\n      const optionalProps: LinkPropsOptional[] = Object.keys(\n        optionalPropsGuard\n      ) as LinkPropsOptional[]\n      optionalProps.forEach((key: LinkPropsOptional) => {\n        const valType = typeof props[key]\n\n        if (key === 'as') {\n          if (props[key] && valType !== 'string' && valType !== 'object') {\n            throw createPropError({\n              key,\n              expected: '`string` or `object`',\n              actual: valType,\n            })\n          }\n        } else if (key === 'locale') {\n          if (props[key] && valType !== 'string') {\n            throw createPropError({\n              key,\n              expected: '`string`',\n              actual: valType,\n            })\n          }\n        } else if (\n          key === 'onClick' ||\n          key === 'onMouseEnter' ||\n          key === 'onTouchStart'\n        ) {\n          if (props[key] && valType !== 'function') {\n            throw createPropError({\n              key,\n              expected: '`function`',\n              actual: valType,\n            })\n          }\n        } else if (\n          key === 'replace' ||\n          key === 'scroll' ||\n          key === 'shallow' ||\n          key === 'passHref' ||\n          key === 'prefetch' ||\n          key === 'legacyBehavior'\n        ) {\n          if (props[key] != null && valType !== 'boolean') {\n            throw createPropError({\n              key,\n              expected: '`boolean`',\n              actual: valType,\n            })\n          }\n        } else {\n          // TypeScript trick for type-guarding:\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          const _: never = key\n        }\n      })\n    }\n\n    const { href, as } = React.useMemo(() => {\n      if (!router) {\n        const resolvedHref = formatStringOrUrl(hrefProp)\n        return {\n          href: resolvedHref,\n          as: asProp ? formatStringOrUrl(asProp) : resolvedHref,\n        }\n      }\n\n      const [resolvedHref, resolvedAs] = resolveHref(router, hrefProp, true)\n\n      return {\n        href: resolvedHref,\n        as: asProp ? resolveHref(router, asProp) : resolvedAs || resolvedHref,\n      }\n    }, [router, hrefProp, asProp])\n\n    const previousHref = React.useRef<string>(href)\n    const previousAs = React.useRef<string>(as)\n\n    // This will return the first child, if multiple are provided it will throw an error\n    let child: any\n    if (legacyBehavior) {\n      if (process.env.NODE_ENV === 'development') {\n        if (onClick) {\n          console.warn(\n            `\"onClick\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`\n          )\n        }\n        if (onMouseEnterProp) {\n          console.warn(\n            `\"onMouseEnter\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`\n          )\n        }\n        try {\n          child = React.Children.only(children)\n        } catch (err) {\n          if (!children) {\n            throw new Error(\n              `No children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`\n            )\n          }\n          throw new Error(\n            `Multiple children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` +\n              (typeof window !== 'undefined'\n                ? \" \\nOpen your browser's console to view the Component stack trace.\"\n                : '')\n          )\n        }\n      } else {\n        child = React.Children.only(children)\n      }\n    } else {\n      if (process.env.NODE_ENV === 'development') {\n        if ((children as any)?.type === 'a') {\n          throw new Error(\n            'Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'\n          )\n        }\n      }\n    }\n\n    const childRef: any = legacyBehavior\n      ? child && typeof child === 'object' && child.ref\n      : forwardedRef\n\n    const [setIntersectionRef, isVisible, resetVisible] = useIntersection({\n      rootMargin: '200px',\n    })\n\n    const setIntersectionWithResetRef = React.useCallback(\n      (el: Element) => {\n        // Before the link getting observed, check if visible state need to be reset\n        if (previousAs.current !== as || previousHref.current !== href) {\n          resetVisible()\n          previousAs.current = as\n          previousHref.current = href\n        }\n\n        setIntersectionRef(el)\n      },\n      [as, href, resetVisible, setIntersectionRef]\n    )\n\n    const setRef = useMergedRef(setIntersectionWithResetRef, childRef)\n\n    // Prefetch the URL if we haven't already and it's visible.\n    React.useEffect(() => {\n      // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n      if (process.env.NODE_ENV !== 'production') {\n        return\n      }\n\n      if (!router) {\n        return\n      }\n\n      // If we don't need to prefetch the URL, don't do prefetch.\n      if (!isVisible || !prefetchEnabled) {\n        return\n      }\n\n      // Prefetch the URL.\n      prefetch(router, href, as, { locale })\n    }, [as, href, isVisible, locale, prefetchEnabled, router?.locale, router])\n\n    const childProps: {\n      onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n      onMouseEnter: React.MouseEventHandler<HTMLAnchorElement>\n      onClick: React.MouseEventHandler<HTMLAnchorElement>\n      href?: string\n      ref?: any\n    } = {\n      ref: setRef,\n      onClick(e) {\n        if (process.env.NODE_ENV !== 'production') {\n          if (!e) {\n            throw new Error(\n              `Component rendered inside next/link has to pass click event to \"onClick\" prop.`\n            )\n          }\n        }\n\n        if (!legacyBehavior && typeof onClick === 'function') {\n          onClick(e)\n        }\n\n        if (\n          legacyBehavior &&\n          child.props &&\n          typeof child.props.onClick === 'function'\n        ) {\n          child.props.onClick(e)\n        }\n\n        if (!router) {\n          return\n        }\n\n        if (e.defaultPrevented) {\n          return\n        }\n\n        linkClicked(e, router, href, as, replace, shallow, scroll, locale)\n      },\n      onMouseEnter(e) {\n        if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n          onMouseEnterProp(e)\n        }\n\n        if (\n          legacyBehavior &&\n          child.props &&\n          typeof child.props.onMouseEnter === 'function'\n        ) {\n          child.props.onMouseEnter(e)\n        }\n\n        if (!router) {\n          return\n        }\n\n        prefetch(router, href, as, {\n          locale,\n          priority: true,\n          // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n          bypassPrefetchedCheck: true,\n        })\n      },\n      onTouchStart: process.env.__NEXT_LINK_NO_TOUCH_START\n        ? undefined\n        : function onTouchStart(e) {\n            if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n              onTouchStartProp(e)\n            }\n\n            if (\n              legacyBehavior &&\n              child.props &&\n              typeof child.props.onTouchStart === 'function'\n            ) {\n              child.props.onTouchStart(e)\n            }\n\n            if (!router) {\n              return\n            }\n\n            prefetch(router, href, as, {\n              locale,\n              priority: true,\n              // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n              bypassPrefetchedCheck: true,\n            })\n          },\n    }\n\n    // If child is an <a> tag and doesn't have a href attribute, or if the 'passHref' property is\n    // defined, we specify the current 'href', so that repetition is not needed by the user.\n    // If the url is absolute, we can bypass the logic to prepend the domain and locale.\n    if (isAbsoluteUrl(as)) {\n      childProps.href = as\n    } else if (\n      !legacyBehavior ||\n      passHref ||\n      (child.type === 'a' && !('href' in child.props))\n    ) {\n      const curLocale = typeof locale !== 'undefined' ? locale : router?.locale\n\n      // we only render domain locales if we are currently on a domain locale\n      // so that locale links are still visitable in development/preview envs\n      const localeDomain =\n        router?.isLocaleDomain &&\n        getDomainLocale(as, curLocale, router?.locales, router?.domainLocales)\n\n      childProps.href =\n        localeDomain ||\n        addBasePath(addLocale(as, curLocale, router?.defaultLocale))\n    }\n\n    return legacyBehavior ? (\n      React.cloneElement(child, childProps)\n    ) : (\n      <a {...restProps} {...childProps}>\n        {children}\n      </a>\n    )\n  }\n)\n\nexport default Link\n","import type { normalizeLocalePath as Fn } from '../shared/lib/i18n/normalize-locale-path'\n\nexport const normalizeLocalePath: typeof Fn = (pathname, locales) => {\n  if (process.env.__NEXT_I18N_SUPPORT) {\n    return require('../shared/lib/i18n/normalize-locale-path').normalizeLocalePath(\n      pathname,\n      locales\n    )\n  }\n  return { pathname, detectedLocale: undefined }\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport {\n  requestIdleCallback,\n  cancelIdleCallback,\n} from './request-idle-callback'\n\ntype UseIntersectionObserverInit = Pick<\n  IntersectionObserverInit,\n  'rootMargin' | 'root'\n>\n\ntype UseIntersection = { disabled?: boolean } & UseIntersectionObserverInit & {\n    rootRef?: React.RefObject<HTMLElement | null> | null\n  }\ntype ObserveCallback = (isVisible: boolean) => void\ntype Identifier = {\n  root: Element | Document | null\n  margin: string\n}\ntype Observer = {\n  id: Identifier\n  observer: IntersectionObserver\n  elements: Map<Element, ObserveCallback>\n}\n\nconst hasIntersectionObserver = typeof IntersectionObserver === 'function'\n\nconst observers = new Map<Identifier, Observer>()\nconst idList: Identifier[] = []\n\nfunction createObserver(options: UseIntersectionObserverInit): Observer {\n  const id = {\n    root: options.root || null,\n    margin: options.rootMargin || '',\n  }\n  const existing = idList.find(\n    (obj) => obj.root === id.root && obj.margin === id.margin\n  )\n  let instance: Observer | undefined\n\n  if (existing) {\n    instance = observers.get(existing)\n    if (instance) {\n      return instance\n    }\n  }\n\n  const elements = new Map<Element, ObserveCallback>()\n  const observer = new IntersectionObserver((entries) => {\n    entries.forEach((entry) => {\n      const callback = elements.get(entry.target)\n      const isVisible = entry.isIntersecting || entry.intersectionRatio > 0\n      if (callback && isVisible) {\n        callback(isVisible)\n      }\n    })\n  }, options)\n  instance = {\n    id,\n    observer,\n    elements,\n  }\n\n  idList.push(id)\n  observers.set(id, instance)\n  return instance\n}\n\nfunction observe(\n  element: Element,\n  callback: ObserveCallback,\n  options: UseIntersectionObserverInit\n): () => void {\n  const { id, observer, elements } = createObserver(options)\n  elements.set(element, callback)\n\n  observer.observe(element)\n  return function unobserve(): void {\n    elements.delete(element)\n    observer.unobserve(element)\n\n    // Destroy observer when there's nothing left to watch:\n    if (elements.size === 0) {\n      observer.disconnect()\n      observers.delete(id)\n      const index = idList.findIndex(\n        (obj) => obj.root === id.root && obj.margin === id.margin\n      )\n      if (index > -1) {\n        idList.splice(index, 1)\n      }\n    }\n  }\n}\n\nexport function useIntersection<T extends Element>({\n  rootRef,\n  rootMargin,\n  disabled,\n}: UseIntersection): [(element: T | null) => void, boolean, () => void] {\n  const isDisabled: boolean = disabled || !hasIntersectionObserver\n\n  const [visible, setVisible] = useState(false)\n  const elementRef = useRef<T | null>(null)\n  const setElement = useCallback((element: T | null) => {\n    elementRef.current = element\n  }, [])\n\n  useEffect(() => {\n    if (hasIntersectionObserver) {\n      if (isDisabled || visible) return\n\n      const element = elementRef.current\n      if (element && element.tagName) {\n        const unobserve = observe(\n          element,\n          (isVisible) => isVisible && setVisible(isVisible),\n          { root: rootRef?.current, rootMargin }\n        )\n\n        return unobserve\n      }\n    } else {\n      if (!visible) {\n        const idleCallback = requestIdleCallback(() => setVisible(true))\n        return () => cancelIdleCallback(idleCallback)\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isDisabled, rootMargin, rootRef, visible, elementRef.current])\n\n  const resetVisible = useCallback(() => {\n    setVisible(false)\n  }, [])\n\n  return [setElement, visible, resetVisible]\n}\n","import { useMemo, useRef, type Ref } from 'react'\n\n// This is a compatibility hook to support React 18 and 19 refs.\n// In 19, a cleanup function from refs may be returned.\n// In 18, returning a cleanup function creates a warning.\n// Since we take userspace refs, we don't know ahead of time if a cleanup function will be returned.\n// This implements cleanup functions with the old behavior in 18.\n// We know refs are always called alternating with `null` and then `T`.\n// So a call with `null` means we need to call the previous cleanup functions.\nexport function useMergedRef<TElement>(\n  refA: Ref<TElement>,\n  refB: Ref<TElement>\n): Ref<TElement> {\n  const cleanupA = useRef<() => void>(() => {})\n  const cleanupB = useRef<() => void>(() => {})\n\n  return useMemo(() => {\n    if (!refA || !refB) {\n      return refA || refB\n    }\n\n    return (current: TElement | null): void => {\n      if (current === null) {\n        cleanupA.current()\n        cleanupB.current()\n      } else {\n        cleanupA.current = applyRef(refA, current)\n        cleanupB.current = applyRef(refB, current)\n      }\n    }\n  }, [refA, refB])\n}\n\nfunction applyRef<TElement>(\n  refA: NonNullable<Ref<TElement>>,\n  current: TElement\n) {\n  if (typeof refA === 'function') {\n    const cleanup = refA(current)\n    if (typeof cleanup === 'function') {\n      return cleanup\n    } else {\n      return () => refA(null)\n    }\n  } else {\n    refA.current = current\n    return () => {\n      refA.current = null\n    }\n  }\n}\n","import React, { type JSX } from 'react'\nimport Loadable from './loadable.shared-runtime'\n\nconst isServerSide = typeof window === 'undefined'\n\ntype ComponentModule<P = {}> = { default: React.ComponentType<P> }\n\nexport declare type LoaderComponent<P = {}> = Promise<\n  React.ComponentType<P> | ComponentModule<P>\n>\n\nexport declare type Loader<P = {}> =\n  | (() => LoaderComponent<P>)\n  | LoaderComponent<P>\n\nexport type LoaderMap = { [module: string]: () => Loader<any> }\n\nexport type LoadableGeneratedOptions = {\n  webpack?(): any\n  modules?(): LoaderMap\n}\n\nexport type DynamicOptionsLoadingProps = {\n  error?: Error | null\n  isLoading?: boolean\n  pastDelay?: boolean\n  retry?: () => void\n  timedOut?: boolean\n}\n\n// Normalize loader to return the module as form { default: Component } for `React.lazy`.\n// Also for backward compatible since next/dynamic allows to resolve a component directly with loader\n// Client component reference proxy need to be converted to a module.\nfunction convertModule<P>(mod: React.ComponentType<P> | ComponentModule<P>) {\n  return { default: (mod as ComponentModule<P>)?.default || mod }\n}\n\nexport type DynamicOptions<P = {}> = LoadableGeneratedOptions & {\n  loading?: (loadingProps: DynamicOptionsLoadingProps) => JSX.Element | null\n  loader?: Loader<P> | LoaderMap\n  loadableGenerated?: LoadableGeneratedOptions\n  ssr?: boolean\n}\n\nexport type LoadableOptions<P = {}> = DynamicOptions<P>\n\nexport type LoadableFn<P = {}> = (\n  opts: LoadableOptions<P>\n) => React.ComponentType<P>\n\nexport type LoadableComponent<P = {}> = React.ComponentType<P>\n\nexport function noSSR<P = {}>(\n  LoadableInitializer: LoadableFn<P>,\n  loadableOptions: DynamicOptions<P>\n): React.ComponentType<P> {\n  // Removing webpack and modules means react-loadable won't try preloading\n  delete loadableOptions.webpack\n  delete loadableOptions.modules\n\n  // This check is necessary to prevent react-loadable from initializing on the server\n  if (!isServerSide) {\n    return LoadableInitializer(loadableOptions)\n  }\n\n  const Loading = loadableOptions.loading!\n  // This will only be rendered on the server side\n  return () => (\n    <Loading error={null} isLoading pastDelay={false} timedOut={false} />\n  )\n}\n\n/**\n * This function lets you dynamically import a component.\n * It uses [React.lazy()](https://react.dev/reference/react/lazy) with [Suspense](https://react.dev/reference/react/Suspense) under the hood.\n *\n * Read more: [Next.js Docs: `next/dynamic`](https://nextjs.org/docs/app/building-your-application/optimizing/lazy-loading#nextdynamic)\n */\nexport default function dynamic<P = {}>(\n  dynamicOptions: DynamicOptions<P> | Loader<P>,\n  options?: DynamicOptions<P>\n): React.ComponentType<P> {\n  let loadableFn = Loadable as LoadableFn<P>\n\n  let loadableOptions: LoadableOptions<P> = {\n    // A loading component is not required, so we default it\n    loading: ({ error, isLoading, pastDelay }) => {\n      if (!pastDelay) return null\n      if (process.env.NODE_ENV !== 'production') {\n        if (isLoading) {\n          return null\n        }\n        if (error) {\n          return (\n            <p>\n              {error.message}\n              <br />\n              {error.stack}\n            </p>\n          )\n        }\n      }\n      return null\n    },\n  }\n\n  // Support for direct import(), eg: dynamic(import('../hello-world'))\n  // Note that this is only kept for the edge case where someone is passing in a promise as first argument\n  // The react-loadable babel plugin will turn dynamic(import('../hello-world')) into dynamic(() => import('../hello-world'))\n  // To make sure we don't execute the import without rendering first\n  if (dynamicOptions instanceof Promise) {\n    loadableOptions.loader = () => dynamicOptions\n    // Support for having import as a function, eg: dynamic(() => import('../hello-world'))\n  } else if (typeof dynamicOptions === 'function') {\n    loadableOptions.loader = dynamicOptions\n    // Support for having first argument being options, eg: dynamic({loader: import('../hello-world')})\n  } else if (typeof dynamicOptions === 'object') {\n    loadableOptions = { ...loadableOptions, ...dynamicOptions }\n  }\n\n  // Support for passing options, eg: dynamic(import('../hello-world'), {loading: () => <p>Loading something</p>})\n  loadableOptions = { ...loadableOptions, ...options }\n\n  const loaderFn = loadableOptions.loader as () => LoaderComponent<P>\n  const loader = () =>\n    loaderFn != null\n      ? loaderFn().then(convertModule)\n      : Promise.resolve(convertModule(() => null))\n\n  // coming from build/babel/plugins/react-loadable-plugin.js\n  if (loadableOptions.loadableGenerated) {\n    loadableOptions = {\n      ...loadableOptions,\n      ...loadableOptions.loadableGenerated,\n    }\n    delete loadableOptions.loadableGenerated\n  }\n\n  // support for disabling server side rendering, eg: dynamic(() => import('../hello-world'), {ssr: false}).\n  if (typeof loadableOptions.ssr === 'boolean' && !loadableOptions.ssr) {\n    delete loadableOptions.webpack\n    delete loadableOptions.modules\n\n    return noSSR(loadableFn, loadableOptions)\n  }\n\n  return loadableFn({ ...loadableOptions, loader: loader as Loader<P> })\n}\n","import { warnOnce } from './utils/warn-once'\nimport { getImageBlurSvg } from './image-blur-svg'\nimport { imageConfigDefault } from './image-config'\nimport type {\n  ImageConfigComplete,\n  ImageLoaderProps,\n  ImageLoaderPropsWithConfig,\n} from './image-config'\n\nimport type { JSX } from 'react'\n\nexport interface StaticImageData {\n  src: string\n  height: number\n  width: number\n  blurDataURL?: string\n  blurWidth?: number\n  blurHeight?: number\n}\n\nexport interface StaticRequire {\n  default: StaticImageData\n}\n\nexport type StaticImport = StaticRequire | StaticImageData\n\nexport type ImageProps = Omit<\n  JSX.IntrinsicElements['img'],\n  'src' | 'srcSet' | 'ref' | 'alt' | 'width' | 'height' | 'loading'\n> & {\n  src: string | StaticImport\n  alt: string\n  width?: number | `${number}`\n  height?: number | `${number}`\n  fill?: boolean\n  loader?: ImageLoader\n  quality?: number | `${number}`\n  priority?: boolean\n  loading?: LoadingValue\n  placeholder?: PlaceholderValue\n  blurDataURL?: string\n  unoptimized?: boolean\n  overrideSrc?: string\n  /**\n   * @deprecated Use `onLoad` instead.\n   * @see https://nextjs.org/docs/app/api-reference/components/image#onload\n   */\n  onLoadingComplete?: OnLoadingComplete\n  /**\n   * @deprecated Use `fill` prop instead of `layout=\"fill\"` or change import to `next/legacy/image`.\n   * @see https://nextjs.org/docs/api-reference/next/legacy/image\n   */\n  layout?: string\n  /**\n   * @deprecated Use `style` prop instead.\n   */\n  objectFit?: string\n  /**\n   * @deprecated Use `style` prop instead.\n   */\n  objectPosition?: string\n  /**\n   * @deprecated This prop does not do anything.\n   */\n  lazyBoundary?: string\n  /**\n   * @deprecated This prop does not do anything.\n   */\n  lazyRoot?: string\n}\n\nexport type ImgProps = Omit<ImageProps, 'src' | 'loader'> & {\n  loading: LoadingValue\n  width: number | undefined\n  height: number | undefined\n  style: NonNullable<JSX.IntrinsicElements['img']['style']>\n  sizes: string | undefined\n  srcSet: string | undefined\n  src: string\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined] as const\ntype LoadingValue = (typeof VALID_LOADING_VALUES)[number]\ntype ImageConfig = ImageConfigComplete & {\n  allSizes: number[]\n  output?: 'standalone' | 'export'\n}\n\nexport type ImageLoader = (p: ImageLoaderProps) => string\n\n// Do not export - this is an internal type only\n// because `next.config.js` is only meant for the\n// built-in loaders, not for a custom loader() prop.\ntype ImageLoaderWithConfig = (p: ImageLoaderPropsWithConfig) => string\n\nexport type PlaceholderValue = 'blur' | 'empty' | `data:image/${string}`\nexport type OnLoad = React.ReactEventHandler<HTMLImageElement> | undefined\nexport type OnLoadingComplete = (img: HTMLImageElement) => void\n\nfunction isStaticRequire(\n  src: StaticRequire | StaticImageData\n): src is StaticRequire {\n  return (src as StaticRequire).default !== undefined\n}\n\nfunction isStaticImageData(\n  src: StaticRequire | StaticImageData\n): src is StaticImageData {\n  return (src as StaticImageData).src !== undefined\n}\n\nfunction isStaticImport(src: string | StaticImport): src is StaticImport {\n  return (\n    !!src &&\n    typeof src === 'object' &&\n    (isStaticRequire(src as StaticImport) ||\n      isStaticImageData(src as StaticImport))\n  )\n}\n\nconst allImgs = new Map<\n  string,\n  { src: string; priority: boolean; placeholder: PlaceholderValue }\n>()\nlet perfObserver: PerformanceObserver | undefined\n\nfunction getInt(x: unknown): number | undefined {\n  if (typeof x === 'undefined') {\n    return x\n  }\n  if (typeof x === 'number') {\n    return Number.isFinite(x) ? x : NaN\n  }\n  if (typeof x === 'string' && /^[0-9]+$/.test(x)) {\n    return parseInt(x, 10)\n  }\n  return NaN\n}\n\nfunction getWidths(\n  { deviceSizes, allSizes }: ImageConfig,\n  width: number | undefined,\n  sizes: string | undefined\n): { widths: number[]; kind: 'w' | 'x' } {\n  if (sizes) {\n    // Find all the \"vw\" percent sizes used in the sizes prop\n    const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g\n    const percentSizes = []\n    for (let match; (match = viewportWidthRe.exec(sizes)); match) {\n      percentSizes.push(parseInt(match[2]))\n    }\n    if (percentSizes.length) {\n      const smallestRatio = Math.min(...percentSizes) * 0.01\n      return {\n        widths: allSizes.filter((s) => s >= deviceSizes[0] * smallestRatio),\n        kind: 'w',\n      }\n    }\n    return { widths: allSizes, kind: 'w' }\n  }\n  if (typeof width !== 'number') {\n    return { widths: deviceSizes, kind: 'w' }\n  }\n\n  const widths = [\n    ...new Set(\n      // > This means that most OLED screens that say they are 3x resolution,\n      // > are actually 3x in the green color, but only 1.5x in the red and\n      // > blue colors. Showing a 3x resolution image in the app vs a 2x\n      // > resolution image will be visually the same, though the 3x image\n      // > takes significantly more data. Even true 3x resolution screens are\n      // > wasteful as the human eye cannot see that level of detail without\n      // > something like a magnifying glass.\n      // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n      [width, width * 2 /*, width * 3*/].map(\n        (w) => allSizes.find((p) => p >= w) || allSizes[allSizes.length - 1]\n      )\n    ),\n  ]\n  return { widths, kind: 'x' }\n}\n\ntype GenImgAttrsData = {\n  config: ImageConfig\n  src: string\n  unoptimized: boolean\n  loader: ImageLoaderWithConfig\n  width?: number\n  quality?: number\n  sizes?: string\n}\n\ntype GenImgAttrsResult = {\n  src: string\n  srcSet: string | undefined\n  sizes: string | undefined\n}\n\nfunction generateImgAttrs({\n  config,\n  src,\n  unoptimized,\n  width,\n  quality,\n  sizes,\n  loader,\n}: GenImgAttrsData): GenImgAttrsResult {\n  if (unoptimized) {\n    return { src, srcSet: undefined, sizes: undefined }\n  }\n\n  const { widths, kind } = getWidths(config, width, sizes)\n  const last = widths.length - 1\n\n  return {\n    sizes: !sizes && kind === 'w' ? '100vw' : sizes,\n    srcSet: widths\n      .map(\n        (w, i) =>\n          `${loader({ config, src, quality, width: w })} ${\n            kind === 'w' ? w : i + 1\n          }${kind}`\n      )\n      .join(', '),\n\n    // It's intended to keep `src` the last attribute because React updates\n    // attributes in order. If we keep `src` the first one, Safari will\n    // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n    // updated by React. That causes multiple unnecessary requests if `srcSet`\n    // and `sizes` are defined.\n    // This bug cannot be reproduced in Chrome or Firefox.\n    src: loader({ config, src, quality, width: widths[last] }),\n  }\n}\n\n/**\n * A shared function, used on both client and server, to generate the props for <img>.\n */\nexport function getImgProps(\n  {\n    src,\n    sizes,\n    unoptimized = false,\n    priority = false,\n    loading,\n    className,\n    quality,\n    width,\n    height,\n    fill = false,\n    style,\n    overrideSrc,\n    onLoad,\n    onLoadingComplete,\n    placeholder = 'empty',\n    blurDataURL,\n    fetchPriority,\n    decoding = 'async',\n    layout,\n    objectFit,\n    objectPosition,\n    lazyBoundary,\n    lazyRoot,\n    ...rest\n  }: ImageProps,\n  _state: {\n    defaultLoader: ImageLoaderWithConfig\n    imgConf: ImageConfigComplete\n    showAltText?: boolean\n    blurComplete?: boolean\n  }\n): {\n  props: ImgProps\n  meta: {\n    unoptimized: boolean\n    priority: boolean\n    placeholder: NonNullable<ImageProps['placeholder']>\n    fill: boolean\n  }\n} {\n  const { imgConf, showAltText, blurComplete, defaultLoader } = _state\n  let config: ImageConfig\n  let c = imgConf || imageConfigDefault\n  if ('allSizes' in c) {\n    config = c as ImageConfig\n  } else {\n    const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n    const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n    const qualities = c.qualities?.sort((a, b) => a - b)\n    config = { ...c, allSizes, deviceSizes, qualities }\n  }\n\n  if (typeof defaultLoader === 'undefined') {\n    throw new Error(\n      'images.loaderFile detected but the file is missing default export.\\nRead more: https://nextjs.org/docs/messages/invalid-images-config'\n    )\n  }\n  let loader: ImageLoaderWithConfig = rest.loader || defaultLoader\n\n  // Remove property so it's not spread on <img> element\n  delete rest.loader\n  delete (rest as any).srcSet\n\n  // This special value indicates that the user\n  // didn't define a \"loader\" prop or \"loader\" config.\n  const isDefaultLoader = '__next_img_default' in loader\n\n  if (isDefaultLoader) {\n    if (config.loader === 'custom') {\n      throw new Error(\n        `Image with src \"${src}\" is missing \"loader\" prop.` +\n          `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`\n      )\n    }\n  } else {\n    // The user defined a \"loader\" prop or config.\n    // Since the config object is internal only, we\n    // must not pass it to the user-defined \"loader\".\n    const customImageLoader = loader as ImageLoader\n    loader = (obj) => {\n      const { config: _, ...opts } = obj\n      return customImageLoader(opts)\n    }\n  }\n\n  if (layout) {\n    if (layout === 'fill') {\n      fill = true\n    }\n    const layoutToStyle: Record<string, Record<string, string> | undefined> = {\n      intrinsic: { maxWidth: '100%', height: 'auto' },\n      responsive: { width: '100%', height: 'auto' },\n    }\n    const layoutToSizes: Record<string, string | undefined> = {\n      responsive: '100vw',\n      fill: '100vw',\n    }\n    const layoutStyle = layoutToStyle[layout]\n    if (layoutStyle) {\n      style = { ...style, ...layoutStyle }\n    }\n    const layoutSizes = layoutToSizes[layout]\n    if (layoutSizes && !sizes) {\n      sizes = layoutSizes\n    }\n  }\n\n  let staticSrc = ''\n  let widthInt = getInt(width)\n  let heightInt = getInt(height)\n  let blurWidth: number | undefined\n  let blurHeight: number | undefined\n  if (isStaticImport(src)) {\n    const staticImageData = isStaticRequire(src) ? src.default : src\n\n    if (!staticImageData.src) {\n      throw new Error(\n        `An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(\n          staticImageData\n        )}`\n      )\n    }\n    if (!staticImageData.height || !staticImageData.width) {\n      throw new Error(\n        `An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(\n          staticImageData\n        )}`\n      )\n    }\n\n    blurWidth = staticImageData.blurWidth\n    blurHeight = staticImageData.blurHeight\n    blurDataURL = blurDataURL || staticImageData.blurDataURL\n    staticSrc = staticImageData.src\n\n    if (!fill) {\n      if (!widthInt && !heightInt) {\n        widthInt = staticImageData.width\n        heightInt = staticImageData.height\n      } else if (widthInt && !heightInt) {\n        const ratio = widthInt / staticImageData.width\n        heightInt = Math.round(staticImageData.height * ratio)\n      } else if (!widthInt && heightInt) {\n        const ratio = heightInt / staticImageData.height\n        widthInt = Math.round(staticImageData.width * ratio)\n      }\n    }\n  }\n  src = typeof src === 'string' ? src : staticSrc\n\n  let isLazy =\n    !priority && (loading === 'lazy' || typeof loading === 'undefined')\n  if (!src || src.startsWith('data:') || src.startsWith('blob:')) {\n    // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n    unoptimized = true\n    isLazy = false\n  }\n  if (config.unoptimized) {\n    unoptimized = true\n  }\n  if (\n    isDefaultLoader &&\n    !config.dangerouslyAllowSVG &&\n    src.split('?', 1)[0].endsWith('.svg')\n  ) {\n    // Special case to make svg serve as-is to avoid proxying\n    // through the built-in Image Optimization API.\n    unoptimized = true\n  }\n\n  const qualityInt = getInt(quality)\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (config.output === 'export' && isDefaultLoader && !unoptimized) {\n      throw new Error(\n        `Image Optimization using the default loader is not compatible with \\`{ output: 'export' }\\`.\n  Possible solutions:\n    - Remove \\`{ output: 'export' }\\` and run \"next start\" to run server mode including the Image Optimization API.\n    - Configure \\`{ images: { unoptimized: true } }\\` in \\`next.config.js\\` to disable the Image Optimization API.\n  Read more: https://nextjs.org/docs/messages/export-image-api`\n      )\n    }\n    if (!src) {\n      // React doesn't show the stack trace and there's\n      // no `src` to help identify which image, so we\n      // instead console.error(ref) during mount.\n      unoptimized = true\n    } else {\n      if (fill) {\n        if (width) {\n          throw new Error(\n            `Image with src \"${src}\" has both \"width\" and \"fill\" properties. Only one should be used.`\n          )\n        }\n        if (height) {\n          throw new Error(\n            `Image with src \"${src}\" has both \"height\" and \"fill\" properties. Only one should be used.`\n          )\n        }\n        if (style?.position && style.position !== 'absolute') {\n          throw new Error(\n            `Image with src \"${src}\" has both \"fill\" and \"style.position\" properties. Images with \"fill\" always use position absolute - it cannot be modified.`\n          )\n        }\n        if (style?.width && style.width !== '100%') {\n          throw new Error(\n            `Image with src \"${src}\" has both \"fill\" and \"style.width\" properties. Images with \"fill\" always use width 100% - it cannot be modified.`\n          )\n        }\n        if (style?.height && style.height !== '100%') {\n          throw new Error(\n            `Image with src \"${src}\" has both \"fill\" and \"style.height\" properties. Images with \"fill\" always use height 100% - it cannot be modified.`\n          )\n        }\n      } else {\n        if (typeof widthInt === 'undefined') {\n          throw new Error(\n            `Image with src \"${src}\" is missing required \"width\" property.`\n          )\n        } else if (isNaN(widthInt)) {\n          throw new Error(\n            `Image with src \"${src}\" has invalid \"width\" property. Expected a numeric value in pixels but received \"${width}\".`\n          )\n        }\n        if (typeof heightInt === 'undefined') {\n          throw new Error(\n            `Image with src \"${src}\" is missing required \"height\" property.`\n          )\n        } else if (isNaN(heightInt)) {\n          throw new Error(\n            `Image with src \"${src}\" has invalid \"height\" property. Expected a numeric value in pixels but received \"${height}\".`\n          )\n        }\n        // eslint-disable-next-line no-control-regex\n        if (/^[\\x00-\\x20]/.test(src)) {\n          throw new Error(\n            `Image with src \"${src}\" cannot start with a space or control character. Use src.trimStart() to remove it or encodeURIComponent(src) to keep it.`\n          )\n        }\n        // eslint-disable-next-line no-control-regex\n        if (/[\\x00-\\x20]$/.test(src)) {\n          throw new Error(\n            `Image with src \"${src}\" cannot end with a space or control character. Use src.trimEnd() to remove it or encodeURIComponent(src) to keep it.`\n          )\n        }\n      }\n    }\n    if (!VALID_LOADING_VALUES.includes(loading)) {\n      throw new Error(\n        `Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(\n          String\n        ).join(',')}.`\n      )\n    }\n    if (priority && loading === 'lazy') {\n      throw new Error(\n        `Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`\n      )\n    }\n    if (\n      placeholder !== 'empty' &&\n      placeholder !== 'blur' &&\n      !placeholder.startsWith('data:image/')\n    ) {\n      throw new Error(\n        `Image with src \"${src}\" has invalid \"placeholder\" property \"${placeholder}\".`\n      )\n    }\n    if (placeholder !== 'empty') {\n      if (widthInt && heightInt && widthInt * heightInt < 1600) {\n        warnOnce(\n          `Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder\" property to improve performance.`\n        )\n      }\n    }\n    if (placeholder === 'blur' && !blurDataURL) {\n      const VALID_BLUR_EXT = ['jpeg', 'png', 'webp', 'avif'] // should match next-image-loader\n\n      throw new Error(\n        `Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n        Possible solutions:\n          - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n          - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(\n            ','\n          )} (animated images not supported)\n          - Remove the \"placeholder\" property, effectively no blur effect\n        Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`\n      )\n    }\n    if ('ref' in rest) {\n      warnOnce(\n        `Image with src \"${src}\" is using unsupported \"ref\" property. Consider using the \"onLoad\" property instead.`\n      )\n    }\n\n    if (!unoptimized && !isDefaultLoader) {\n      const urlStr = loader({\n        config,\n        src,\n        width: widthInt || 400,\n        quality: qualityInt || 75,\n      })\n      let url: URL | undefined\n      try {\n        url = new URL(urlStr)\n      } catch (err) {}\n      if (urlStr === src || (url && url.pathname === src && !url.search)) {\n        warnOnce(\n          `Image with src \"${src}\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.` +\n            `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`\n        )\n      }\n    }\n\n    if (onLoadingComplete) {\n      warnOnce(\n        `Image with src \"${src}\" is using deprecated \"onLoadingComplete\" property. Please use the \"onLoad\" property instead.`\n      )\n    }\n\n    for (const [legacyKey, legacyValue] of Object.entries({\n      layout,\n      objectFit,\n      objectPosition,\n      lazyBoundary,\n      lazyRoot,\n    })) {\n      if (legacyValue) {\n        warnOnce(\n          `Image with src \"${src}\" has legacy prop \"${legacyKey}\". Did you forget to run the codemod?` +\n            `\\nRead more: https://nextjs.org/docs/messages/next-image-upgrade-to-13`\n        )\n      }\n    }\n\n    if (\n      typeof window !== 'undefined' &&\n      !perfObserver &&\n      window.PerformanceObserver\n    ) {\n      perfObserver = new PerformanceObserver((entryList) => {\n        for (const entry of entryList.getEntries()) {\n          // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n          const imgSrc = entry?.element?.src || ''\n          const lcpImage = allImgs.get(imgSrc)\n          if (\n            lcpImage &&\n            !lcpImage.priority &&\n            lcpImage.placeholder === 'empty' &&\n            !lcpImage.src.startsWith('data:') &&\n            !lcpImage.src.startsWith('blob:')\n          ) {\n            // https://web.dev/lcp/#measure-lcp-in-javascript\n            warnOnce(\n              `Image with src \"${lcpImage.src}\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.` +\n                `\\nRead more: https://nextjs.org/docs/api-reference/next/image#priority`\n            )\n          }\n        }\n      })\n      try {\n        perfObserver.observe({\n          type: 'largest-contentful-paint',\n          buffered: true,\n        })\n      } catch (err) {\n        // Log error but don't crash the app\n        console.error(err)\n      }\n    }\n  }\n  const imgStyle = Object.assign(\n    fill\n      ? {\n          position: 'absolute',\n          height: '100%',\n          width: '100%',\n          left: 0,\n          top: 0,\n          right: 0,\n          bottom: 0,\n          objectFit,\n          objectPosition,\n        }\n      : {},\n    showAltText ? {} : { color: 'transparent' },\n    style\n  )\n\n  const backgroundImage =\n    !blurComplete && placeholder !== 'empty'\n      ? placeholder === 'blur'\n        ? `url(\"data:image/svg+xml;charset=utf-8,${getImageBlurSvg({\n            widthInt,\n            heightInt,\n            blurWidth,\n            blurHeight,\n            blurDataURL: blurDataURL || '', // assume not undefined\n            objectFit: imgStyle.objectFit,\n          })}\")`\n        : `url(\"${placeholder}\")` // assume `data:image/`\n      : null\n\n  let placeholderStyle = backgroundImage\n    ? {\n        backgroundSize: imgStyle.objectFit || 'cover',\n        backgroundPosition: imgStyle.objectPosition || '50% 50%',\n        backgroundRepeat: 'no-repeat',\n        backgroundImage,\n      }\n    : {}\n\n  if (process.env.NODE_ENV === 'development') {\n    if (\n      placeholderStyle.backgroundImage &&\n      placeholder === 'blur' &&\n      blurDataURL?.startsWith('/')\n    ) {\n      // During `next dev`, we don't want to generate blur placeholders with webpack\n      // because it can delay starting the dev server. Instead, `next-image-loader.js`\n      // will inline a special url to lazily generate the blur placeholder at request time.\n      placeholderStyle.backgroundImage = `url(\"${blurDataURL}\")`\n    }\n  }\n\n  const imgAttributes = generateImgAttrs({\n    config,\n    src,\n    unoptimized,\n    width: widthInt,\n    quality: qualityInt,\n    sizes,\n    loader,\n  })\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof window !== 'undefined') {\n      let fullUrl: URL\n      try {\n        fullUrl = new URL(imgAttributes.src)\n      } catch (e) {\n        fullUrl = new URL(imgAttributes.src, window.location.href)\n      }\n      allImgs.set(fullUrl.href, { src, priority, placeholder })\n    }\n  }\n\n  const props: ImgProps = {\n    ...rest,\n    loading: isLazy ? 'lazy' : loading,\n    fetchPriority,\n    width: widthInt,\n    height: heightInt,\n    decoding,\n    className,\n    style: { ...imgStyle, ...placeholderStyle },\n    sizes: imgAttributes.sizes,\n    srcSet: imgAttributes.srcSet,\n    src: overrideSrc || imgAttributes.src,\n  }\n  const meta = { unoptimized, priority, placeholder, fill }\n  return { props, meta }\n}\n","/**\n * A shared function, used on both client and server, to generate a SVG blur placeholder.\n */\nexport function getImageBlurSvg({\n  widthInt,\n  heightInt,\n  blurWidth,\n  blurHeight,\n  blurDataURL,\n  objectFit,\n}: {\n  widthInt?: number\n  heightInt?: number\n  blurWidth?: number\n  blurHeight?: number\n  blurDataURL: string\n  objectFit?: string\n}): string {\n  const std = 20\n  const svgWidth = blurWidth ? blurWidth * 40 : widthInt\n  const svgHeight = blurHeight ? blurHeight * 40 : heightInt\n\n  const viewBox =\n    svgWidth && svgHeight ? `viewBox='0 0 ${svgWidth} ${svgHeight}'` : ''\n  const preserveAspectRatio = viewBox\n    ? 'none'\n    : objectFit === 'contain'\n      ? 'xMidYMid'\n      : objectFit === 'cover'\n        ? 'xMidYMid slice'\n        : 'none'\n\n  return `%3Csvg xmlns='http://www.w3.org/2000/svg' ${viewBox}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${preserveAspectRatio}' style='filter: url(%23b);' href='${blurDataURL}'/%3E%3C/svg%3E`\n}\n","import type { ImageConfigComplete, ImageLoaderProps } from './image-config'\nimport type { ImageProps, ImageLoader, StaticImageData } from './get-img-props'\n\nimport { getImgProps } from './get-img-props'\nimport { Image } from '../../client/image-component'\n\n// @ts-ignore - This is replaced by webpack alias\nimport defaultLoader from 'next/dist/shared/lib/image-loader'\n\n/**\n * For more advanced use cases, you can call `getImageProps()`\n * to get the props that would be passed to the underlying `<img>` element,\n * and instead pass to them to another component, style, canvas, etc.\n *\n * Read more: [Next.js docs: `getImageProps`](https://nextjs.org/docs/app/api-reference/components/image#getimageprops)\n */\nexport function getImageProps(imgProps: ImageProps) {\n  const { props } = getImgProps(imgProps, {\n    defaultLoader,\n    // This is replaced by webpack define plugin\n    imgConf: process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete,\n  })\n  // Normally we don't care about undefined props because we pass to JSX,\n  // but this exported function could be used by the end user for anything\n  // so we delete undefined props to clean it up a little.\n  for (const [key, value] of Object.entries(props)) {\n    if (value === undefined) {\n      delete props[key as keyof typeof props]\n    }\n  }\n  return { props }\n}\n\nexport default Image\n\nexport type { ImageProps, ImageLoaderProps, ImageLoader, StaticImageData }\n","import type { ImageLoaderPropsWithConfig } from './image-config'\n\nconst DEFAULT_Q = 75\n\nfunction defaultLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  if (process.env.NODE_ENV !== 'production') {\n    const missingValues = []\n\n    // these should always be provided but make sure they are\n    if (!src) missingValues.push('src')\n    if (!width) missingValues.push('width')\n\n    if (missingValues.length > 0) {\n      throw new Error(\n        `Next Image Optimization requires ${missingValues.join(\n          ', '\n        )} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify(\n          { src, width, quality }\n        )}`\n      )\n    }\n\n    if (src.startsWith('//')) {\n      throw new Error(\n        `Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`\n      )\n    }\n\n    if (src.startsWith('/') && config.localPatterns) {\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasLocalMatch } = require('./match-local-pattern')\n        if (!hasLocalMatch(config.localPatterns, src)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\` does not match \\`images.localPatterns\\` configured in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n          )\n        }\n      }\n    }\n\n    if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\n      let parsedSrc: URL\n      try {\n        parsedSrc = new URL(src)\n      } catch (err) {\n        console.error(err)\n        throw new Error(\n          `Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`\n        )\n      }\n\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasRemoteMatch } = require('./match-remote-pattern')\n        if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host`\n          )\n        }\n      }\n    }\n\n    if (quality && config.qualities && !config.qualities.includes(quality)) {\n      throw new Error(\n        `Invalid quality prop (${quality}) on \\`next/image\\` does not match \\`images.qualities\\` configured in your \\`next.config.js\\`\\n` +\n          `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`\n      )\n    }\n  }\n\n  const q =\n    quality ||\n    config.qualities?.reduce((prev, cur) =>\n      Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q) ? cur : prev\n    ) ||\n    DEFAULT_Q\n\n  return `${config.path}?url=${encodeURIComponent(src)}&w=${width}&q=${q}${\n    src.startsWith('/_next/static/media/') && process.env.NEXT_DEPLOYMENT_ID\n      ? `&dpl=${process.env.NEXT_DEPLOYMENT_ID}`\n      : ''\n  }`\n}\n\n// We use this to determine if the import is the default loader\n// or a custom loader defined by the user in next.config.js\ndefaultLoader.__next_img_default = true\n\nexport default defaultLoader\n","'use client'\n\nimport React from 'react'\n\ntype CaptureFn = (moduleName: string) => void\n\nexport const LoadableContext = React.createContext<CaptureFn | null>(null)\n\nif (process.env.NODE_ENV !== 'production') {\n  LoadableContext.displayName = 'LoadableContext'\n}\n","// TODO: Remove use of `any` type.\n/**\n@copyright (c) 2017-present James Kyle <me@thejameskyle.com>\n MIT License\n Permission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n The above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE\n*/\n// https://github.com/jamiebuilds/react-loadable/blob/v5.5.0/src/index.js\n// Modified to be compatible with webpack 4 / Next.js\n\nimport React from 'react'\nimport { LoadableContext } from './loadable-context.shared-runtime'\n\nfunction resolve(obj: any) {\n  return obj && obj.default ? obj.default : obj\n}\n\nconst ALL_INITIALIZERS: any[] = []\nconst READY_INITIALIZERS: any[] = []\nlet initialized = false\n\nfunction load(loader: any) {\n  let promise = loader()\n\n  let state: any = {\n    loading: true,\n    loaded: null,\n    error: null,\n  }\n\n  state.promise = promise\n    .then((loaded: any) => {\n      state.loading = false\n      state.loaded = loaded\n      return loaded\n    })\n    .catch((err: any) => {\n      state.loading = false\n      state.error = err\n      throw err\n    })\n\n  return state\n}\n\nfunction createLoadableComponent(loadFn: any, options: any) {\n  let opts = Object.assign(\n    {\n      loader: null,\n      loading: null,\n      delay: 200,\n      timeout: null,\n      webpack: null,\n      modules: null,\n    },\n    options\n  )\n\n  /** @type LoadableSubscription */\n  let subscription: any = null\n  function init() {\n    if (!subscription) {\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      const sub = new LoadableSubscription(loadFn, opts)\n      subscription = {\n        getCurrentValue: sub.getCurrentValue.bind(sub),\n        subscribe: sub.subscribe.bind(sub),\n        retry: sub.retry.bind(sub),\n        promise: sub.promise.bind(sub),\n      }\n    }\n    return subscription.promise()\n  }\n\n  // Server only\n  if (typeof window === 'undefined') {\n    ALL_INITIALIZERS.push(init)\n  }\n\n  // Client only\n  if (!initialized && typeof window !== 'undefined') {\n    // require.resolveWeak check is needed for environments that don't have it available like Jest\n    const moduleIds =\n      opts.webpack && typeof (require as any).resolveWeak === 'function'\n        ? opts.webpack()\n        : opts.modules\n    if (moduleIds) {\n      READY_INITIALIZERS.push((ids: any) => {\n        for (const moduleId of moduleIds) {\n          if (ids.includes(moduleId)) {\n            return init()\n          }\n        }\n      })\n    }\n  }\n\n  function useLoadableModule() {\n    init()\n\n    const context = React.useContext(LoadableContext)\n    if (context && Array.isArray(opts.modules)) {\n      opts.modules.forEach((moduleName: any) => {\n        context(moduleName)\n      })\n    }\n  }\n\n  function LoadableComponent(props: any, ref: any) {\n    useLoadableModule()\n\n    const state = (React as any).useSyncExternalStore(\n      subscription.subscribe,\n      subscription.getCurrentValue,\n      subscription.getCurrentValue\n    )\n\n    React.useImperativeHandle(\n      ref,\n      () => ({\n        retry: subscription.retry,\n      }),\n      []\n    )\n\n    return React.useMemo(() => {\n      if (state.loading || state.error) {\n        return React.createElement(opts.loading, {\n          isLoading: state.loading,\n          pastDelay: state.pastDelay,\n          timedOut: state.timedOut,\n          error: state.error,\n          retry: subscription.retry,\n        })\n      } else if (state.loaded) {\n        return React.createElement(resolve(state.loaded), props)\n      } else {\n        return null\n      }\n    }, [props, state])\n  }\n\n  LoadableComponent.preload = () => init()\n  LoadableComponent.displayName = 'LoadableComponent'\n\n  return React.forwardRef(LoadableComponent)\n}\n\nclass LoadableSubscription {\n  _loadFn: any\n  _opts: any\n  _callbacks: any\n  _delay: any\n  _timeout: any\n  _res: any\n  _state: any\n  constructor(loadFn: any, opts: any) {\n    this._loadFn = loadFn\n    this._opts = opts\n    this._callbacks = new Set()\n    this._delay = null\n    this._timeout = null\n\n    this.retry()\n  }\n\n  promise() {\n    return this._res.promise\n  }\n\n  retry() {\n    this._clearTimeouts()\n    this._res = this._loadFn(this._opts.loader)\n\n    this._state = {\n      pastDelay: false,\n      timedOut: false,\n    }\n\n    const { _res: res, _opts: opts } = this\n\n    if (res.loading) {\n      if (typeof opts.delay === 'number') {\n        if (opts.delay === 0) {\n          this._state.pastDelay = true\n        } else {\n          this._delay = setTimeout(() => {\n            this._update({\n              pastDelay: true,\n            })\n          }, opts.delay)\n        }\n      }\n\n      if (typeof opts.timeout === 'number') {\n        this._timeout = setTimeout(() => {\n          this._update({ timedOut: true })\n        }, opts.timeout)\n      }\n    }\n\n    this._res.promise\n      .then(() => {\n        this._update({})\n        this._clearTimeouts()\n      })\n      .catch((_err: any) => {\n        this._update({})\n        this._clearTimeouts()\n      })\n    this._update({})\n  }\n\n  _update(partial: any) {\n    this._state = {\n      ...this._state,\n      error: this._res.error,\n      loaded: this._res.loaded,\n      loading: this._res.loading,\n      ...partial,\n    }\n    this._callbacks.forEach((callback: any) => callback())\n  }\n\n  _clearTimeouts() {\n    clearTimeout(this._delay)\n    clearTimeout(this._timeout)\n  }\n\n  getCurrentValue() {\n    return this._state\n  }\n\n  subscribe(callback: any) {\n    this._callbacks.add(callback)\n    return () => {\n      this._callbacks.delete(callback)\n    }\n  }\n}\n\nfunction Loadable(opts: any) {\n  return createLoadableComponent(load, opts)\n}\n\nfunction flushInitializers(initializers: any, ids?: any): any {\n  let promises = []\n\n  while (initializers.length) {\n    let init = initializers.pop()\n    promises.push(init(ids))\n  }\n\n  return Promise.all(promises).then(() => {\n    if (initializers.length) {\n      return flushInitializers(initializers, ids)\n    }\n  })\n}\n\nLoadable.preloadAll = () => {\n  return new Promise((resolveInitializers, reject) => {\n    flushInitializers(ALL_INITIALIZERS).then(resolveInitializers, reject)\n  })\n}\n\nLoadable.preloadReady = (ids: (string | number)[] = []): Promise<void> => {\n  return new Promise<void>((resolvePreload) => {\n    const res = () => {\n      initialized = true\n      return resolvePreload()\n    }\n    // We always will resolve, errors should be handled within loading UIs.\n    flushInitializers(READY_INITIALIZERS, ids).then(res, res)\n  })\n}\n\ndeclare global {\n  interface Window {\n    __NEXT_PRELOADREADY?: (ids?: (string | number)[]) => Promise<void>\n  }\n}\n\nif (typeof window !== 'undefined') {\n  window.__NEXT_PRELOADREADY = Loadable.preloadReady\n}\n\nexport default Loadable\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin\nmodule.exports = {\"outline\":\"HeadingAnalyzer_outline___IguK\"};","module.exports = require('./dist/shared/lib/dynamic')\n","module.exports = require('./dist/shared/lib/head')\n","module.exports = require('./dist/shared/lib/image-external')\n","module.exports = require('../dist/client/legacy/image')\n","module.exports = require('./dist/client/link')\n","module.exports = require('./dist/client/router')\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nexport var hiddenGuard = {\n  width: '1px',\n  height: '0px',\n  padding: 0,\n  overflow: 'hidden',\n  position: 'fixed',\n  top: '1px',\n  left: '1px'\n};\nvar InFocusGuard = function InFocusGuard(_ref) {\n  var _ref$children = _ref.children,\n    children = _ref$children === void 0 ? null : _ref$children;\n  return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n    key: \"guard-first\",\n    \"data-focus-guard\": true,\n    \"data-focus-auto-guard\": true,\n    style: hiddenGuard\n  }), children, children && /*#__PURE__*/React.createElement(\"div\", {\n    key: \"guard-last\",\n    \"data-focus-guard\": true,\n    \"data-focus-auto-guard\": true,\n    style: hiddenGuard\n  }));\n};\nInFocusGuard.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: PropTypes.node\n} : {};\nexport default InFocusGuard;","import { createMedium, createSidecarMedium } from 'use-sidecar';\nexport var mediumFocus = createMedium({}, function (_ref) {\n  var target = _ref.target,\n    currentTarget = _ref.currentTarget;\n  return {\n    target: target,\n    currentTarget: currentTarget\n  };\n});\nexport var mediumBlur = createMedium();\nexport var mediumEffect = createMedium();\nexport var mediumSidecar = createSidecarMedium({\n  async: true,\n  ssr: typeof document !== 'undefined'\n});","import { createContext } from 'react';\nexport var focusScope = /*#__PURE__*/createContext(undefined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { forwardRef, useRef, useState, useCallback, useEffect, useMemo, Fragment } from 'react';\nimport { node, bool, string, any, arrayOf, oneOfType, object, func } from 'prop-types';\nimport { FOCUS_DISABLED, FOCUS_GROUP } from 'focus-lock/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { hiddenGuard } from './FocusGuard';\nimport { mediumFocus, mediumBlur, mediumSidecar } from './medium';\nimport { focusScope } from './scope';\nvar emptyArray = [];\nvar FocusLock = /*#__PURE__*/forwardRef(function FocusLockUI(props, parentRef) {\n  var _extends2;\n  var _useState = useState(),\n    realObserved = _useState[0],\n    setObserved = _useState[1];\n  var observed = useRef();\n  var isActive = useRef(false);\n  var originalFocusedElement = useRef(null);\n  var _useState2 = useState({}),\n    update = _useState2[1];\n  var children = props.children,\n    _props$disabled = props.disabled,\n    disabled = _props$disabled === void 0 ? false : _props$disabled,\n    _props$noFocusGuards = props.noFocusGuards,\n    noFocusGuards = _props$noFocusGuards === void 0 ? false : _props$noFocusGuards,\n    _props$persistentFocu = props.persistentFocus,\n    persistentFocus = _props$persistentFocu === void 0 ? false : _props$persistentFocu,\n    _props$crossFrame = props.crossFrame,\n    crossFrame = _props$crossFrame === void 0 ? true : _props$crossFrame,\n    _props$autoFocus = props.autoFocus,\n    autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,\n    allowTextSelection = props.allowTextSelection,\n    group = props.group,\n    className = props.className,\n    whiteList = props.whiteList,\n    hasPositiveIndices = props.hasPositiveIndices,\n    _props$shards = props.shards,\n    shards = _props$shards === void 0 ? emptyArray : _props$shards,\n    _props$as = props.as,\n    Container = _props$as === void 0 ? 'div' : _props$as,\n    _props$lockProps = props.lockProps,\n    containerProps = _props$lockProps === void 0 ? {} : _props$lockProps,\n    SideCar = props.sideCar,\n    _props$returnFocus = props.returnFocus,\n    shouldReturnFocus = _props$returnFocus === void 0 ? false : _props$returnFocus,\n    focusOptions = props.focusOptions,\n    onActivationCallback = props.onActivation,\n    onDeactivationCallback = props.onDeactivation;\n  var _useState3 = useState({}),\n    id = _useState3[0];\n  var onActivation = useCallback(function (_ref) {\n    var captureFocusRestore = _ref.captureFocusRestore;\n    if (!originalFocusedElement.current) {\n      var _document;\n      var activeElement = (_document = document) == null ? void 0 : _document.activeElement;\n      originalFocusedElement.current = activeElement;\n      if (activeElement !== document.body) {\n        originalFocusedElement.current = captureFocusRestore(activeElement);\n      }\n    }\n    if (observed.current && onActivationCallback) {\n      onActivationCallback(observed.current);\n    }\n    isActive.current = true;\n    update();\n  }, [onActivationCallback]);\n  var onDeactivation = useCallback(function () {\n    isActive.current = false;\n    if (onDeactivationCallback) {\n      onDeactivationCallback(observed.current);\n    }\n    update();\n  }, [onDeactivationCallback]);\n  var returnFocus = useCallback(function (allowDefer) {\n    var focusRestore = originalFocusedElement.current;\n    if (focusRestore) {\n      var returnFocusTo = (typeof focusRestore === 'function' ? focusRestore() : focusRestore) || document.body;\n      var howToReturnFocus = typeof shouldReturnFocus === 'function' ? shouldReturnFocus(returnFocusTo) : shouldReturnFocus;\n      if (howToReturnFocus) {\n        var returnFocusOptions = typeof howToReturnFocus === 'object' ? howToReturnFocus : undefined;\n        originalFocusedElement.current = null;\n        if (allowDefer) {\n          Promise.resolve().then(function () {\n            return returnFocusTo.focus(returnFocusOptions);\n          });\n        } else {\n          returnFocusTo.focus(returnFocusOptions);\n        }\n      }\n    }\n  }, [shouldReturnFocus]);\n  var onFocus = useCallback(function (event) {\n    if (isActive.current) {\n      mediumFocus.useMedium(event);\n    }\n  }, []);\n  var onBlur = mediumBlur.useMedium;\n  var setObserveNode = useCallback(function (newObserved) {\n    if (observed.current !== newObserved) {\n      observed.current = newObserved;\n      setObserved(newObserved);\n    }\n  }, []);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof allowTextSelection !== 'undefined') {\n      console.warn('React-Focus-Lock: allowTextSelection is deprecated and enabled by default');\n    }\n    useEffect(function () {\n      if (!observed.current && typeof Container !== 'string') {\n        console.error('FocusLock: could not obtain ref to internal node');\n      }\n    }, []);\n  }\n  var lockProps = _extends((_extends2 = {}, _extends2[FOCUS_DISABLED] = disabled && 'disabled', _extends2[FOCUS_GROUP] = group, _extends2), containerProps);\n  var hasLeadingGuards = noFocusGuards !== true;\n  var hasTailingGuards = hasLeadingGuards && noFocusGuards !== 'tail';\n  var mergedRef = useMergeRefs([parentRef, setObserveNode]);\n  var focusScopeValue = useMemo(function () {\n    return {\n      observed: observed,\n      shards: shards,\n      enabled: !disabled,\n      active: isActive.current\n    };\n  }, [disabled, isActive.current, shards, realObserved]);\n  return /*#__PURE__*/React.createElement(Fragment, null, hasLeadingGuards && [\n  /*#__PURE__*/\n  React.createElement(\"div\", {\n    key: \"guard-first\",\n    \"data-focus-guard\": true,\n    tabIndex: disabled ? -1 : 0,\n    style: hiddenGuard\n  }), hasPositiveIndices ? /*#__PURE__*/React.createElement(\"div\", {\n    key: \"guard-nearest\",\n    \"data-focus-guard\": true,\n    tabIndex: disabled ? -1 : 1,\n    style: hiddenGuard\n  }) : null], !disabled && /*#__PURE__*/React.createElement(SideCar, {\n    id: id,\n    sideCar: mediumSidecar,\n    observed: realObserved,\n    disabled: disabled,\n    persistentFocus: persistentFocus,\n    crossFrame: crossFrame,\n    autoFocus: autoFocus,\n    whiteList: whiteList,\n    shards: shards,\n    onActivation: onActivation,\n    onDeactivation: onDeactivation,\n    returnFocus: returnFocus,\n    focusOptions: focusOptions,\n    noFocusGuards: noFocusGuards\n  }), /*#__PURE__*/React.createElement(Container, _extends({\n    ref: mergedRef\n  }, lockProps, {\n    className: className,\n    onBlur: onBlur,\n    onFocus: onFocus\n  }), /*#__PURE__*/React.createElement(focusScope.Provider, {\n    value: focusScopeValue\n  }, children)), hasTailingGuards && /*#__PURE__*/React.createElement(\"div\", {\n    \"data-focus-guard\": true,\n    tabIndex: disabled ? -1 : 0,\n    style: hiddenGuard\n  }));\n});\nFocusLock.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: node,\n  disabled: bool,\n  returnFocus: oneOfType([bool, object, func]),\n  focusOptions: object,\n  noFocusGuards: bool,\n  hasPositiveIndices: bool,\n  allowTextSelection: bool,\n  autoFocus: bool,\n  persistentFocus: bool,\n  crossFrame: bool,\n  group: string,\n  className: string,\n  whiteList: func,\n  shards: arrayOf(any),\n  as: oneOfType([string, func, object]),\n  lockProps: object,\n  onActivation: func,\n  onDeactivation: func,\n  sideCar: any.isRequired\n} : {};\nexport default FocusLock;","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (typeof reducePropsToState !== 'function') {\n      throw new Error('Expected reducePropsToState to be a function.');\n    }\n\n    if (typeof handleStateChangeOnClient !== 'function') {\n      throw new Error('Expected handleStateChangeOnClient to be a function.');\n    }\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (typeof WrappedComponent !== 'function') {\n        throw new Error('Expected WrappedComponent to be a React component.');\n      }\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n      handleStateChangeOnClient(state);\n    }\n\n    var SideEffect = /*#__PURE__*/function (_PureComponent) {\n      _inheritsLoose(SideEffect, _PureComponent);\n\n      function SideEffect() {\n        return _PureComponent.apply(this, arguments) || this;\n      }\n\n      // Try to use displayName of wrapped component\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.componentDidMount = function componentDidMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(PureComponent);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    return SideEffect;\n  };\n}\n\nexport default withSideEffect;\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n    var ret = Array(a.length);\n    for (var i = 0; i < a.length; ++i) {\n        ret[i] = a[i];\n    }\n    return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\nexport var getFirst = function (a) { return (Array.isArray(a) ? a[0] : a); };\n","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n    // we can measure only \"elements\"\n    // consider others as \"visible\"\n    if (node.nodeType !== Node.ELEMENT_NODE) {\n        return false;\n    }\n    var computedStyle = window.getComputedStyle(node, null);\n    if (!computedStyle || !computedStyle.getPropertyValue) {\n        return false;\n    }\n    return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n    // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n    return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n        ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            node.parentNode.host\n        : node.parentNode;\n};\nvar isTopNode = function (node) {\n    // @ts-ignore\n    return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isInert = function (node) { return node.hasAttribute('inert'); };\n/**\n * @see https://github.com/testing-library/jest-dom/blob/main/src/to-be-visible.js\n */\nvar isVisibleUncached = function (node, checkParent) {\n    return !node || isTopNode(node) || (!isElementHidden(node) && !isInert(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n    var cached = visibilityCache.get(node);\n    if (cached !== undefined) {\n        return cached;\n    }\n    var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n    visibilityCache.set(node, result);\n    return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n    return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n    var cached = cache.get(node);\n    if (cached !== undefined) {\n        return cached;\n    }\n    var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n    cache.set(node, result);\n    return result;\n};\nexport var getDataset = function (node) {\n    // @ts-ignore\n    return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n    return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n    return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n    var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n    return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n    var aTab = Math.max(0, a.tabIndex);\n    var bTab = Math.max(0, b.tabIndex);\n    var tabDiff = aTab - bTab;\n    var indexDiff = a.index - b.index;\n    if (tabDiff) {\n        if (!aTab) {\n            return 1;\n        }\n        if (!bTab) {\n            return -1;\n        }\n    }\n    return tabDiff || indexDiff;\n};\nvar getTabIndex = function (node) {\n    if (node.tabIndex < 0) {\n        // all \"focusable\" elements are already preselected\n        // but some might have implicit negative tabIndex\n        // return 0 for <audio without tabIndex attribute - it is \"tabbable\"\n        if (!node.hasAttribute('tabindex')) {\n            return 0;\n        }\n    }\n    return node.tabIndex;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n    return toArray(nodes)\n        .map(function (node, index) {\n        var tabIndex = getTabIndex(node);\n        return {\n            node: node,\n            index: index,\n            tabIndex: keepGuards && tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : tabIndex,\n        };\n    })\n        .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n        .sort(tabSort);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n    'button:enabled',\n    'select:enabled',\n    'textarea:enabled',\n    'input:enabled',\n    // elements with explicit roles will also use explicit tabindex\n    // '[role=\"button\"]',\n    'a[href]',\n    'area[href]',\n    'summary',\n    'iframe',\n    'object',\n    'embed',\n    'audio[controls]',\n    'video[controls]',\n    '[tabindex]',\n    '[contenteditable]',\n    '[autofocus]',\n];\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n    return toArray((parent.shadowRoot || parent).children).reduce(function (acc, child) {\n        return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n    }, []);\n};\nvar getFocusablesWithIFrame = function (parent, withGuards) {\n    var _a;\n    // contentDocument of iframe will be null if current origin cannot access it\n    if (parent instanceof HTMLIFrameElement && ((_a = parent.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {\n        return getFocusables([parent.contentDocument.body], withGuards);\n    }\n    return [parent];\n};\nexport var getFocusables = function (parents, withGuards) {\n    return parents.reduce(function (acc, parent) {\n        var _a;\n        var focusableWithShadowDom = getFocusablesWithShadowDom(parent, withGuards);\n        var focusableWithIframes = (_a = []).concat.apply(_a, focusableWithShadowDom.map(function (node) { return getFocusablesWithIFrame(node, withGuards); }));\n        return acc.concat(\n        // add all tabbables inside and within shadow DOMs in DOM order\n        focusableWithIframes, \n        // add if node is tabbable itself\n        parent.parentNode\n            ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n            : []);\n    }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n    var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n    return toArray(parentFocus)\n        .map(function (node) { return getFocusables([node]); })\n        .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n    return toArray(nodes)\n        .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n        .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n    if (cache === void 0) { cache = new Map(); }\n    return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * !__WARNING__! Low level API.\n * @returns all tabbable nodes\n *\n * @see {@link getFocusableNodes} to get any focusable element\n *\n * @param topNodes - array of top level HTMLElements to search inside\n * @param visibilityCache - an cache to store intermediate measurements. Expected to be a fresh `new Map` on every call\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n    return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * !__WARNING__! Low level API.\n *\n * @returns anything \"focusable\", not only tabbable. The difference is in `tabIndex=-1`\n * (without guards, as long as they are not expected to be ever focused)\n *\n * @see {@link getTabbableNodes} to get only tabble nodes element\n *\n * @param topNodes - array of top level HTMLElements to search inside\n * @param visibilityCache - an cache to store intermediate measurements. Expected to be a fresh `new Map` on every call\n */\nexport var getFocusableNodes = function (topNodes, visibilityCache) {\n    return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n    return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n    if (scope.shadowRoot) {\n        return contains(scope.shadowRoot, element);\n    }\n    else {\n        if (Object.getPrototypeOf(scope).contains !== undefined &&\n            Object.getPrototypeOf(scope).contains.call(scope, element)) {\n            return true;\n        }\n        return toArray(scope.children).some(function (child) {\n            var _a;\n            if (child instanceof HTMLIFrameElement) {\n                var iframeBody = (_a = child.contentDocument) === null || _a === void 0 ? void 0 : _a.body;\n                if (iframeBody) {\n                    return contains(iframeBody, element);\n                }\n                return false;\n            }\n            return contains(child, element);\n        });\n    }\n};\n","export var safeProbe = function (cb) {\n    try {\n        return cb();\n    }\n    catch (e) {\n        return undefined;\n    }\n};\n","/**\n * returns active element from document or from nested shadowdoms\n */\nimport { safeProbe } from './safe';\n/**\n * returns current active element. If the active element is a \"container\" itself(shadowRoot or iframe) returns active element inside it\n * @param [inDocument]\n */\nexport var getActiveElement = function (inDocument) {\n    if (inDocument === void 0) { inDocument = document; }\n    if (!inDocument || !inDocument.activeElement) {\n        return undefined;\n    }\n    var activeElement = inDocument.activeElement;\n    return (activeElement.shadowRoot\n        ? getActiveElement(activeElement.shadowRoot)\n        : activeElement instanceof HTMLIFrameElement && safeProbe(function () { return activeElement.contentWindow.document; })\n            ? getActiveElement(activeElement.contentWindow.document)\n            : activeElement);\n};\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * checks if focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n *\n * This is a utility function coupled with {@link FOCUS_ALLOW} constant\n *\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function (inDocument) {\n    if (inDocument === void 0) { inDocument = document; }\n    var activeElement = getActiveElement(inDocument);\n    if (!activeElement) {\n        return false;\n    }\n    // this does not support setting FOCUS_ALLOW within shadow dom\n    return toArray(inDocument.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n    var contained = new Set();\n    var l = nodes.length;\n    for (var i = 0; i < l; i += 1) {\n        for (var j = i + 1; j < l; j += 1) {\n            var position = nodes[i].compareDocumentPosition(nodes[j]);\n            /* eslint-disable no-bitwise */\n            if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n                contained.add(j);\n            }\n            if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n                contained.add(i);\n            }\n            /* eslint-enable */\n        }\n    }\n    return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n    return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node - node or nodes to look inside\n * @returns Element[]\n */\nexport var getAllAffectedNodes = function (node) {\n    var nodes = asArray(node);\n    return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n        var group = currentNode.getAttribute(FOCUS_GROUP);\n        acc.push.apply(acc, (group\n            ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n            : [currentNode]));\n        return acc;\n    }, []);\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { getFirst, toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame, activeElement) { return frame === activeElement; };\nvar focusInsideIframe = function (topNode, activeElement) {\n    return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node, activeElement); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes.\n * Supports nodes hidden inside shadowDom\n */\nexport var focusInside = function (topNode, activeElement) {\n    // const activeElement = document && getActiveElement();\n    if (activeElement === void 0) { activeElement = getActiveElement(getFirst(topNode).ownerDocument); }\n    if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n        return false;\n    }\n    return getAllAffectedNodes(topNode).some(function (node) {\n        return contains(node, activeElement) || focusInsideIframe(node, activeElement);\n    });\n};\n","export var focusOn = function (target, focusOptions) {\n    if (!target) {\n        // not clear how, but is possible https://github.com/theKashey/focus-lock/issues/53\n        return;\n    }\n    if ('focus' in target) {\n        target.focus(focusOptions);\n    }\n    if ('contentWindow' in target && target.contentWindow) {\n        target.contentWindow.focus();\n    }\n};\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n    return nodes\n        .filter(isRadioElement)\n        .filter(function (el) { return el.name === node.name; })\n        .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n    if (isRadioElement(node) && node.name) {\n        return findSelectedRadio(node, nodes);\n    }\n    return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n    // IE11 has no Set(array) constructor\n    var resultSet = new Set();\n    nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n    // using filter to support IE11\n    return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n    if (nodes[0] && nodes.length > 1) {\n        return correctNode(nodes[0], nodes);\n    }\n    return nodes[0];\n};\nexport var pickFocusable = function (nodes, node) {\n    return nodes.indexOf(correctNode(node, nodes));\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes - used to control \"return focus\"\n * @param innerTabbables - used to control \"autofocus\"\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, innerTabbables, outerNodes, activeElement, lastNode) {\n    var cnt = innerNodes.length;\n    var firstFocus = innerNodes[0];\n    var lastFocus = innerNodes[cnt - 1];\n    var isOnGuard = isGuard(activeElement);\n    // focus is inside\n    if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n        return undefined;\n    }\n    var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n    var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n    var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n    // no active focus (or focus is on the body)\n    if (activeIndex === -1) {\n        // known fallback\n        if (lastNodeInside !== -1) {\n            return lastNodeInside;\n        }\n        return NEW_FOCUS;\n    }\n    // new focus, nothing to calculate\n    if (lastNodeInside === -1) {\n        return NEW_FOCUS;\n    }\n    var indexDiff = activeIndex - lastIndex;\n    var firstNodeIndex = outerNodes.indexOf(firstFocus);\n    var lastNodeIndex = outerNodes.indexOf(lastFocus);\n    var correctedNodes = correctNodes(outerNodes);\n    var currentFocusableIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n    var previousFocusableIndex = lastNode ? correctedNodes.indexOf(lastNode) : currentFocusableIndex;\n    var tabbableNodes = correctedNodes.filter(function (node) { return node.tabIndex >= 0; });\n    var currentTabbableIndex = activeElement !== undefined ? tabbableNodes.indexOf(activeElement) : -1;\n    var previousTabbableIndex = lastNode ? tabbableNodes.indexOf(lastNode) : currentTabbableIndex;\n    var focusIndexDiff = currentTabbableIndex >= 0 && previousTabbableIndex >= 0\n        ? // old/new are tabbables, measure distance in tabbable space\n            previousTabbableIndex - currentTabbableIndex\n        : // or else measure in focusable space\n            previousFocusableIndex - currentFocusableIndex;\n    // old focus\n    if (!indexDiff && lastNodeInside >= 0) {\n        return lastNodeInside;\n    }\n    // no tabbable elements, autofocus is not possible\n    if (innerTabbables.length === 0) {\n        // an edge case with no tabbable elements\n        // return the last focusable one\n        // with some probability this will prevent focus from cycling across the lock, but there is no tabbale elements to cycle to\n        return lastNodeInside;\n    }\n    var returnFirstNode = pickFocusable(innerNodes, innerTabbables[0]);\n    var returnLastNode = pickFocusable(innerNodes, innerTabbables[innerTabbables.length - 1]);\n    // first element\n    if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n        return returnLastNode;\n    }\n    // last element\n    if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n        return returnFirstNode;\n    }\n    // jump out, but not on the guard\n    if (indexDiff && Math.abs(focusIndexDiff) > 1) {\n        return lastNodeInside;\n    }\n    // focus above lock\n    if (activeIndex <= firstNodeIndex) {\n        return returnLastNode;\n    }\n    // focus below lock\n    if (activeIndex > lastNodeIndex) {\n        return returnFirstNode;\n    }\n    // index is inside tab order, but outside Lock\n    if (indexDiff) {\n        if (Math.abs(indexDiff) > 1) {\n            return lastNodeInside;\n        }\n        return (cnt + lastNodeInside + indexDiff) % cnt;\n    }\n    // do nothing\n    return undefined;\n};\n","import { filterAutoFocusable } from './DOMutils';\nimport { pickFirstFocus } from './firstFocus';\nimport { getDataset } from './is';\nvar findAutoFocused = function (autoFocusables) {\n    return function (node) {\n        var _a;\n        var autofocus = (_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus;\n        return (\n        // @ts-expect-error\n        node.autofocus ||\n            //\n            (autofocus !== undefined && autofocus !== 'false') ||\n            //\n            autoFocusables.indexOf(node) >= 0);\n    };\n};\nexport var pickAutofocus = function (nodesIndexes, orderedNodes, groups) {\n    var nodes = nodesIndexes.map(function (_a) {\n        var node = _a.node;\n        return node;\n    });\n    var autoFocusable = filterAutoFocusable(nodes.filter(findAutoFocused(groups)));\n    if (autoFocusable && autoFocusable.length) {\n        return pickFirstFocus(autoFocusable);\n    }\n    return pickFirstFocus(filterAutoFocusable(orderedNodes));\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n    if (parents === void 0) { parents = []; }\n    parents.push(node);\n    if (node.parentNode) {\n        getParents(node.parentNode.host || node.parentNode, parents);\n    }\n    return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n    var parentsA = getParents(nodeA);\n    var parentsB = getParents(nodeB);\n    // tslint:disable-next-line:prefer-for-of\n    for (var i = 0; i < parentsA.length; i += 1) {\n        var currentParent = parentsA[i];\n        if (parentsB.indexOf(currentParent) >= 0) {\n            return currentParent;\n        }\n    }\n    return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n    var activeElements = asArray(baseActiveElement);\n    var leftEntries = asArray(leftEntry);\n    var activeElement = activeElements[0];\n    var topCommon = false;\n    leftEntries.filter(Boolean).forEach(function (entry) {\n        topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n        rightEntries.filter(Boolean).forEach(function (subEntry) {\n            var common = getCommonParent(activeElement, subEntry);\n            if (common) {\n                if (!topCommon || contains(common, topCommon)) {\n                    topCommon = common;\n                }\n                else {\n                    topCommon = getCommonParent(common, topCommon);\n                }\n            }\n        });\n    });\n    // TODO: add assert here?\n    return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n    return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { getFocusableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { asArray, getFirst } from './utils/array';\nimport { pickAutofocus } from './utils/auto-focus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar reorderNodes = function (srcNodes, dstNodes) {\n    var remap = new Map();\n    // no Set(dstNodes) for IE11 :(\n    dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n    // remap to dstNodes\n    return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * contains the main logic of the `focus-lock` package.\n *\n * ! you probably dont need this function !\n *\n * given top node(s) and the last active element returns the element to be focused next\n * @returns element which should be focused to move focus inside\n * @param topNode\n * @param lastNode\n */\nexport var focusSolver = function (topNode, lastNode) {\n    var activeElement = getActiveElement(asArray(topNode).length > 0 ? document : getFirst(topNode).ownerDocument);\n    var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n    var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n    var visibilityCache = new Map();\n    var anyFocusable = getFocusableNodes(entries, visibilityCache);\n    var innerElements = anyFocusable.filter(function (_a) {\n        var node = _a.node;\n        return isNotAGuard(node);\n    });\n    if (!innerElements[0]) {\n        return undefined;\n    }\n    var outerNodes = getFocusableNodes([commonParent], visibilityCache).map(function (_a) {\n        var node = _a.node;\n        return node;\n    });\n    var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n    // collect inner focusable and separately tabbables\n    var innerFocusables = orderedInnerElements.map(function (_a) {\n        var node = _a.node;\n        return node;\n    });\n    var innerTabbable = orderedInnerElements.filter(function (_a) {\n        var tabIndex = _a.tabIndex;\n        return tabIndex >= 0;\n    }).map(function (_a) {\n        var node = _a.node;\n        return node;\n    });\n    var newId = newFocus(innerFocusables, innerTabbable, outerNodes, activeElement, lastNode);\n    if (newId === NEW_FOCUS) {\n        var focusNode = \n        // first try only tabbable, and the fallback to all focusable, as long as at least one element should be picked for focus\n        pickAutofocus(anyFocusable, innerTabbable, allParentAutofocusables(entries, visibilityCache)) ||\n            pickAutofocus(anyFocusable, innerFocusables, allParentAutofocusables(entries, visibilityCache));\n        if (focusNode) {\n            return { node: focusNode };\n        }\n        else {\n            console.warn('focus-lock: cannot find any node to move focus into');\n            return undefined;\n        }\n    }\n    if (newId === undefined) {\n        return newId;\n    }\n    return orderedInnerElements[newId];\n};\n","import { focusOn } from './commands';\nimport { focusSolver } from './focusSolver';\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * The main functionality of the focus-lock package\n *\n * Contains focus at a given node.\n * The last focused element will help to determine which element(first or last) should be focused.\n * The found element will be focused.\n *\n * This is one time action (move), not a persistent focus-lock\n *\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @see {@link focusSolver} for the same functionality without autofocus\n */\nexport var moveFocusInside = function (topNode, lastNode, options) {\n    if (options === void 0) { options = {}; }\n    var focusable = focusSolver(topNode, lastNode);\n    // global local side effect to countain recursive lock activation and resolve focus-fighting\n    if (lockDisabled) {\n        return;\n    }\n    if (focusable) {\n        /** +FOCUS-FIGHTING prevention **/\n        if (guardCount > 2) {\n            // we have recursive entered back the lock activation\n            console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n                'See https://github.com/theKashey/focus-lock/#focus-fighting');\n            lockDisabled = true;\n            setTimeout(function () {\n                lockDisabled = false;\n            }, 1);\n            return;\n        }\n        guardCount++;\n        focusOn(focusable.node, options.focusOptions);\n        guardCount--;\n    }\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nfunction weakRef(value) {\n    if (!value)\n        return null;\n    // #68 Safari 14.1 dont have it yet\n    // FIXME: remove in 2025\n    if (typeof WeakRef === 'undefined') {\n        return function () { return value || null; };\n    }\n    var w = value ? new WeakRef(value) : null;\n    return function () { return (w === null || w === void 0 ? void 0 : w.deref()) || null; };\n}\nexport var recordElementLocation = function (element) {\n    if (!element) {\n        return null;\n    }\n    var stack = [];\n    var currentElement = element;\n    while (currentElement && currentElement !== document.body) {\n        stack.push({\n            current: weakRef(currentElement),\n            parent: weakRef(currentElement.parentElement),\n            left: weakRef(currentElement.previousElementSibling),\n            right: weakRef(currentElement.nextElementSibling),\n        });\n        currentElement = currentElement.parentElement;\n    }\n    return {\n        element: weakRef(element),\n        stack: stack,\n        ownerDocument: element.ownerDocument,\n    };\n};\nvar restoreFocusTo = function (location) {\n    var _a, _b, _c, _d, _e;\n    if (!location) {\n        return undefined;\n    }\n    var stack = location.stack, ownerDocument = location.ownerDocument;\n    var visibilityCache = new Map();\n    for (var _i = 0, stack_1 = stack; _i < stack_1.length; _i++) {\n        var line = stack_1[_i];\n        var parent_1 = (_a = line.parent) === null || _a === void 0 ? void 0 : _a.call(line);\n        // is it still here?\n        if (parent_1 && ownerDocument.contains(parent_1)) {\n            var left = (_b = line.left) === null || _b === void 0 ? void 0 : _b.call(line);\n            var savedCurrent = line.current();\n            var current = parent_1.contains(savedCurrent) ? savedCurrent : undefined;\n            var right = (_c = line.right) === null || _c === void 0 ? void 0 : _c.call(line);\n            var focusables = getTabbableNodes([parent_1], visibilityCache);\n            var aim = \n            // that is element itself\n            (_e = (_d = current !== null && current !== void 0 ? current : \n            // or something in it's place\n            left === null || left === void 0 ? void 0 : left.nextElementSibling) !== null && _d !== void 0 ? _d : \n            // or somebody to the right, still close enough\n            right) !== null && _e !== void 0 ? _e : \n            // or somebody to the left, something?\n            left;\n            while (aim) {\n                for (var _f = 0, focusables_1 = focusables; _f < focusables_1.length; _f++) {\n                    var focusable = focusables_1[_f];\n                    if (aim === null || aim === void 0 ? void 0 : aim.contains(focusable.node)) {\n                        return focusable.node;\n                    }\n                }\n                aim = aim.nextElementSibling;\n            }\n            if (focusables.length) {\n                // if parent contains a focusable - move there\n                return focusables[0].node;\n            }\n        }\n    }\n    // nothing matched\n    return undefined;\n};\n/**\n * Captures the current focused element to restore focus as close as possible in the future\n * Handles situations where the focused element is removed from the DOM or no longer focusable\n * moving focus to the closest focusable element\n * @param targetElement - element where focus should be restored\n * @returns a function returning a new element to focus\n */\nexport var captureFocusRestore = function (targetElement) {\n    var location = recordElementLocation(targetElement);\n    return function () {\n        return restoreFocusTo(location);\n    };\n};\n","import { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\nimport { orderByTabIndex } from './utils/tabOrder';\nimport { getFocusables } from './utils/tabUtils';\n/**\n * traverses all related nodes (including groups) returning a list of all nodes(outer and internal) with meta information\n * This is low-level API!\n * @returns list of focusable elements inside a given top(!) node.\n * @see {@link getFocusableNodes} providing a simpler API\n */\nexport var expandFocusableNodes = function (topNode) {\n    var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n    var commonParent = getTopCommonParent(topNode, topNode, entries);\n    var outerNodes = orderByTabIndex(getFocusables([commonParent], true), true, true);\n    var innerElements = getFocusables(entries, false);\n    return outerNodes.map(function (_a) {\n        var node = _a.node, index = _a.index;\n        return ({\n            node: node,\n            index: index,\n            lockItem: innerElements.indexOf(node) >= 0,\n            guard: isGuard(node),\n        });\n    });\n};\n","import { focusOn } from './commands';\nimport { getTabbableNodes, contains, getFocusableNodes } from './utils/DOMutils';\nimport { asArray } from './utils/array';\n/**\n * for a given `element` in a given `scope` returns focusable siblings\n * @param element - base element\n * @param scope - common parent. Can be document, but better to narrow it down for performance reasons\n * @returns {prev,next} - references to a focusable element before and after\n * @returns undefined - if operation is not applicable\n */\nexport var getRelativeFocusable = function (element, scope, useTabbables) {\n    if (!element || !scope) {\n        console.error('no element or scope given');\n        return {};\n    }\n    var shards = asArray(scope);\n    if (shards.every(function (shard) { return !contains(shard, element); })) {\n        console.error('Active element is not contained in the scope');\n        return {};\n    }\n    var focusables = useTabbables\n        ? getTabbableNodes(shards, new Map())\n        : getFocusableNodes(shards, new Map());\n    var current = focusables.findIndex(function (_a) {\n        var node = _a.node;\n        return node === element;\n    });\n    if (current === -1) {\n        // an edge case, when anchor element is not found\n        return undefined;\n    }\n    return {\n        prev: focusables[current - 1],\n        next: focusables[current + 1],\n        first: focusables[0],\n        last: focusables[focusables.length - 1],\n    };\n};\nvar getBoundary = function (shards, useTabbables) {\n    var set = useTabbables\n        ? getTabbableNodes(asArray(shards), new Map())\n        : getFocusableNodes(asArray(shards), new Map());\n    return {\n        first: set[0],\n        last: set[set.length - 1],\n    };\n};\nvar defaultOptions = function (options) {\n    return Object.assign({\n        scope: document.body,\n        cycle: true,\n        onlyTabbable: true,\n    }, options);\n};\nvar moveFocus = function (fromElement, options, cb) {\n    if (options === void 0) { options = {}; }\n    var newOptions = defaultOptions(options);\n    var solution = getRelativeFocusable(fromElement, newOptions.scope, newOptions.onlyTabbable);\n    if (!solution) {\n        return;\n    }\n    var target = cb(solution, newOptions.cycle);\n    if (target) {\n        focusOn(target.node, newOptions.focusOptions);\n    }\n};\n/**\n * focuses next element in the tab-order\n * @param fromElement - common parent to scope active element search or tab cycle order\n * @param {FocusNextOptions} [options] - focus options\n */\nexport var focusNextElement = function (fromElement, options) {\n    if (options === void 0) { options = {}; }\n    moveFocus(fromElement, options, function (_a, cycle) {\n        var next = _a.next, first = _a.first;\n        return next || (cycle && first);\n    });\n};\n/**\n * focuses prev element in the tab order\n * @param fromElement - common parent to scope active element search or tab cycle order\n * @param {FocusNextOptions} [options] - focus options\n */\nexport var focusPrevElement = function (fromElement, options) {\n    if (options === void 0) { options = {}; }\n    moveFocus(fromElement, options, function (_a, cycle) {\n        var prev = _a.prev, last = _a.last;\n        return prev || (cycle && last);\n    });\n};\nvar pickBoundary = function (scope, options, what) {\n    var _a;\n    var boundary = getBoundary(scope, (_a = options.onlyTabbable) !== null && _a !== void 0 ? _a : true);\n    var node = boundary[what];\n    if (node) {\n        focusOn(node.node, options.focusOptions);\n    }\n};\n/**\n * focuses first element in the tab-order\n * @param {FocusNextOptions} options - focus options\n */\nexport var focusFirstElement = function (scope, options) {\n    if (options === void 0) { options = {}; }\n    pickBoundary(scope, options, 'first');\n};\n/**\n * focuses last element in the tab order\n * @param {FocusNextOptions} options - focus options\n */\nexport var focusLastElement = function (scope, options) {\n    if (options === void 0) { options = {}; }\n    pickBoundary(scope, options, 'last');\n};\n","export function deferAction(action) {\n  setTimeout(action, 1);\n}\nexport var inlineProp = function inlineProp(name, value) {\n  var obj = {};\n  obj[name] = value;\n  return obj;\n};\nexport var extractRef = function extractRef(ref) {\n  return ref && 'current' in ref ? ref.current : ref;\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-clientside-effect';\nimport { moveFocusInside, focusInside, focusIsHidden, expandFocusableNodes, getFocusableNodes, focusNextElement, focusPrevElement, focusFirstElement, focusLastElement, captureFocusRestore } from 'focus-lock';\nimport { deferAction, extractRef } from './util';\nimport { mediumFocus, mediumBlur, mediumEffect } from './medium';\nvar focusOnBody = function focusOnBody() {\n  return document && document.activeElement === document.body;\n};\nvar isFreeFocus = function isFreeFocus() {\n  return focusOnBody() || focusIsHidden();\n};\nvar lastActiveTrap = null;\nvar lastActiveFocus = null;\nvar tryRestoreFocus = function tryRestoreFocus() {\n  return null;\n};\nvar lastPortaledElement = null;\nvar focusWasOutsideWindow = false;\nvar windowFocused = false;\nvar defaultWhitelist = function defaultWhitelist() {\n  return true;\n};\nvar focusWhitelisted = function focusWhitelisted(activeElement) {\n  return (lastActiveTrap.whiteList || defaultWhitelist)(activeElement);\n};\nvar recordPortal = function recordPortal(observerNode, portaledElement) {\n  lastPortaledElement = {\n    observerNode: observerNode,\n    portaledElement: portaledElement\n  };\n};\nvar focusIsPortaledPair = function focusIsPortaledPair(element) {\n  return lastPortaledElement && lastPortaledElement.portaledElement === element;\n};\nfunction autoGuard(startIndex, end, step, allNodes) {\n  var lastGuard = null;\n  var i = startIndex;\n  do {\n    var item = allNodes[i];\n    if (item.guard) {\n      if (item.node.dataset.focusAutoGuard) {\n        lastGuard = item;\n      }\n    } else if (item.lockItem) {\n      if (i !== startIndex) {\n        return;\n      }\n      lastGuard = null;\n    } else {\n      break;\n    }\n  } while ((i += step) !== end);\n  if (lastGuard) {\n    lastGuard.node.tabIndex = 0;\n  }\n}\nvar focusWasOutside = function focusWasOutside(crossFrameOption) {\n  if (crossFrameOption) {\n    return Boolean(focusWasOutsideWindow);\n  }\n  return focusWasOutsideWindow === 'meanwhile';\n};\nvar checkInHost = function checkInHost(check, el, boundary) {\n  return el && (el.host === check && (!el.activeElement || boundary.contains(el.activeElement)) || el.parentNode && checkInHost(check, el.parentNode, boundary));\n};\nvar withinHost = function withinHost(activeElement, workingArea) {\n  return workingArea.some(function (area) {\n    return checkInHost(activeElement, area, area);\n  });\n};\nvar getNodeFocusables = function getNodeFocusables(nodes) {\n  return getFocusableNodes(nodes, new Map());\n};\nvar isNotFocusable = function isNotFocusable(node) {\n  return !getNodeFocusables([node.parentNode]).some(function (el) {\n    return el.node === node;\n  });\n};\nvar activateTrap = function activateTrap() {\n  var result = false;\n  if (lastActiveTrap) {\n    var _lastActiveTrap = lastActiveTrap,\n      observed = _lastActiveTrap.observed,\n      persistentFocus = _lastActiveTrap.persistentFocus,\n      autoFocus = _lastActiveTrap.autoFocus,\n      shards = _lastActiveTrap.shards,\n      crossFrame = _lastActiveTrap.crossFrame,\n      focusOptions = _lastActiveTrap.focusOptions,\n      noFocusGuards = _lastActiveTrap.noFocusGuards;\n    var workingNode = observed || lastPortaledElement && lastPortaledElement.portaledElement;\n    if (focusOnBody() && lastActiveFocus && lastActiveFocus !== document.body) {\n      if (!document.body.contains(lastActiveFocus) || isNotFocusable(lastActiveFocus)) {\n        var newTarget = tryRestoreFocus();\n        if (newTarget) {\n          newTarget.focus();\n        }\n      }\n    }\n    var activeElement = document && document.activeElement;\n    if (workingNode) {\n      var workingArea = [workingNode].concat(shards.map(extractRef).filter(Boolean));\n      var shouldForceRestoreFocus = function shouldForceRestoreFocus() {\n        if (!focusWasOutside(crossFrame) || !noFocusGuards || !lastActiveFocus || windowFocused) {\n          return false;\n        }\n        var nodes = getNodeFocusables(workingArea);\n        var lastIndex = nodes.findIndex(function (_ref) {\n          var node = _ref.node;\n          return node === lastActiveFocus;\n        });\n        return lastIndex === 0 || lastIndex === nodes.length - 1;\n      };\n      if (!activeElement || focusWhitelisted(activeElement)) {\n        if (persistentFocus || shouldForceRestoreFocus() || !isFreeFocus() || !lastActiveFocus && autoFocus) {\n          if (workingNode && !(focusInside(workingArea) || activeElement && withinHost(activeElement, workingArea) || focusIsPortaledPair(activeElement, workingNode))) {\n            if (document && !lastActiveFocus && activeElement && !autoFocus) {\n              if (activeElement.blur) {\n                activeElement.blur();\n              }\n              document.body.focus();\n            } else {\n              result = moveFocusInside(workingArea, lastActiveFocus, {\n                focusOptions: focusOptions\n              });\n              lastPortaledElement = {};\n            }\n          }\n          lastActiveFocus = document && document.activeElement;\n          if (lastActiveFocus !== document.body) {\n            tryRestoreFocus = captureFocusRestore(lastActiveFocus);\n          }\n          focusWasOutsideWindow = false;\n        }\n      }\n      if (document && activeElement !== document.activeElement && document.querySelector('[data-focus-auto-guard]')) {\n        var newActiveElement = document && document.activeElement;\n        var allNodes = expandFocusableNodes(workingArea);\n        var focusedIndex = allNodes.map(function (_ref2) {\n          var node = _ref2.node;\n          return node;\n        }).indexOf(newActiveElement);\n        if (focusedIndex > -1) {\n          allNodes.filter(function (_ref3) {\n            var guard = _ref3.guard,\n              node = _ref3.node;\n            return guard && node.dataset.focusAutoGuard;\n          }).forEach(function (_ref4) {\n            var node = _ref4.node;\n            return node.removeAttribute('tabIndex');\n          });\n          autoGuard(focusedIndex, allNodes.length, +1, allNodes);\n          autoGuard(focusedIndex, -1, -1, allNodes);\n        }\n      }\n    }\n  }\n  return result;\n};\nvar onTrap = function onTrap(event) {\n  if (activateTrap() && event) {\n    event.stopPropagation();\n    event.preventDefault();\n  }\n};\nvar onBlur = function onBlur() {\n  return deferAction(activateTrap);\n};\nvar onFocus = function onFocus(event) {\n  var source = event.target;\n  var currentNode = event.currentTarget;\n  if (!currentNode.contains(source)) {\n    recordPortal(currentNode, source);\n  }\n};\nvar FocusWatcher = function FocusWatcher() {\n  return null;\n};\nvar FocusTrap = function FocusTrap(_ref5) {\n  var children = _ref5.children;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    onBlur: onBlur,\n    onFocus: onFocus\n  }, children);\n};\nFocusTrap.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: PropTypes.node.isRequired\n} : {};\nvar onWindowFocus = function onWindowFocus() {\n  windowFocused = true;\n};\nvar onWindowBlur = function onWindowBlur() {\n  windowFocused = false;\n  focusWasOutsideWindow = 'just';\n  deferAction(function () {\n    focusWasOutsideWindow = 'meanwhile';\n  });\n};\nvar attachHandler = function attachHandler() {\n  document.addEventListener('focusin', onTrap);\n  document.addEventListener('focusout', onBlur);\n  window.addEventListener('focus', onWindowFocus);\n  window.addEventListener('blur', onWindowBlur);\n};\nvar detachHandler = function detachHandler() {\n  document.removeEventListener('focusin', onTrap);\n  document.removeEventListener('focusout', onBlur);\n  window.removeEventListener('focus', onWindowFocus);\n  window.removeEventListener('blur', onWindowBlur);\n};\nfunction reducePropsToState(propsList) {\n  return propsList.filter(function (_ref6) {\n    var disabled = _ref6.disabled;\n    return !disabled;\n  });\n}\nvar focusLockAPI = {\n  moveFocusInside: moveFocusInside,\n  focusInside: focusInside,\n  focusNextElement: focusNextElement,\n  focusPrevElement: focusPrevElement,\n  focusFirstElement: focusFirstElement,\n  focusLastElement: focusLastElement,\n  captureFocusRestore: captureFocusRestore\n};\nfunction handleStateChangeOnClient(traps) {\n  var trap = traps.slice(-1)[0];\n  if (trap && !lastActiveTrap) {\n    attachHandler();\n  }\n  var lastTrap = lastActiveTrap;\n  var sameTrap = lastTrap && trap && trap.id === lastTrap.id;\n  lastActiveTrap = trap;\n  if (lastTrap && !sameTrap) {\n    lastTrap.onDeactivation();\n    if (!traps.filter(function (_ref7) {\n      var id = _ref7.id;\n      return id === lastTrap.id;\n    }).length) {\n      lastTrap.returnFocus(!trap);\n    }\n  }\n  if (trap) {\n    lastActiveFocus = null;\n    if (!sameTrap || lastTrap.observed !== trap.observed) {\n      trap.onActivation(focusLockAPI);\n    }\n    activateTrap(true);\n    deferAction(activateTrap);\n  } else {\n    detachHandler();\n    lastActiveFocus = null;\n  }\n}\nmediumFocus.assignSyncMedium(onFocus);\nmediumBlur.assignMedium(onBlur);\nmediumEffect.assignMedium(function (cb) {\n  return cb(focusLockAPI);\n});\nexport default withSideEffect(reducePropsToState, handleStateChangeOnClient)(FocusWatcher);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { forwardRef } from 'react';\nimport FocusLockUI from './Lock';\nimport FocusTrap from './Trap';\nvar FocusLockCombination = /*#__PURE__*/forwardRef(function FocusLockUICombination(props, ref) {\n  return /*#__PURE__*/React.createElement(FocusLockUI, _extends({\n    sideCar: FocusTrap,\n    ref: ref\n  }, props));\n});\nvar _ref = FocusLockUI.propTypes || {},\n  sideCar = _ref.sideCar,\n  propTypes = _objectWithoutPropertiesLoose(_ref, [\"sideCar\"]);\nFocusLockCombination.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nexport default FocusLockCombination;","import FocusLock from './Combination';\nexport * from './UI';\nexport default FocusLock;","/** @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","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n    return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n    var ref = React.useRef(null);\n    var _a = React.useState({\n        onScrollCapture: nothing,\n        onWheelCapture: nothing,\n        onTouchMoveCapture: nothing,\n    }), callbacks = _a[0], setCallbacks = _a[1];\n    var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n    var SideCar = sideCar;\n    var containerRef = useMergeRefs([ref, parentRef]);\n    var containerProps = __assign(__assign({}, rest), callbacks);\n    return (React.createElement(React.Fragment, null,\n        enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n        forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n    enabled: true,\n    removeScrollBar: true,\n    inert: false,\n};\nRemoveScroll.classNames = {\n    fullWidth: fullWidthClassName,\n    zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n    var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n    if (!sideCar) {\n        throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n    }\n    var Target = sideCar.read();\n    if (!Target) {\n        throw new Error('Sidecar medium not found');\n    }\n    return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n    medium.useMedium(exported);\n    return SideCar;\n}\n","var currentNonce;\nexport var setNonce = function (nonce) {\n    currentNonce = nonce;\n};\nexport var getNonce = function () {\n    if (currentNonce) {\n        return currentNonce;\n    }\n    if (typeof __webpack_nonce__ !== 'undefined') {\n        return __webpack_nonce__;\n    }\n    return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n    if (!document)\n        return null;\n    var tag = document.createElement('style');\n    tag.type = 'text/css';\n    var nonce = getNonce();\n    if (nonce) {\n        tag.setAttribute('nonce', nonce);\n    }\n    return tag;\n}\nfunction injectStyles(tag, css) {\n    // @ts-ignore\n    if (tag.styleSheet) {\n        // @ts-ignore\n        tag.styleSheet.cssText = css;\n    }\n    else {\n        tag.appendChild(document.createTextNode(css));\n    }\n}\nfunction insertStyleTag(tag) {\n    var head = document.head || document.getElementsByTagName('head')[0];\n    head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n    var counter = 0;\n    var stylesheet = null;\n    return {\n        add: function (style) {\n            if (counter == 0) {\n                if ((stylesheet = makeStyleTag())) {\n                    injectStyles(stylesheet, style);\n                    insertStyleTag(stylesheet);\n                }\n            }\n            counter++;\n        },\n        remove: function () {\n            counter--;\n            if (!counter && stylesheet) {\n                stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n                stylesheet = null;\n            }\n        },\n    };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n    var sheet = stylesheetSingleton();\n    return function (styles, isDynamic) {\n        React.useEffect(function () {\n            sheet.add(styles);\n            return function () {\n                sheet.remove();\n            };\n        }, [styles && isDynamic]);\n    };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n    var useStyle = styleHookSingleton();\n    var Sheet = function (_a) {\n        var styles = _a.styles, dynamic = _a.dynamic;\n        useStyle(styles, dynamic);\n        return null;\n    };\n    return Sheet;\n};\n","export { styleSingleton } from './component';\nexport { stylesheetSingleton } from './singleton';\nexport { styleHookSingleton } from './hook';\n","export var zeroGap = {\n    left: 0,\n    top: 0,\n    right: 0,\n    gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n    var cs = window.getComputedStyle(document.body);\n    var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n    var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n    var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n    return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    if (typeof window === 'undefined') {\n        return zeroGap;\n    }\n    var offsets = getOffset(gapMode);\n    var documentWidth = document.documentElement.clientWidth;\n    var windowWidth = window.innerWidth;\n    return {\n        left: offsets[0],\n        top: offsets[1],\n        right: offsets[2],\n        gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n    };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n    var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    return \"\\n  .\".concat(noScrollbarsClassName, \" {\\n   overflow: hidden \").concat(important, \";\\n   padding-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  body[\").concat(lockAttribute, \"] {\\n    overflow: hidden \").concat(important, \";\\n    overscroll-behavior: contain;\\n    \").concat([\n        allowRelative && \"position: relative \".concat(important, \";\"),\n        gapMode === 'margin' &&\n            \"\\n    padding-left: \".concat(left, \"px;\\n    padding-top: \").concat(top, \"px;\\n    padding-right: \").concat(right, \"px;\\n    margin-left:0;\\n    margin-top:0;\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n    \"),\n        gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n    ]\n        .filter(Boolean)\n        .join(''), \"\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" {\\n    right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" {\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n    right: 0 \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n    margin-right: 0 \").concat(important, \";\\n  }\\n  \\n  body[\").concat(lockAttribute, \"] {\\n    \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n  }\\n\");\n};\nvar getCurrentUseCounter = function () {\n    var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n    return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n    React.useEffect(function () {\n        document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n        return function () {\n            var newCounter = getCurrentUseCounter() - 1;\n            if (newCounter <= 0) {\n                document.body.removeAttribute(lockAttribute);\n            }\n            else {\n                document.body.setAttribute(lockAttribute, newCounter.toString());\n            }\n        };\n    }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n    var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n    useLockAttribute();\n    /*\n     gap will be measured on every component mount\n     however it will be used only by the \"first\" invocation\n     due to singleton nature of <Style\n     */\n    var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n    return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","import { RemoveScrollBar } from './component';\nimport { zeroRightClassName, fullWidthClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nexport { RemoveScrollBar, zeroRightClassName, fullWidthClassName, noScrollbarsClassName, removedBarSizeVariable, getGapWidth, };\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n    try {\n        var options = Object.defineProperty({}, 'passive', {\n            get: function () {\n                passiveSupported = true;\n                return true;\n            },\n        });\n        // @ts-ignore\n        window.addEventListener('test', options, options);\n        // @ts-ignore\n        window.removeEventListener('test', options, options);\n    }\n    catch (err) {\n        passiveSupported = false;\n    }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n    // textarea will always _contain_ scroll inside self. It only can be hidden\n    return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n    if (!(node instanceof Element)) {\n        return false;\n    }\n    var styles = window.getComputedStyle(node);\n    return (\n    // not-not-scrollable\n    styles[overflow] !== 'hidden' &&\n        // contains scroll inside self\n        !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n    var ownerDocument = node.ownerDocument;\n    var current = node;\n    do {\n        // Skip over shadow root\n        if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n            current = current.host;\n        }\n        var isScrollable = elementCouldBeScrolled(axis, current);\n        if (isScrollable) {\n            var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n            if (scrollHeight > clientHeight) {\n                return true;\n            }\n        }\n        current = current.parentNode;\n    } while (current && current !== ownerDocument.body);\n    return false;\n};\nvar getVScrollVariables = function (_a) {\n    var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n    return [\n        scrollTop,\n        scrollHeight,\n        clientHeight,\n    ];\n};\nvar getHScrollVariables = function (_a) {\n    var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n    return [\n        scrollLeft,\n        scrollWidth,\n        clientWidth,\n    ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n    return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n    return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n    /**\n     * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n     * and then increasingly negative as you scroll towards the end of the content.\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n     */\n    return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n    var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n    var delta = directionFactor * sourceDelta;\n    // find scrollable target\n    var target = event.target;\n    var targetInLock = endTarget.contains(target);\n    var shouldCancelScroll = false;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = 0;\n    var availableScrollTop = 0;\n    do {\n        var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n        var elementScroll = scroll_1 - capacity - directionFactor * position;\n        if (position || elementScroll) {\n            if (elementCouldBeScrolled(axis, target)) {\n                availableScroll += elementScroll;\n                availableScrollTop += position;\n            }\n        }\n        if (target instanceof ShadowRoot) {\n            target = target.host;\n        }\n        else {\n            target = target.parentNode;\n        }\n    } while (\n    // portaled content\n    (!targetInLock && target !== document.body) ||\n        // self content\n        (targetInLock && (endTarget.contains(target) || endTarget === target)));\n    // handle epsilon around 0 (non standard zoom levels)\n    if (isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n        shouldCancelScroll = true;\n    }\n    else if (!isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n        shouldCancelScroll = true;\n    }\n    return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n    return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n    return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n  .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n  .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n    var shouldPreventQueue = React.useRef([]);\n    var touchStartRef = React.useRef([0, 0]);\n    var activeAxis = React.useRef();\n    var id = React.useState(idCounter++)[0];\n    var Style = React.useState(styleSingleton)[0];\n    var lastProps = React.useRef(props);\n    React.useEffect(function () {\n        lastProps.current = props;\n    }, [props]);\n    React.useEffect(function () {\n        if (props.inert) {\n            document.body.classList.add(\"block-interactivity-\".concat(id));\n            var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n            allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n            return function () {\n                document.body.classList.remove(\"block-interactivity-\".concat(id));\n                allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n            };\n        }\n        return;\n    }, [props.inert, props.lockRef.current, props.shards]);\n    var shouldCancelEvent = React.useCallback(function (event, parent) {\n        if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n            return !lastProps.current.allowPinchZoom;\n        }\n        var touch = getTouchXY(event);\n        var touchStart = touchStartRef.current;\n        var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n        var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n        var currentAxis;\n        var target = event.target;\n        var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n        // allow horizontal touch move on Range inputs. They will not cause any scroll\n        if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n            return false;\n        }\n        var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n        if (!canBeScrolledInMainDirection) {\n            return true;\n        }\n        if (canBeScrolledInMainDirection) {\n            currentAxis = moveDirection;\n        }\n        else {\n            currentAxis = moveDirection === 'v' ? 'h' : 'v';\n            canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n            // other axis might be not scrollable\n        }\n        if (!canBeScrolledInMainDirection) {\n            return false;\n        }\n        if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n            activeAxis.current = currentAxis;\n        }\n        if (!currentAxis) {\n            return true;\n        }\n        var cancelingAxis = activeAxis.current || currentAxis;\n        return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n    }, []);\n    var shouldPrevent = React.useCallback(function (_event) {\n        var event = _event;\n        if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n            // not the last active\n            return;\n        }\n        var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n        var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n        // self event, and should be canceled\n        if (sourceEvent && sourceEvent.should) {\n            if (event.cancelable) {\n                event.preventDefault();\n            }\n            return;\n        }\n        // outside or shard event\n        if (!sourceEvent) {\n            var shardNodes = (lastProps.current.shards || [])\n                .map(extractRef)\n                .filter(Boolean)\n                .filter(function (node) { return node.contains(event.target); });\n            var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n            if (shouldStop) {\n                if (event.cancelable) {\n                    event.preventDefault();\n                }\n            }\n        }\n    }, []);\n    var shouldCancel = React.useCallback(function (name, delta, target, should) {\n        var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n        shouldPreventQueue.current.push(event);\n        setTimeout(function () {\n            shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n        }, 1);\n    }, []);\n    var scrollTouchStart = React.useCallback(function (event) {\n        touchStartRef.current = getTouchXY(event);\n        activeAxis.current = undefined;\n    }, []);\n    var scrollWheel = React.useCallback(function (event) {\n        shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    var scrollTouchMove = React.useCallback(function (event) {\n        shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    React.useEffect(function () {\n        lockStack.push(Style);\n        props.setCallbacks({\n            onScrollCapture: scrollWheel,\n            onWheelCapture: scrollWheel,\n            onTouchMoveCapture: scrollTouchMove,\n        });\n        document.addEventListener('wheel', shouldPrevent, nonPassive);\n        document.addEventListener('touchmove', shouldPrevent, nonPassive);\n        document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n        return function () {\n            lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n            document.removeEventListener('wheel', shouldPrevent, nonPassive);\n            document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n            document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n        };\n    }, []);\n    var removeScrollBar = props.removeScrollBar, inert = props.inert;\n    return (React.createElement(React.Fragment, null,\n        inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n        removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n    var shadowParent = null;\n    while (node !== null) {\n        if (node instanceof ShadowRoot) {\n            shadowParent = node.host;\n            node = node.host;\n        }\n        node = node.parentNode;\n    }\n    return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","import bezier from 'bezier-easing';\n\nvar Limits = function Limits(properties) {\n  this.startX = properties.startX;\n  this.startY = properties.startY;\n  this.endX = properties.endX;\n  this.endY = properties.endY; // Used to calculate the progress of the element\n\n  this.totalX = this.endX - this.startX;\n  this.totalY = this.endY - this.startY; // Used to scale translate effects\n\n  this.startMultiplierX = properties.startMultiplierX || 1;\n  this.endMultiplierX = properties.endMultiplierX || 1;\n  this.startMultiplierY = properties.startMultiplierY || 1;\n  this.endMultiplierY = properties.endMultiplierY || 1;\n};\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar ValidCSSEffects;\n\n(function (ValidCSSEffects) {\n  ValidCSSEffects[\"speed\"] = \"speed\";\n  ValidCSSEffects[\"translateX\"] = \"translateX\";\n  ValidCSSEffects[\"translateY\"] = \"translateY\";\n  ValidCSSEffects[\"rotate\"] = \"rotate\";\n  ValidCSSEffects[\"rotateX\"] = \"rotateX\";\n  ValidCSSEffects[\"rotateY\"] = \"rotateY\";\n  ValidCSSEffects[\"rotateZ\"] = \"rotateZ\";\n  ValidCSSEffects[\"scale\"] = \"scale\";\n  ValidCSSEffects[\"scaleX\"] = \"scaleX\";\n  ValidCSSEffects[\"scaleY\"] = \"scaleY\";\n  ValidCSSEffects[\"scaleZ\"] = \"scaleZ\";\n  ValidCSSEffects[\"opacity\"] = \"opacity\";\n})(ValidCSSEffects || (ValidCSSEffects = {}));\n\nvar Units;\n\n(function (Units) {\n  Units[\"px\"] = \"px\";\n  Units[\"%\"] = \"%\";\n  Units[\"vh\"] = \"vh\";\n  Units[\"vw\"] = \"vw\";\n})(Units || (Units = {}));\n\nvar RotationUnits;\n\n(function (RotationUnits) {\n  RotationUnits[\"deg\"] = \"deg\";\n  RotationUnits[\"turn\"] = \"turn\";\n  RotationUnits[\"rad\"] = \"rad\";\n})(RotationUnits || (RotationUnits = {}));\n\nvar ScaleUnits;\n\n(function (ScaleUnits) {\n  ScaleUnits[\"\"] = \"\";\n})(ScaleUnits || (ScaleUnits = {}));\n\nvar ScrollAxis;\n\n(function (ScrollAxis) {\n  ScrollAxis[\"vertical\"] = \"vertical\";\n  ScrollAxis[\"horizontal\"] = \"horizontal\";\n})(ScrollAxis || (ScrollAxis = {}));\n\nvar EasingPreset;\n\n(function (EasingPreset) {\n  EasingPreset[\"ease\"] = \"ease\";\n  EasingPreset[\"easeIn\"] = \"easeIn\";\n  EasingPreset[\"easeOut\"] = \"easeOut\";\n  EasingPreset[\"easeInOut\"] = \"easeInOut\";\n  EasingPreset[\"easeInQuad\"] = \"easeInQuad\";\n  EasingPreset[\"easeInCubic\"] = \"easeInCubic\";\n  EasingPreset[\"easeInQuart\"] = \"easeInQuart\";\n  EasingPreset[\"easeInQuint\"] = \"easeInQuint\";\n  EasingPreset[\"easeInSine\"] = \"easeInSine\";\n  EasingPreset[\"easeInExpo\"] = \"easeInExpo\";\n  EasingPreset[\"easeInCirc\"] = \"easeInCirc\";\n  EasingPreset[\"easeOutQuad\"] = \"easeOutQuad\";\n  EasingPreset[\"easeOutCubic\"] = \"easeOutCubic\";\n  EasingPreset[\"easeOutQuart\"] = \"easeOutQuart\";\n  EasingPreset[\"easeOutQuint\"] = \"easeOutQuint\";\n  EasingPreset[\"easeOutSine\"] = \"easeOutSine\";\n  EasingPreset[\"easeOutExpo\"] = \"easeOutExpo\";\n  EasingPreset[\"easeOutCirc\"] = \"easeOutCirc\";\n  EasingPreset[\"easeInOutQuad\"] = \"easeInOutQuad\";\n  EasingPreset[\"easeInOutCubic\"] = \"easeInOutCubic\";\n  EasingPreset[\"easeInOutQuart\"] = \"easeInOutQuart\";\n  EasingPreset[\"easeInOutQuint\"] = \"easeInOutQuint\";\n  EasingPreset[\"easeInOutSine\"] = \"easeInOutSine\";\n  EasingPreset[\"easeInOutExpo\"] = \"easeInOutExpo\";\n  EasingPreset[\"easeInOutCirc\"] = \"easeInOutCirc\";\n  EasingPreset[\"easeInBack\"] = \"easeInBack\";\n  EasingPreset[\"easeOutBack\"] = \"easeOutBack\";\n  EasingPreset[\"easeInOutBack\"] = \"easeInOutBack\";\n})(EasingPreset || (EasingPreset = {}));\n\n/**\r\n * Creates a unique id to distinguish parallax elements.\r\n */\nvar id = 0;\nfunction createId() {\n  ++id;\n  return id;\n}\n\nvar Rect = /*#__PURE__*/function () {\n  function Rect(options) {\n    var rect = options.el.getBoundingClientRect(); // rect is based on viewport -- must adjust for relative scroll container\n\n    if (options.view.scrollContainer) {\n      var scrollRect = options.view.scrollContainer.getBoundingClientRect();\n      rect = _extends({}, rect, {\n        top: rect.top - scrollRect.top,\n        right: rect.right - scrollRect.left,\n        bottom: rect.bottom - scrollRect.top,\n        left: rect.left - scrollRect.left\n      });\n    }\n\n    this.height = options.el.offsetHeight;\n    this.width = options.el.offsetWidth;\n    this.left = rect.left;\n    this.right = rect.right;\n    this.top = rect.top;\n    this.bottom = rect.bottom;\n\n    if (options.rootMargin) {\n      this._setRectWithRootMargin(options.rootMargin);\n    }\n  }\n  /**\r\n   * Apply root margin to all properties\r\n   */\n\n\n  var _proto = Rect.prototype;\n\n  _proto._setRectWithRootMargin = function _setRectWithRootMargin(rootMargin) {\n    var totalRootY = rootMargin.top + rootMargin.bottom;\n    var totalRootX = rootMargin.left + rootMargin.right;\n    this.top -= rootMargin.top;\n    this.right += rootMargin.right;\n    this.bottom += rootMargin.bottom;\n    this.left -= rootMargin.left;\n    this.height += totalRootY;\n    this.width += totalRootX;\n  };\n\n  return Rect;\n}();\n\nvar VALID_UNITS = [ScaleUnits[''], Units.px, Units['%'], Units['vh'], Units['vw'], RotationUnits.deg, RotationUnits.turn, RotationUnits.rad];\n/**\r\n * Determines the unit of a string and parses the value\r\n */\n\nfunction parseValueAndUnit(str, defaultUnit) {\n  if (defaultUnit === void 0) {\n    defaultUnit = Units['%'];\n  }\n\n  var out = {\n    value: 0,\n    unit: defaultUnit\n  };\n  if (typeof str === 'undefined') return out;\n  var isValid = typeof str === 'number' || typeof str === 'string';\n\n  if (!isValid) {\n    throw new Error('Invalid value provided. Must provide a value as a string or number');\n  }\n\n  str = String(str);\n  out.value = parseFloat(str); // @ts-ignore\n\n  out.unit = str.match(/[\\d.\\-+]*\\s*(.*)/)[1] || defaultUnit; // @ts-expect-error\n\n  var isValidUnit = VALID_UNITS.includes(out.unit);\n\n  if (!isValidUnit) {\n    throw new Error('Invalid unit provided.');\n  }\n\n  return out;\n}\n\nvar easingPresets = {\n  ease: [0.25, 0.1, 0.25, 1.0],\n  easeIn: [0.42, 0.0, 1.0, 1.0],\n  easeOut: [0.0, 0.0, 0.58, 1.0],\n  easeInOut: [0.42, 0.0, 0.58, 1.0],\n\n  /* Ease IN curves */\n  easeInQuad: [0.55, 0.085, 0.68, 0.53],\n  easeInCubic: [0.55, 0.055, 0.675, 0.19],\n  easeInQuart: [0.895, 0.03, 0.685, 0.22],\n  easeInQuint: [0.755, 0.05, 0.855, 0.06],\n  easeInSine: [0.47, 0.0, 0.745, 0.715],\n  easeInExpo: [0.95, 0.05, 0.795, 0.035],\n  easeInCirc: [0.6, 0.04, 0.98, 0.335],\n\n  /* Ease Out Curves */\n  easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n  easeOutCubic: [0.215, 0.61, 0.355, 1.0],\n  easeOutQuart: [0.165, 0.84, 0.44, 1.0],\n  easeOutQuint: [0.23, 1.0, 0.32, 1.0],\n  easeOutSine: [0.39, 0.575, 0.565, 1.0],\n  easeOutExpo: [0.19, 1.0, 0.22, 1.0],\n  easeOutCirc: [0.075, 0.82, 0.165, 1.0],\n\n  /* Ease IN Out Curves */\n  easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n  easeInOutCubic: [0.645, 0.045, 0.355, 1.0],\n  easeInOutQuart: [0.77, 0.0, 0.175, 1.0],\n  easeInOutQuint: [0.86, 0.0, 0.07, 1.0],\n  easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n  easeInOutExpo: [1.0, 0.0, 0.0, 1.0],\n  easeInOutCirc: [0.785, 0.135, 0.15, 0.86],\n\n  /* Ease Bounce Curves */\n  easeInBack: [0.6, -0.28, 0.735, 0.045],\n  easeOutBack: [0.175, 0.885, 0.32, 1.275],\n  easeInOutBack: [0.68, -0.55, 0.265, 1.55]\n};\n\nfunction createEasingFunction(easing) {\n  if (Array.isArray(easing)) {\n    return bezier(easing[0], easing[1], easing[2], easing[3]);\n  }\n\n  if (typeof easing === 'string' && typeof easingPresets[easing] !== 'undefined') {\n    var params = easingPresets[easing];\n    return bezier(params[0], params[1], params[2], params[3]);\n  }\n\n  return;\n}\n\nvar PARALLAX_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects);\nvar MAP_EFFECT_TO_DEFAULT_UNIT = {\n  speed: 'px',\n  translateX: '%',\n  translateY: '%',\n  rotate: 'deg',\n  rotateX: 'deg',\n  rotateY: 'deg',\n  rotateZ: 'deg',\n  scale: '',\n  scaleX: '',\n  scaleY: '',\n  scaleZ: '',\n  opacity: ''\n};\n/**\r\n * Takes a parallax element effects and parses the properties to get the start and end values and units.\r\n */\n\nfunction parseElementTransitionEffects(props, scrollAxis) {\n  var parsedEffects = {};\n  PARALLAX_EFFECTS.forEach(function (key) {\n    var defaultValue = MAP_EFFECT_TO_DEFAULT_UNIT[key]; // If the provided type is a number, this must be the speed prop\n    // in which case we need to construct the proper translate config\n\n    if (typeof (props == null ? void 0 : props[key]) === 'number') {\n      var value = props == null ? void 0 : props[key];\n      var startSpeed = (value || 0) * 10 + \"px\";\n      var endSpeed = (value || 0) * -10 + \"px\";\n      var startParsed = parseValueAndUnit(startSpeed);\n      var endParsed = parseValueAndUnit(endSpeed);\n      var speedConfig = {\n        start: startParsed.value,\n        end: endParsed.value,\n        unit: startParsed.unit\n      }; // Manually set translate y value\n\n      if (scrollAxis === ScrollAxis.vertical) {\n        parsedEffects.translateY = speedConfig;\n      } // Manually set translate y value\n\n\n      if (scrollAxis === ScrollAxis.horizontal) {\n        parsedEffects.translateX = speedConfig;\n      }\n    } // The rest are standard effect being parsed\n\n\n    if (Array.isArray(props == null ? void 0 : props[key])) {\n      var _value = props == null ? void 0 : props[key];\n\n      if (typeof _value[0] !== 'undefined' && typeof _value[1] !== 'undefined') {\n        var _startParsed = parseValueAndUnit(_value == null ? void 0 : _value[0], defaultValue);\n\n        var _endParsed = parseValueAndUnit(_value == null ? void 0 : _value[1], defaultValue);\n\n        var easing = createEasingFunction(_value == null ? void 0 : _value[2]);\n        parsedEffects[key] = {\n          start: _startParsed.value,\n          end: _endParsed.value,\n          unit: _startParsed.unit,\n          easing: easing\n        };\n\n        if (_startParsed.unit !== _endParsed.unit) {\n          throw new Error('Must provide matching units for the min and max offset values of each axis.');\n        }\n      }\n    }\n  });\n  return parsedEffects;\n}\n\n/**\r\n * Returns the percent (0 - 100) moved based on position in the viewport\r\n */\nfunction getProgressAmount(\n/*\r\n * The start value from cache\r\n */\nstart,\n/*\r\n * total dist the element has to move to be 100% complete (view width/height + element width/height)\r\n */\ntotalDist,\n/*\r\n * Current scroll value\r\n */\ncurrentScroll,\n/*\r\n * an optional easing function to apply\r\n */\neasing) {\n  // adjust cached value\n  var startAdjustedScroll = currentScroll - start; // Amount the element has moved based on current and total distance to move\n\n  var amount = startAdjustedScroll / totalDist; // Apply bezier easing if provided\n\n  if (easing) {\n    amount = easing(amount);\n  }\n\n  return amount;\n}\n\n/**\r\n * Takes two values (start, end) and returns whether the current scroll is within range\r\n * @param {number} start - start of scroll (x/y)\r\n * @param {number} end - end of scroll (x/y)\r\n * @param {number} scroll - current scroll (x/y)\r\n * @return {boolean} isInView\r\n */\nfunction isElementInView(start, end, scroll) {\n  var isInView = scroll >= start && scroll <= end;\n  return isInView;\n}\n\n// Scale between AKA normalize\nfunction scaleBetween(value, newMin, newMax, oldMin, oldMax) {\n  return (newMax - newMin) * (value - oldMin) / (oldMax - oldMin) + newMin;\n}\n\n/**\r\n * Scales a start and end value of an effect based on percent moved and easing function\r\n */\n\nfunction scaleEffectByProgress(effect, progress) {\n  var value = scaleBetween(typeof effect.easing === 'function' ? effect.easing(progress) : progress, (effect == null ? void 0 : effect.start) || 0, (effect == null ? void 0 : effect.end) || 0, 0, 1);\n  return {\n    value: value,\n    unit: effect == null ? void 0 : effect.unit\n  };\n}\n\nvar TRANSFORM_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects).filter(function (v) {\n  return v !== 'opacity';\n});\nfunction setWillChangeStyles(el, effects) {\n  var keys = Object.keys(effects);\n  var hasOpacity = keys.includes('opacity');\n  var willChange = \"transform\" + (hasOpacity ? ',opacity' : '');\n  el.style.willChange = willChange;\n}\nfunction setElementStyles(effects, progress, el) {\n  if (!el) return;\n  var transform = getTransformStyles(effects, progress);\n  var opacity = getOpacityStyles(effects, progress);\n  el.style.transform = transform;\n  el.style.opacity = opacity;\n}\nfunction getOpacityStyles(effects, progress) {\n  var scaledOpacity = effects['opacity'] && scaleEffectByProgress(effects['opacity'], progress);\n\n  if (typeof scaledOpacity === 'undefined' || typeof scaledOpacity.value === 'undefined' || typeof scaledOpacity.unit === 'undefined') {\n    return '';\n  }\n\n  var styleStr = \"\" + scaledOpacity.value;\n  return styleStr;\n}\nfunction getTransformStyles(effects, progress) {\n  var transform = TRANSFORM_EFFECTS.reduce(function (acc, key) {\n    var scaledEffect = // @ts-expect-error\n    effects[key] && scaleEffectByProgress(effects[key], progress);\n\n    if (typeof scaledEffect === 'undefined' || typeof scaledEffect.value === 'undefined' || typeof scaledEffect.unit === 'undefined') {\n      return acc;\n    }\n\n    var styleStr = key + \"(\" + scaledEffect.value + scaledEffect.unit + \")\";\n    return acc + styleStr;\n  }, '');\n  return transform;\n}\n/**\r\n * Takes a parallax element and removes parallax offset styles.\r\n * @param {object} element\r\n */\n\nfunction resetStyles(element) {\n  var el = element.el;\n  if (!el) return;\n  el.style.transform = '';\n  el.style.opacity = '';\n}\n\nfunction createLimitsForRelativeElements(rect, view, scroll, shouldAlwaysCompleteAnimation) {\n  var startY = rect.top - view.height;\n  var startX = rect.left - view.width;\n  var endY = rect.bottom;\n  var endX = rect.right; // add scroll\n\n  startX += scroll.x;\n  endX += scroll.x;\n  startY += scroll.y;\n  endY += scroll.y;\n\n  if (shouldAlwaysCompleteAnimation) {\n    if (scroll.y + rect.top < view.height) {\n      startY = 0;\n    }\n\n    if (scroll.x + rect.left < view.width) {\n      startX = 0;\n    }\n\n    if (endY > view.scrollHeight - view.height) {\n      endY = view.scrollHeight - view.height;\n    }\n\n    if (endX > view.scrollWidth - view.width) {\n      endX = view.scrollWidth - view.width;\n    }\n  }\n\n  var limits = new Limits({\n    startX: startX,\n    startY: startY,\n    endX: endX,\n    endY: endY\n  });\n  return limits;\n}\n\nfunction getTranslateScalar(startTranslatePx, endTranslatePx, totalDist) {\n  var slow = endTranslatePx > startTranslatePx; // calculating necessary scale to increase translations\n\n  var totalAbsOff = (Math.abs(startTranslatePx) + Math.abs(endTranslatePx)) * (slow ? -1 : 1);\n  var totalDistTrue = totalDist + totalAbsOff; // Determine multiple to scale by, only values greater than 1\n\n  var scale = Math.max(totalDist / totalDistTrue, 1);\n  return scale;\n}\n\n/**\r\n * Return the start and end pixel values for an elements translations\r\n */\nfunction getStartEndValueInPx(translate, elementSize) {\n  var start = translate.start,\n      end = translate.end,\n      unit = translate.unit;\n\n  if (unit === '%') {\n    var scale = elementSize / 100;\n    start = start * scale;\n    end = end * scale;\n  }\n\n  if (unit === 'vw') {\n    var startScale = start / 100;\n    var endScale = end / 100;\n    start = window.innerWidth * startScale;\n    end = window.innerWidth * endScale;\n  }\n\n  if (unit === 'vh') {\n    var _startScale = start / 100;\n\n    var _endScale = end / 100;\n\n    start = window.innerHeight * _startScale;\n    end = window.innerHeight * _endScale;\n  }\n\n  return {\n    start: start,\n    end: end\n  };\n}\n\nvar DEFAULT_VALUE = {\n  start: 0,\n  end: 0,\n  unit: ''\n};\nfunction createLimitsWithTranslationsForRelativeElements(rect, view, effects, scroll, scrollAxis, shouldAlwaysCompleteAnimation) {\n  // get start and end accounting for percent effects\n  var translateX = effects.translateX || DEFAULT_VALUE;\n  var translateY = effects.translateY || DEFAULT_VALUE;\n\n  var _getStartEndValueInPx = getStartEndValueInPx(translateX, rect.width),\n      startTranslateXPx = _getStartEndValueInPx.start,\n      endTranslateXPx = _getStartEndValueInPx.end;\n\n  var _getStartEndValueInPx2 = getStartEndValueInPx(translateY, rect.height),\n      startTranslateYPx = _getStartEndValueInPx2.start,\n      endTranslateYPx = _getStartEndValueInPx2.end; // default starting values\n\n\n  var startY = rect.top - view.height;\n  var startX = rect.left - view.width;\n  var endY = rect.bottom;\n  var endX = rect.right;\n  var startMultiplierY = 1;\n  var endMultiplierY = 1;\n\n  if (scrollAxis === ScrollAxis.vertical) {\n    startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, view.height + rect.height);\n    endMultiplierY = startMultiplierY;\n  }\n\n  var startMultiplierX = 1;\n  var endMultiplierX = 1;\n\n  if (scrollAxis === ScrollAxis.horizontal) {\n    startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, view.width + rect.width);\n    endMultiplierX = startMultiplierX;\n  } // Apply the scale to initial values\n\n\n  if (startTranslateYPx < 0) {\n    startY = startY + startTranslateYPx * startMultiplierY;\n  }\n\n  if (endTranslateYPx > 0) {\n    endY = endY + endTranslateYPx * endMultiplierY;\n  }\n\n  if (startTranslateXPx < 0) {\n    startX = startX + startTranslateXPx * startMultiplierX;\n  }\n\n  if (endTranslateXPx > 0) {\n    endX = endX + endTranslateXPx * endMultiplierX;\n  } // add scroll\n\n\n  startX += scroll.x;\n  endX += scroll.x;\n  startY += scroll.y;\n  endY += scroll.y; // NOTE: please refactor and isolate this :(\n\n  if (shouldAlwaysCompleteAnimation) {\n    var topBeginsInView = scroll.y + rect.top < view.height;\n    var leftBeginsInView = scroll.x + rect.left < view.width;\n    var bottomEndsInView = scroll.y + rect.bottom > view.scrollHeight - view.height;\n    var rightEndsInView = scroll.x + rect.right > view.scrollWidth - view.height;\n\n    if (topBeginsInView && bottomEndsInView) {\n      startMultiplierY = 1;\n      endMultiplierY = 1;\n      startY = 0;\n      endY = view.scrollHeight - view.height;\n    }\n\n    if (leftBeginsInView && rightEndsInView) {\n      startMultiplierX = 1;\n      endMultiplierX = 1;\n      startX = 0;\n      endX = view.scrollWidth - view.width;\n    }\n\n    if (!topBeginsInView && bottomEndsInView) {\n      startY = rect.top - view.height + scroll.y;\n      endY = view.scrollHeight - view.height;\n      var totalDist = endY - startY;\n      startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, totalDist);\n      endMultiplierY = 1;\n\n      if (startTranslateYPx < 0) {\n        startY = startY + startTranslateYPx * startMultiplierY;\n      }\n    }\n\n    if (!leftBeginsInView && rightEndsInView) {\n      startX = rect.left - view.width + scroll.x;\n      endX = view.scrollWidth - view.width;\n\n      var _totalDist = endX - startX;\n\n      startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist);\n      endMultiplierX = 1;\n\n      if (startTranslateXPx < 0) {\n        startX = startX + startTranslateXPx * startMultiplierX;\n      }\n    }\n\n    if (topBeginsInView && !bottomEndsInView) {\n      startY = 0;\n      endY = rect.bottom + scroll.y;\n\n      var _totalDist2 = endY - startY;\n\n      startMultiplierY = 1;\n      endMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, _totalDist2);\n\n      if (endTranslateYPx > 0) {\n        endY = endY + endTranslateYPx * endMultiplierY;\n      }\n    }\n\n    if (leftBeginsInView && !rightEndsInView) {\n      startX = 0;\n      endX = rect.right + scroll.x;\n\n      var _totalDist3 = endX - startX;\n\n      startMultiplierX = 1;\n      endMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist3);\n\n      if (endTranslateXPx > 0) {\n        endX = endX + endTranslateXPx * endMultiplierX;\n      }\n    }\n  }\n\n  var limits = new Limits({\n    startX: startX,\n    startY: startY,\n    endX: endX,\n    endY: endY,\n    startMultiplierX: startMultiplierX,\n    endMultiplierX: endMultiplierX,\n    startMultiplierY: startMultiplierY,\n    endMultiplierY: endMultiplierY\n  });\n  return limits;\n}\n\nfunction scaleTranslateEffectsForSlowerScroll(effects, limits) {\n  var effectsCopy = _extends({}, effects);\n\n  if (effectsCopy.translateX) {\n    effectsCopy.translateX = _extends({}, effects.translateX, {\n      start: effectsCopy.translateX.start * limits.startMultiplierX,\n      end: effectsCopy.translateX.end * limits.endMultiplierX\n    });\n  }\n\n  if (effectsCopy.translateY) {\n    effectsCopy.translateY = _extends({}, effects.translateY, {\n      start: effectsCopy.translateY.start * limits.startMultiplierY,\n      end: effectsCopy.translateY.end * limits.endMultiplierY\n    });\n  }\n\n  return effectsCopy;\n}\n\nfunction getShouldScaleTranslateEffects(props, effects, scrollAxis) {\n  if (props.rootMargin || props.targetElement || props.shouldDisableScalingTranslations) {\n    return false;\n  }\n\n  if (!!effects.translateX && scrollAxis === ScrollAxis.horizontal || !!effects.translateY && scrollAxis === ScrollAxis.vertical) {\n    return true;\n  }\n\n  return false;\n}\n\nvar clamp = function clamp(num, min, max) {\n  return Math.min(Math.max(num, min), max);\n};\n\nvar Element = /*#__PURE__*/function () {\n  function Element(options) {\n    this.el = options.el;\n    this.props = options.props;\n    this.scrollAxis = options.scrollAxis;\n    this.disabledParallaxController = options.disabledParallaxController || false;\n    this.id = createId();\n    this.effects = parseElementTransitionEffects(this.props, this.scrollAxis);\n    this.isInView = null;\n    this.progress = 0;\n\n    this._setElementEasing(options.props.easing);\n\n    setWillChangeStyles(options.el, this.effects);\n  }\n\n  var _proto = Element.prototype;\n\n  _proto.updateProps = function updateProps(nextProps) {\n    this.props = _extends({}, this.props, nextProps);\n    this.effects = parseElementTransitionEffects(nextProps, this.scrollAxis);\n\n    this._setElementEasing(nextProps.easing);\n\n    return this;\n  };\n\n  _proto.setCachedAttributes = function setCachedAttributes(view, scroll) {\n    // NOTE: Must reset styles before getting the rect, as it might impact the natural position\n    resetStyles(this);\n    this.rect = new Rect({\n      el: this.props.targetElement || this.el,\n      rootMargin: this.props.rootMargin,\n      view: view\n    });\n    var shouldScaleTranslateEffects = getShouldScaleTranslateEffects(this.props, this.effects, this.scrollAxis);\n\n    if (typeof this.props.startScroll === 'number' && typeof this.props.endScroll === 'number') {\n      this.limits = new Limits({\n        startX: this.props.startScroll,\n        startY: this.props.startScroll,\n        endX: this.props.endScroll,\n        endY: this.props.endScroll\n      }); // Undo the reset -- place it back at current position with styles\n\n      this._setElementStyles();\n\n      return this;\n    }\n\n    if (shouldScaleTranslateEffects) {\n      this.limits = createLimitsWithTranslationsForRelativeElements(this.rect, view, this.effects, scroll, this.scrollAxis, this.props.shouldAlwaysCompleteAnimation);\n      this.scaledEffects = scaleTranslateEffectsForSlowerScroll(this.effects, this.limits);\n    } else {\n      this.limits = createLimitsForRelativeElements(this.rect, view, scroll, this.props.shouldAlwaysCompleteAnimation);\n    } // Undo the reset -- place it back at current position with styles\n\n\n    this._setElementStyles();\n\n    return this;\n  };\n\n  _proto._updateElementIsInView = function _updateElementIsInView(nextIsInView) {\n    // NOTE: Check if this is the first change to make sure onExit isn't called\n    var isFirstChange = this.isInView === null;\n\n    if (nextIsInView !== this.isInView) {\n      if (nextIsInView) {\n        this.props.onEnter && this.props.onEnter(this);\n      } else if (!isFirstChange) {\n        this._setFinalProgress();\n\n        this._setElementStyles();\n\n        this.props.onExit && this.props.onExit(this);\n      }\n    }\n\n    this.isInView = nextIsInView;\n  };\n\n  _proto._setFinalProgress = function _setFinalProgress() {\n    var finalProgress = clamp(Math.round(this.progress), 0, 1);\n\n    this._updateElementProgress(finalProgress);\n  };\n\n  _proto._setElementStyles = function _setElementStyles() {\n    if (this.props.disabled || this.disabledParallaxController) return;\n    var effects = this.scaledEffects || this.effects;\n    setElementStyles(effects, this.progress, this.el);\n  };\n\n  _proto._updateElementProgress = function _updateElementProgress(nextProgress) {\n    this.progress = nextProgress;\n    this.props.onProgressChange && this.props.onProgressChange(this.progress);\n    this.props.onChange && this.props.onChange(this);\n  };\n\n  _proto._setElementEasing = function _setElementEasing(easing) {\n    this.easing = createEasingFunction(easing);\n  };\n\n  _proto.updateElementOptions = function updateElementOptions(options) {\n    this.scrollAxis = options.scrollAxis;\n    this.disabledParallaxController = options.disabledParallaxController || false;\n  };\n\n  _proto.updatePosition = function updatePosition(scroll) {\n    if (!this.limits) return this;\n    var isVertical = this.scrollAxis === ScrollAxis.vertical;\n    var isFirstChange = this.isInView === null; // based on scroll axis\n\n    var start = isVertical ? this.limits.startY : this.limits.startX;\n    var end = isVertical ? this.limits.endY : this.limits.endX;\n    var total = isVertical ? this.limits.totalY : this.limits.totalX;\n    var s = isVertical ? scroll.y : scroll.x; // check if in view\n\n    var nextIsInView = isElementInView(start, end, s);\n\n    this._updateElementIsInView(nextIsInView); // set the progress if in view or this is the first change\n\n\n    if (nextIsInView) {\n      var nextProgress = getProgressAmount(start, total, s, this.easing);\n\n      this._updateElementProgress(nextProgress);\n\n      this._setElementStyles();\n    } else if (isFirstChange) {\n      // NOTE: this._updateElementProgress -- dont use this because it will trigger onChange\n      this.progress = clamp(Math.round(getProgressAmount(start, total, s, this.easing)), 0, 1);\n\n      this._setElementStyles();\n    }\n\n    return this;\n  };\n\n  return Element;\n}();\n\nvar View = /*#__PURE__*/function () {\n  function View(config) {\n    this.scrollContainer = config.scrollContainer;\n    this.width = config.width;\n    this.height = config.height;\n    this.scrollHeight = config.scrollHeight;\n    this.scrollWidth = config.scrollWidth;\n  }\n\n  var _proto = View.prototype;\n\n  _proto.hasChanged = function hasChanged(params) {\n    if (params.width !== this.width || params.height !== this.height || params.scrollWidth !== this.scrollWidth || params.scrollHeight !== this.scrollHeight) {\n      return true;\n    }\n\n    return false;\n  };\n\n  _proto.setSize = function setSize(params) {\n    this.width = params.width;\n    this.height = params.height;\n    this.scrollHeight = params.scrollHeight;\n    this.scrollWidth = params.scrollWidth;\n    return this;\n  };\n\n  return View;\n}();\n\nvar Scroll = /*#__PURE__*/function () {\n  function Scroll(x, y) {\n    this.x = x;\n    this.y = y;\n    this.dx = 0;\n    this.dy = 0;\n  }\n\n  var _proto = Scroll.prototype;\n\n  _proto.setScroll = function setScroll(x, y) {\n    this.dx = x - this.x;\n    this.dy = y - this.y;\n    this.x = x;\n    this.y = y;\n    return this;\n  };\n\n  return Scroll;\n}();\n\nfunction testForPassiveScroll() {\n  var supportsPassiveOption = false;\n\n  try {\n    var opts = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        supportsPassiveOption = true;\n        return true;\n      }\n    }); // @ts-expect-error\n\n    window.addEventListener('test', null, opts); // @ts-expect-error\n\n    window.removeEventListener('test', null, opts);\n  } catch (e) {}\n\n  return supportsPassiveOption;\n}\n\n/**\r\n * -------------------------------------------------------\r\n * Parallax Controller\r\n * -------------------------------------------------------\r\n *\r\n * The global controller for setting up and managing a scroll view of elements.\r\n *\r\n */\n\nvar ParallaxController = /*#__PURE__*/function () {\n  function ParallaxController(_ref) {\n    var _ref$scrollAxis = _ref.scrollAxis,\n        scrollAxis = _ref$scrollAxis === void 0 ? ScrollAxis.vertical : _ref$scrollAxis,\n        scrollContainer = _ref.scrollContainer,\n        _ref$disabled = _ref.disabled,\n        disabled = _ref$disabled === void 0 ? false : _ref$disabled;\n    this.disabled = disabled;\n    this.scrollAxis = scrollAxis; // All parallax elements to be updated\n\n    this.elements = [];\n    this._hasScrollContainer = !!scrollContainer;\n    this.viewEl = scrollContainer != null ? scrollContainer : window; // Scroll and View\n\n    var _this$_getScrollPosit = this._getScrollPosition(),\n        x = _this$_getScrollPosit[0],\n        y = _this$_getScrollPosit[1];\n\n    this.scroll = new Scroll(x, y);\n    this.view = new View({\n      width: 0,\n      height: 0,\n      scrollWidth: 0,\n      scrollHeight: 0,\n      scrollContainer: this._hasScrollContainer ? scrollContainer : undefined\n    }); // Ticking\n\n    this._ticking = false; // Passive support\n\n    this._supportsPassive = testForPassiveScroll(); // Bind methods to class\n\n    this._bindAllMethods(); // If this is initialized disabled, don't do anything below.\n\n\n    if (this.disabled) return;\n\n    this._addListeners(this.viewEl);\n\n    this._addResizeObserver();\n\n    this._setViewSize();\n  }\n  /**\r\n   * Static method to instantiate the ParallaxController.\r\n   * @returns {Class} ParallaxController\r\n   */\n\n\n  ParallaxController.init = function init(options) {\n    var hasWindow = typeof window !== 'undefined';\n\n    if (!hasWindow) {\n      throw new Error('Looks like ParallaxController.init() was called on the server. This method must be called on the client.');\n    }\n\n    return new ParallaxController(options);\n  };\n\n  var _proto = ParallaxController.prototype;\n\n  _proto._bindAllMethods = function _bindAllMethods() {\n    var _this = this;\n\n    ['_addListeners', '_removeListeners', '_getScrollPosition', '_handleScroll', '_handleUpdateCache', '_updateAllElements', '_updateElementPosition', '_setViewSize', '_addResizeObserver', '_checkIfViewHasChanged', '_getViewParams', 'getElements', 'createElement', 'removeElementById', 'resetElementStyles', 'updateElementPropsById', 'update', 'updateScrollContainer', 'destroy'].forEach(function (method) {\n      // @ts-expect-error\n      _this[method] = _this[method].bind(_this);\n    });\n  };\n\n  _proto._addListeners = function _addListeners(el) {\n    el.addEventListener('scroll', this._handleScroll, this._supportsPassive ? {\n      passive: true\n    } : false);\n    window.addEventListener('resize', this._handleUpdateCache, false);\n    window.addEventListener('blur', this._handleUpdateCache, false);\n    window.addEventListener('focus', this._handleUpdateCache, false);\n    window.addEventListener('load', this._handleUpdateCache, false);\n  };\n\n  _proto._removeListeners = function _removeListeners(el) {\n    var _this$_resizeObserver;\n\n    el.removeEventListener('scroll', this._handleScroll, false);\n    window.removeEventListener('resize', this._handleUpdateCache, false);\n    window.removeEventListener('blur', this._handleUpdateCache, false);\n    window.removeEventListener('focus', this._handleUpdateCache, false);\n    window.removeEventListener('load', this._handleUpdateCache, false);\n    (_this$_resizeObserver = this._resizeObserver) == null ? void 0 : _this$_resizeObserver.disconnect();\n  };\n\n  _proto._addResizeObserver = function _addResizeObserver() {\n    var _this2 = this;\n\n    try {\n      var observedEl = this._hasScrollContainer ? this.viewEl : document.documentElement;\n      this._resizeObserver = new ResizeObserver(function () {\n        return _this2.update();\n      });\n\n      this._resizeObserver.observe(observedEl);\n    } catch (e) {\n      console.warn('Failed to create the resize observer in the ParallaxContoller');\n    }\n  };\n\n  _proto._getScrollPosition = function _getScrollPosition() {\n    // Save current scroll\n    // Supports IE 9 and up.\n    var nx = this._hasScrollContainer ? // @ts-expect-error\n    this.viewEl.scrollLeft : window.pageXOffset;\n    var ny = this._hasScrollContainer ? // @ts-expect-error\n    this.viewEl.scrollTop : window.pageYOffset;\n    return [nx, ny];\n  }\n  /**\r\n   * Window scroll handler sets scroll position\r\n   * and then calls '_updateAllElements()'.\r\n   */\n  ;\n\n  _proto._handleScroll = function _handleScroll() {\n    var _this$elements;\n\n    var _this$_getScrollPosit2 = this._getScrollPosition(),\n        nx = _this$_getScrollPosit2[0],\n        ny = _this$_getScrollPosit2[1];\n\n    this.scroll.setScroll(nx, ny); // Only called if the last animation request has been\n    // completed and there are parallax elements to update\n\n    if (!this._ticking && ((_this$elements = this.elements) == null ? void 0 : _this$elements.length) > 0) {\n      this._ticking = true; // @ts-ignore\n\n      window.requestAnimationFrame(this._updateAllElements);\n    }\n  }\n  /**\r\n   * Window resize handler. Sets the new window inner height\r\n   * then updates parallax element attributes and positions.\r\n   */\n  ;\n\n  _proto._handleUpdateCache = function _handleUpdateCache() {\n    this._setViewSize();\n\n    this._updateAllElements({\n      updateCache: true\n    });\n  }\n  /**\r\n   * Update element positions.\r\n   * Determines if the element is in view based on the cached\r\n   * attributes, if so set the elements parallax styles.\r\n   */\n  ;\n\n  _proto._updateAllElements = function _updateAllElements(_temp) {\n    var _this3 = this;\n\n    var _ref2 = _temp === void 0 ? {} : _temp,\n        updateCache = _ref2.updateCache;\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        if (updateCache) {\n          element.setCachedAttributes(_this3.view, _this3.scroll);\n        }\n\n        _this3._updateElementPosition(element);\n      });\n    } // reset ticking so more animations can be called\n\n\n    this._ticking = false;\n  }\n  /**\r\n   * Update element positions.\r\n   * Determines if the element is in view based on the cached\r\n   * attributes, if so set the elements parallax styles.\r\n   */\n  ;\n\n  _proto._updateElementPosition = function _updateElementPosition(element) {\n    if (element.props.disabled || this.disabled) return;\n    element.updatePosition(this.scroll);\n  }\n  /**\r\n   * Gets the params to set in the View from the scroll container or the window\r\n   */\n  ;\n\n  _proto._getViewParams = function _getViewParams() {\n    if (this._hasScrollContainer) {\n      // @ts-expect-error\n      var _width = this.viewEl.offsetWidth; // @ts-expect-error\n\n      var _height = this.viewEl.offsetHeight; // @ts-expect-error\n\n      var _scrollHeight = this.viewEl.scrollHeight; // @ts-expect-error\n\n      var _scrollWidth = this.viewEl.scrollWidth;\n      return this.view.setSize({\n        width: _width,\n        height: _height,\n        scrollHeight: _scrollHeight,\n        scrollWidth: _scrollWidth\n      });\n    }\n\n    var html = document.documentElement;\n    var width = window.innerWidth || html.clientWidth;\n    var height = window.innerHeight || html.clientHeight;\n    var scrollHeight = html.scrollHeight;\n    var scrollWidth = html.scrollWidth;\n    return {\n      width: width,\n      height: height,\n      scrollHeight: scrollHeight,\n      scrollWidth: scrollWidth\n    };\n  }\n  /**\r\n   * Cache the view attributes\r\n   */\n  ;\n\n  _proto._setViewSize = function _setViewSize() {\n    return this.view.setSize(this._getViewParams());\n  }\n  /**\r\n   * Checks if any of the cached attributes of the view have changed.\r\n   * @returns boolean\r\n   */\n  ;\n\n  _proto._checkIfViewHasChanged = function _checkIfViewHasChanged() {\n    return this.view.hasChanged(this._getViewParams());\n  }\n  /**\r\n   * -------------------------------------------------------\r\n   * Public methods\r\n   * -------------------------------------------------------\r\n   */\n\n  /**\r\n   * Returns all the parallax elements in the controller\r\n   */\n  ;\n\n  _proto.getElements = function getElements() {\n    return this.elements;\n  }\n  /**\r\n   * Creates and returns new parallax element with provided options to be managed by the controller.\r\n   */\n  ;\n\n  _proto.createElement = function createElement(options) {\n    var newElement = new Element(_extends({}, options, {\n      scrollAxis: this.scrollAxis,\n      disabledParallaxController: this.disabled\n    }));\n    newElement.setCachedAttributes(this.view, this.scroll);\n    this.elements = this.elements ? [].concat(this.elements, [newElement]) : [newElement];\n\n    this._updateElementPosition(newElement); // NOTE: This checks if the view has changed then update the controller and all elements if it has\n    // This shouldn't always be necessary with a resize observer watching the view element\n    // but there seems to be cases where the resize observer does not catch and update.\n\n\n    if (this._checkIfViewHasChanged()) {\n      this.update();\n    }\n\n    return newElement;\n  }\n  /**\r\n   * Remove an element by id\r\n   */\n  ;\n\n  _proto.removeElementById = function removeElementById(id) {\n    if (!this.elements) return;\n    this.elements = this.elements.filter(function (el) {\n      return el.id !== id;\n    });\n  }\n  /**\r\n   * Updates an existing parallax element object with new options.\r\n   */\n  ;\n\n  _proto.updateElementPropsById = function updateElementPropsById(id, props) {\n    if (this.elements) {\n      this.elements = this.elements.map(function (el) {\n        if (el.id === id) {\n          return el.updateProps(props);\n        }\n\n        return el;\n      });\n    }\n\n    this.update();\n  }\n  /**\r\n   * Remove a target elements parallax styles\r\n   */\n  ;\n\n  _proto.resetElementStyles = function resetElementStyles(element) {\n    resetStyles(element);\n  }\n  /**\r\n   * Updates all cached attributes on parallax elements.\r\n   */\n  ;\n\n  _proto.update = function update() {\n    // Save the latest scroll position because window.scroll\n    // may be called and the handle scroll event may not be called.\n    var _this$_getScrollPosit3 = this._getScrollPosition(),\n        nx = _this$_getScrollPosit3[0],\n        ny = _this$_getScrollPosit3[1];\n\n    this.scroll.setScroll(nx, ny);\n\n    this._setViewSize();\n\n    this._updateAllElements({\n      updateCache: true\n    });\n  }\n  /**\r\n   * Updates the scroll container of the parallax controller\r\n   */\n  ;\n\n  _proto.updateScrollContainer = function updateScrollContainer(el) {\n    // remove existing listeners with current el first\n    this._removeListeners(this.viewEl);\n\n    this.viewEl = el;\n    this._hasScrollContainer = !!el;\n    this.view = new View({\n      width: 0,\n      height: 0,\n      scrollWidth: 0,\n      scrollHeight: 0,\n      scrollContainer: el\n    });\n\n    this._setViewSize();\n\n    this._addListeners(this.viewEl);\n\n    this._updateAllElements({\n      updateCache: true\n    });\n  };\n\n  _proto.disableParallaxController = function disableParallaxController() {\n    this.disabled = true; // remove listeners\n\n    this._removeListeners(this.viewEl); // reset all styles\n\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        return resetStyles(element);\n      });\n    }\n  };\n\n  _proto.enableParallaxController = function enableParallaxController() {\n    var _this4 = this;\n\n    this.disabled = false;\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        return element.updateElementOptions({\n          disabledParallaxController: false,\n          scrollAxis: _this4.scrollAxis\n        });\n      });\n    } // add back listeners\n\n\n    this._addListeners(this.viewEl);\n\n    this._addResizeObserver();\n\n    this._setViewSize();\n  }\n  /**\r\n   * Disable all parallax elements\r\n   */\n  ;\n\n  _proto.disableAllElements = function disableAllElements() {\n    console.warn('deprecated: use disableParallaxController() instead');\n\n    if (this.elements) {\n      this.elements = this.elements.map(function (el) {\n        return el.updateProps({\n          disabled: true\n        });\n      });\n    }\n\n    this.update();\n  }\n  /**\r\n   * Enable all parallax elements\r\n   */\n  ;\n\n  _proto.enableAllElements = function enableAllElements() {\n    console.warn('deprecated: use enableParallaxController() instead');\n\n    if (this.elements) {\n      this.elements = this.elements.map(function (el) {\n        return el.updateProps({\n          disabled: false\n        });\n      });\n    }\n\n    this.update();\n  }\n  /**\r\n   * Removes all listeners and resets all styles on managed elements.\r\n   */\n  ;\n\n  _proto.destroy = function destroy() {\n    this._removeListeners(this.viewEl);\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        return resetStyles(element);\n      });\n    } // @ts-expect-error\n\n\n    this.elements = undefined;\n  };\n\n  return ParallaxController;\n}();\n\nexport { EasingPreset, Element, Limits, ParallaxController, Rect, RotationUnits, ScaleUnits, Scroll, ScrollAxis, Units, ValidCSSEffects, View, createId, getProgressAmount, isElementInView, parseElementTransitionEffects, parseValueAndUnit, resetStyles, scaleBetween, scaleEffectByProgress, setElementStyles, testForPassiveScroll };\n//# sourceMappingURL=parallax-controller.esm.js.map\n","import { ParallaxController, parseValueAndUnit, ScrollAxis } from 'parallax-controller';\nexport { EasingPreset } from 'parallax-controller';\nimport React, { useEffect, useContext, useRef, useState, Component } from 'react';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n\n  _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction removeUndefinedObjectKeys(obj) {\n  Object.keys(obj).forEach(function (key) {\n    return obj[key] === undefined && delete obj[key];\n  });\n  return obj;\n}\n\nvar _excluded = [\"disabled\", \"easing\", \"endScroll\", \"onChange\", \"onEnter\", \"onExit\", \"onProgressChange\", \"opacity\", \"rootMargin\", \"rotate\", \"rotateX\", \"rotateY\", \"rotateZ\", \"scale\", \"scaleX\", \"scaleY\", \"scaleZ\", \"shouldAlwaysCompleteAnimation\", \"shouldDisableScalingTranslations\", \"speed\", \"startScroll\", \"targetElement\", \"translateX\", \"translateY\"];\nfunction getIsolatedParallaxProps(props) {\n  var disabled = props.disabled,\n      easing = props.easing,\n      endScroll = props.endScroll,\n      onChange = props.onChange,\n      onEnter = props.onEnter,\n      onExit = props.onExit,\n      onProgressChange = props.onProgressChange,\n      opacity = props.opacity,\n      rootMargin = props.rootMargin,\n      rotate = props.rotate,\n      rotateX = props.rotateX,\n      rotateY = props.rotateY,\n      rotateZ = props.rotateZ,\n      scale = props.scale,\n      scaleX = props.scaleX,\n      scaleY = props.scaleY,\n      scaleZ = props.scaleZ,\n      shouldAlwaysCompleteAnimation = props.shouldAlwaysCompleteAnimation,\n      shouldDisableScalingTranslations = props.shouldDisableScalingTranslations,\n      speed = props.speed,\n      startScroll = props.startScroll,\n      targetElement = props.targetElement,\n      translateX = props.translateX,\n      translateY = props.translateY,\n      rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n  var parallaxProps = removeUndefinedObjectKeys({\n    disabled: disabled,\n    easing: easing,\n    endScroll: endScroll,\n    onChange: onChange,\n    onEnter: onEnter,\n    onExit: onExit,\n    onProgressChange: onProgressChange,\n    opacity: opacity,\n    rootMargin: rootMargin,\n    rotate: rotate,\n    rotateX: rotateX,\n    rotateY: rotateY,\n    rotateZ: rotateZ,\n    scale: scale,\n    scaleX: scaleX,\n    scaleY: scaleY,\n    scaleZ: scaleZ,\n    shouldAlwaysCompleteAnimation: shouldAlwaysCompleteAnimation,\n    shouldDisableScalingTranslations: shouldDisableScalingTranslations,\n    speed: speed,\n    startScroll: startScroll,\n    targetElement: targetElement,\n    translateX: translateX,\n    translateY: translateY\n  });\n  return {\n    parallaxProps: parallaxProps,\n    rest: rest\n  };\n}\n\nfunction useVerifyController(controller) {\n  useEffect(function () {\n    var isServer = typeof window === 'undefined'; // Make sure the provided controller is an instance of the Parallax Controller\n\n    var isInstance = controller instanceof ParallaxController; // Throw if neither context or global is available\n\n    if (!isServer && !controller && !isInstance) {\n      throw new Error(\"Must wrap your application's <Parallax /> components in a <ParallaxProvider />.\");\n    }\n  }, [controller]);\n}\n\nvar ParallaxContext = /*#__PURE__*/React.createContext(null);\n\nfunction useParallaxController() {\n  var parallaxController = useContext(ParallaxContext);\n  var isServer = typeof window === 'undefined';\n\n  if (isServer) {\n    return null;\n  }\n\n  if (!parallaxController) {\n    throw new Error('Could not find `react-scroll-parallax` context value. Please ensure the component is wrapped in a <ParallaxProvider>');\n  }\n\n  return parallaxController;\n}\n\nfunction useParallax(props) {\n  var controller = useParallaxController();\n  var ref = useRef(null);\n\n  var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n      parallaxProps = _getIsolatedParallaxP.parallaxProps;\n\n  useVerifyController(controller);\n\n  var _useState = useState(),\n      element = _useState[0],\n      setElement = _useState[1]; // create element\n\n\n  useEffect(function () {\n    var newElement;\n\n    if (ref.current instanceof HTMLElement) {\n      var options = {\n        el: ref.current,\n        props: parallaxProps\n      };\n      newElement = controller == null ? void 0 : controller.createElement(options);\n      setElement(newElement);\n    } else {\n      throw new Error('You must assign the ref returned by the useParallax() hook to an HTML Element.');\n    }\n\n    return function () {\n      if (newElement) {\n        controller == null ? void 0 : controller.removeElementById(newElement.id);\n      }\n    };\n  }, []); // update element\n\n  useEffect(function () {\n    if (element) {\n      if (props.disabled) {\n        controller == null ? void 0 : controller.resetElementStyles(element);\n        controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n      } else {\n        controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n      }\n    }\n  }, [props.disabled, props.easing, props.endScroll, props.onChange, props.onEnter, props.onExit, props.onProgressChange, props.opacity, props.rootMargin, props.rotate, props.rotateX, props.rotateY, props.rotateZ, props.scale, props.scaleX, props.scaleY, props.scaleZ, props.shouldAlwaysCompleteAnimation, props.shouldDisableScalingTranslations, props.speed, props.startScroll, props.targetElement, props.translateX, props.translateY]);\n  return {\n    ref: ref,\n    controller: controller,\n    element: element\n  };\n}\n\nfunction Parallax(props) {\n  var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n      parallaxProps = _getIsolatedParallaxP.parallaxProps,\n      rest = _getIsolatedParallaxP.rest;\n\n  var _useParallax = useParallax(parallaxProps),\n      ref = _useParallax.ref;\n\n  return React.createElement(\"div\", Object.assign({\n    ref: ref\n  }, rest), props.children);\n}\n\nvar FALLBACK_RECT = {\n  height: 0\n};\nfunction getExpandedStyle(layer) {\n  if (Array.isArray(layer.translateY)) {\n    var translateYStart = parseValueAndUnit(layer.translateY[0]);\n    var translateYEnd = parseValueAndUnit(layer.translateY[1]);\n\n    if (translateYStart.unit === 'px' && translateYEnd.unit === 'px') {\n      return {\n        top: Math.abs(translateYEnd.value) * -1 + \"px\",\n        bottom: Math.abs(translateYStart.value) * -1 + \"px\"\n      };\n    }\n\n    if (translateYStart.unit === '%' && translateYEnd.unit === '%') {\n      var _layer$targetElement$, _layer$targetElement;\n\n      var clientRect = (_layer$targetElement$ = (_layer$targetElement = layer.targetElement) == null ? void 0 : _layer$targetElement.getBoundingClientRect()) != null ? _layer$targetElement$ : FALLBACK_RECT;\n      var top = Math.abs(clientRect.height * 0.01 * translateYEnd.value) * -1;\n      var bottom = Math.abs(clientRect.height * 0.01 * translateYStart.value) * -1;\n      return {\n        top: top + \"px\",\n        bottom: bottom + \"px\"\n      };\n    }\n  }\n\n  if (layer.speed) {\n    var speed = layer.speed || 0;\n    var absSpeed = Math.abs(speed) * 10 * -1;\n    return {\n      top: absSpeed + \"px\",\n      bottom: absSpeed + \"px\"\n    };\n  }\n\n  return {};\n}\n\nfunction getImageStyle(layer) {\n  return layer.image ? {\n    backgroundImage: \"url(\" + layer.image + \")\",\n    backgroundPosition: 'center',\n    backgroundSize: 'cover'\n  } : {};\n}\n\nvar _excluded$1 = [\"children\", \"disabled\", \"style\", \"expanded\", \"image\", \"testId\"];\nvar absoluteStyle = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  right: 0,\n  bottom: 0\n};\nvar ParallaxBannerLayer = function ParallaxBannerLayer(props) {\n  var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n      parallaxProps = _getIsolatedParallaxP.parallaxProps,\n      rest = _getIsolatedParallaxP.rest;\n\n  var style = rest.style,\n      _rest$expanded = rest.expanded,\n      expanded = _rest$expanded === void 0 ? true : _rest$expanded,\n      testId = rest.testId,\n      divProps = _objectWithoutPropertiesLoose(rest, _excluded$1);\n\n  var imageStyle = getImageStyle(props);\n  var expandedStyle = expanded ? getExpandedStyle(props) : {};\n  var parallax = useParallax(_extends({\n    targetElement: props.targetElement,\n    shouldDisableScalingTranslations: true\n  }, parallaxProps));\n  return React.createElement(\"div\", Object.assign({\n    \"data-testid\": testId,\n    ref: parallax.ref,\n    style: _extends({}, imageStyle, absoluteStyle, expandedStyle, style)\n  }, divProps), rest.children);\n};\n\nvar _excluded$2 = [\"disabled\", \"style\", \"layers\"];\nvar containerStyle = {\n  position: 'relative',\n  overflow: 'hidden',\n  width: '100%'\n};\nvar ParallaxBanner = function ParallaxBanner(props) {\n  var _useState = useState(null),\n      targetElement = _useState[0],\n      setTargetElement = _useState[1];\n\n  var containerRef = useRef(null);\n  useEffect(function () {\n    setTargetElement(containerRef.current);\n  }, []);\n\n  var rootStyle = props.style,\n      _props$layers = props.layers,\n      layers = _props$layers === void 0 ? [] : _props$layers,\n      rootRest = _objectWithoutPropertiesLoose(props, _excluded$2);\n\n  function renderLayers() {\n    if (targetElement) {\n      var shouldUseLayers = layers && layers.length > 0;\n\n      if (shouldUseLayers) {\n        return layers.map(function (layer, i) {\n          return React.createElement(ParallaxBannerLayer, Object.assign({}, layer, {\n            targetElement: targetElement,\n            key: \"layer-\" + i,\n            testId: \"layer-\" + i\n          }));\n        });\n      }\n    }\n\n    return null;\n  }\n\n  function renderChildren() {\n    if (targetElement) {\n      return React.Children.map(props.children, function (child) {\n        var item = child; // adds the targetElement prop to any ParallaxBannerLayer components\n\n        if ((item == null ? void 0 : item.type) === ParallaxBannerLayer) {\n          var clone = React.cloneElement(item, {\n            targetElement: targetElement\n          });\n          return clone;\n        }\n\n        return child;\n      });\n    }\n\n    return null;\n  }\n\n  return React.createElement(\"div\", Object.assign({\n    ref: containerRef,\n    style: _extends({}, containerStyle, rootStyle)\n  }, rootRest), renderLayers(), renderChildren());\n};\n\nvar createController = function createController(options) {\n  // Don't initialize on the server\n  var isServer = typeof window === 'undefined';\n\n  if (!isServer) {\n    // Must not be the server so kick it off...\n    return ParallaxController.init(options);\n  }\n\n  return null;\n};\n\nvar ParallaxProvider = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(ParallaxProvider, _Component);\n\n  function ParallaxProvider(props) {\n    var _this;\n\n    _this = _Component.call(this, props) || this;\n    _this.controller = createController({\n      scrollAxis: props.scrollAxis,\n      scrollContainer: props.scrollContainer,\n      disabled: props.isDisabled\n    });\n    return _this;\n  }\n\n  var _proto = ParallaxProvider.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.scrollContainer !== this.props.scrollContainer && this.props.scrollContainer) {\n      var _this$controller;\n\n      (_this$controller = this.controller) == null ? void 0 : _this$controller.updateScrollContainer(this.props.scrollContainer);\n    }\n\n    if (prevProps.isDisabled !== this.props.isDisabled) {\n      if (this.props.isDisabled) {\n        var _this$controller2;\n\n        (_this$controller2 = this.controller) == null ? void 0 : _this$controller2.disableParallaxController();\n      }\n\n      if (!this.props.isDisabled) {\n        var _this$controller3;\n\n        (_this$controller3 = this.controller) == null ? void 0 : _this$controller3.enableParallaxController();\n      }\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    // @ts-ignore\n    this.controller = this.controller.destroy();\n  };\n\n  _proto.render = function render() {\n    var children = this.props.children;\n    return (// @ts-ignore\n      React.createElement(ParallaxContext.Provider, {\n        value: this.controller\n      }, children)\n    );\n  };\n\n  return ParallaxProvider;\n}(Component);\nParallaxProvider.defaultProps = {\n  scrollAxis: ScrollAxis.vertical\n};\n\nexport { Parallax, ParallaxBanner, ParallaxBannerLayer, ParallaxContext, ParallaxProvider, useParallax, useParallaxController };\n//# sourceMappingURL=react-scroll-parallax.esm.js.map\n","import { __spreadArray } from 'tslib';\nimport { parse } from 'content-type';\n\nvar cache = new Map();\n\nvar cloneSvg = function cloneSvg(sourceSvg) {\n  return sourceSvg.cloneNode(true);\n};\n\nvar isLocal = function isLocal() {\n  return window.location.protocol === 'file:';\n};\n\nvar makeAjaxRequest = function makeAjaxRequest(url, httpRequestWithCredentials, callback) {\n  var httpRequest = new XMLHttpRequest();\n  httpRequest.onreadystatechange = function () {\n    try {\n      if (!/\\.svg/i.test(url) && httpRequest.readyState === 2) {\n        var contentType = httpRequest.getResponseHeader('Content-Type');\n        if (!contentType) {\n          throw new Error('Content type not found');\n        }\n        var type = parse(contentType).type;\n        if (!(type === 'image/svg+xml' || type === 'text/plain')) {\n          throw new Error(\"Invalid content type: \".concat(type));\n        }\n      }\n      if (httpRequest.readyState === 4) {\n        if (httpRequest.status === 404 || httpRequest.responseXML === null) {\n          throw new Error(isLocal() ? 'Note: SVG injection ajax calls do not work locally without ' + 'adjusting security settings in your browser. Or consider ' + 'using a local webserver.' : 'Unable to load SVG file: ' + url);\n        }\n        if (httpRequest.status === 200 || isLocal() && httpRequest.status === 0) {\n          callback(null, httpRequest);\n        } else {\n          throw new Error('There was a problem injecting the SVG: ' + httpRequest.status + ' ' + httpRequest.statusText);\n        }\n      }\n    } catch (error) {\n      httpRequest.abort();\n      if (error instanceof Error) {\n        callback(error, httpRequest);\n      } else {\n        throw error;\n      }\n    }\n  };\n  httpRequest.open('GET', url);\n  httpRequest.withCredentials = httpRequestWithCredentials;\n  if (httpRequest.overrideMimeType) {\n    httpRequest.overrideMimeType('text/xml');\n  }\n  httpRequest.send();\n};\n\nvar requestQueue = {};\nvar queueRequest = function queueRequest(url, callback) {\n  requestQueue[url] = requestQueue[url] || [];\n  requestQueue[url].push(callback);\n};\nvar processRequestQueue = function processRequestQueue(url) {\n  var _loop_1 = function _loop_1(i, len) {\n    setTimeout(function () {\n      if (Array.isArray(requestQueue[url])) {\n        var cacheValue = cache.get(url);\n        var callback = requestQueue[url][i];\n        if (cacheValue instanceof SVGSVGElement) {\n          callback(null, cloneSvg(cacheValue));\n        }\n        if (cacheValue instanceof Error) {\n          callback(cacheValue);\n        }\n        if (i === requestQueue[url].length - 1) {\n          delete requestQueue[url];\n        }\n      }\n    }, 0);\n  };\n  for (var i = 0, len = requestQueue[url].length; i < len; i++) {\n    _loop_1(i);\n  }\n};\n\nvar loadSvgCached = function loadSvgCached(url, httpRequestWithCredentials, callback) {\n  if (cache.has(url)) {\n    var cacheValue = cache.get(url);\n    if (cacheValue === undefined) {\n      queueRequest(url, callback);\n      return;\n    }\n    if (cacheValue instanceof SVGSVGElement) {\n      callback(null, cloneSvg(cacheValue));\n      return;\n    }\n  }\n  cache.set(url, undefined);\n  queueRequest(url, callback);\n  makeAjaxRequest(url, httpRequestWithCredentials, function (error, httpRequest) {\n    var _a;\n    if (error) {\n      cache.set(url, error);\n    } else if (((_a = httpRequest.responseXML) === null || _a === void 0 ? void 0 : _a.documentElement) instanceof SVGSVGElement) {\n      cache.set(url, httpRequest.responseXML.documentElement);\n    }\n    processRequestQueue(url);\n  });\n};\n\nvar loadSvgUncached = function loadSvgUncached(url, httpRequestWithCredentials, callback) {\n  makeAjaxRequest(url, httpRequestWithCredentials, function (error, httpRequest) {\n    var _a;\n    if (error) {\n      callback(error);\n    } else if (((_a = httpRequest.responseXML) === null || _a === void 0 ? void 0 : _a.documentElement) instanceof SVGSVGElement) {\n      callback(null, httpRequest.responseXML.documentElement);\n    }\n  });\n};\n\nvar idCounter = 0;\nvar uniqueId = function uniqueId() {\n  return ++idCounter;\n};\n\nvar injectedElements = [];\nvar ranScripts = {};\nvar svgNamespace = 'http://www.w3.org/2000/svg';\nvar xlinkNamespace = 'http://www.w3.org/1999/xlink';\nvar injectElement = function injectElement(el, evalScripts, renumerateIRIElements, cacheRequests, httpRequestWithCredentials, beforeEach, callback) {\n  var elUrl = el.getAttribute('data-src') || el.getAttribute('src');\n  if (!elUrl) {\n    callback(new Error('Invalid data-src or src attribute'));\n    return;\n  }\n  if (injectedElements.indexOf(el) !== -1) {\n    injectedElements.splice(injectedElements.indexOf(el), 1);\n    el = null;\n    return;\n  }\n  injectedElements.push(el);\n  el.setAttribute('src', '');\n  var loadSvg = cacheRequests ? loadSvgCached : loadSvgUncached;\n  loadSvg(elUrl, httpRequestWithCredentials, function (error, svg) {\n    if (!svg) {\n      injectedElements.splice(injectedElements.indexOf(el), 1);\n      el = null;\n      callback(error);\n      return;\n    }\n    var elId = el.getAttribute('id');\n    if (elId) {\n      svg.setAttribute('id', elId);\n    }\n    var elTitle = el.getAttribute('title');\n    if (elTitle) {\n      svg.setAttribute('title', elTitle);\n    }\n    var elWidth = el.getAttribute('width');\n    if (elWidth) {\n      svg.setAttribute('width', elWidth);\n    }\n    var elHeight = el.getAttribute('height');\n    if (elHeight) {\n      svg.setAttribute('height', elHeight);\n    }\n    var mergedClasses = Array.from(new Set(__spreadArray(__spreadArray(__spreadArray([], (svg.getAttribute('class') || '').split(' '), true), ['injected-svg'], false), (el.getAttribute('class') || '').split(' '), true))).join(' ').trim();\n    svg.setAttribute('class', mergedClasses);\n    var elStyle = el.getAttribute('style');\n    if (elStyle) {\n      svg.setAttribute('style', elStyle);\n    }\n    svg.setAttribute('data-src', elUrl);\n    var elData = [].filter.call(el.attributes, function (at) {\n      return /^data-\\w[\\w-]*$/.test(at.name);\n    });\n    Array.prototype.forEach.call(elData, function (dataAttr) {\n      if (dataAttr.name && dataAttr.value) {\n        svg.setAttribute(dataAttr.name, dataAttr.value);\n      }\n    });\n    if (renumerateIRIElements) {\n      var iriElementsAndProperties_1 = {\n        clipPath: ['clip-path'],\n        'color-profile': ['color-profile'],\n        cursor: ['cursor'],\n        filter: ['filter'],\n        linearGradient: ['fill', 'stroke'],\n        marker: ['marker', 'marker-start', 'marker-mid', 'marker-end'],\n        mask: ['mask'],\n        path: [],\n        pattern: ['fill', 'stroke'],\n        radialGradient: ['fill', 'stroke']\n      };\n      var element_1;\n      var elements_1;\n      var properties_1;\n      var currentId_1;\n      var newId_1;\n      Object.keys(iriElementsAndProperties_1).forEach(function (key) {\n        element_1 = key;\n        properties_1 = iriElementsAndProperties_1[key];\n        elements_1 = svg.querySelectorAll(element_1 + '[id]');\n        var _loop_1 = function _loop_1(a, elementsLen) {\n          currentId_1 = elements_1[a].id;\n          newId_1 = currentId_1 + '-' + uniqueId();\n          var referencingElements;\n          Array.prototype.forEach.call(properties_1, function (property) {\n            referencingElements = svg.querySelectorAll('[' + property + '*=\"' + currentId_1 + '\"]');\n            for (var b = 0, referencingElementLen = referencingElements.length; b < referencingElementLen; b++) {\n              var attrValue = referencingElements[b].getAttribute(property);\n              if (attrValue && !attrValue.match(new RegExp('url\\\\(\"?#' + currentId_1 + '\"?\\\\)'))) {\n                continue;\n              }\n              referencingElements[b].setAttribute(property, 'url(#' + newId_1 + ')');\n            }\n          });\n          var allLinks = svg.querySelectorAll('[*|href]');\n          var links = [];\n          for (var c = 0, allLinksLen = allLinks.length; c < allLinksLen; c++) {\n            var href = allLinks[c].getAttributeNS(xlinkNamespace, 'href');\n            if (href && href.toString() === '#' + elements_1[a].id) {\n              links.push(allLinks[c]);\n            }\n          }\n          for (var d = 0, linksLen = links.length; d < linksLen; d++) {\n            links[d].setAttributeNS(xlinkNamespace, 'href', '#' + newId_1);\n          }\n          elements_1[a].id = newId_1;\n        };\n        for (var a = 0, elementsLen = elements_1.length; a < elementsLen; a++) {\n          _loop_1(a);\n        }\n      });\n    }\n    svg.removeAttribute('xmlns:a');\n    var scripts = svg.querySelectorAll('script');\n    var scriptsToEval = [];\n    var script;\n    var scriptType;\n    for (var i = 0, scriptsLen = scripts.length; i < scriptsLen; i++) {\n      scriptType = scripts[i].getAttribute('type');\n      if (!scriptType || scriptType === 'application/ecmascript' || scriptType === 'application/javascript' || scriptType === 'text/javascript') {\n        script = scripts[i].innerText || scripts[i].textContent;\n        if (script) {\n          scriptsToEval.push(script);\n        }\n        svg.removeChild(scripts[i]);\n      }\n    }\n    if (scriptsToEval.length > 0 && (evalScripts === 'always' || evalScripts === 'once' && !ranScripts[elUrl])) {\n      for (var l = 0, scriptsToEvalLen = scriptsToEval.length; l < scriptsToEvalLen; l++) {\n        new Function(scriptsToEval[l])(window);\n      }\n      ranScripts[elUrl] = true;\n    }\n    var styleTags = svg.querySelectorAll('style');\n    Array.prototype.forEach.call(styleTags, function (styleTag) {\n      styleTag.textContent += '';\n    });\n    svg.setAttribute('xmlns', svgNamespace);\n    svg.setAttribute('xmlns:xlink', xlinkNamespace);\n    beforeEach(svg);\n    if (!el.parentNode) {\n      injectedElements.splice(injectedElements.indexOf(el), 1);\n      el = null;\n      callback(new Error('Parent node is null'));\n      return;\n    }\n    el.parentNode.replaceChild(svg, el);\n    injectedElements.splice(injectedElements.indexOf(el), 1);\n    el = null;\n    callback(null, svg);\n  });\n};\n\nvar SVGInjector = function SVGInjector(elements, _a) {\n  var _b = _a === void 0 ? {} : _a,\n    _c = _b.afterAll,\n    afterAll = _c === void 0 ? function () {\n      return undefined;\n    } : _c,\n    _d = _b.afterEach,\n    afterEach = _d === void 0 ? function () {\n      return undefined;\n    } : _d,\n    _e = _b.beforeEach,\n    beforeEach = _e === void 0 ? function () {\n      return undefined;\n    } : _e,\n    _f = _b.cacheRequests,\n    cacheRequests = _f === void 0 ? true : _f,\n    _g = _b.evalScripts,\n    evalScripts = _g === void 0 ? 'never' : _g,\n    _h = _b.httpRequestWithCredentials,\n    httpRequestWithCredentials = _h === void 0 ? false : _h,\n    _j = _b.renumerateIRIElements,\n    renumerateIRIElements = _j === void 0 ? true : _j;\n  if (elements && 'length' in elements) {\n    var elementsLoaded_1 = 0;\n    for (var i = 0, j = elements.length; i < j; i++) {\n      injectElement(elements[i], evalScripts, renumerateIRIElements, cacheRequests, httpRequestWithCredentials, beforeEach, function (error, svg) {\n        afterEach(error, svg);\n        if (elements && 'length' in elements && elements.length === ++elementsLoaded_1) {\n          afterAll(elementsLoaded_1);\n        }\n      });\n    }\n  } else if (elements) {\n    injectElement(elements, evalScripts, renumerateIRIElements, cacheRequests, httpRequestWithCredentials, beforeEach, function (error, svg) {\n      afterEach(error, svg);\n      afterAll(1);\n      elements = null;\n    });\n  } else {\n    afterAll(0);\n  }\n};\n\nexport { SVGInjector };\n//# sourceMappingURL=svg-injector.esm.js.map\n","import _objectWithoutPropertiesLoose from '@babel/runtime/helpers/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { SVGInjector } from '@tanem/svg-injector';\nimport * as PropTypes from 'prop-types';\nimport * as React from 'react';\n\n// Hat-tip: https://github.com/mui/material-ui/tree/master/packages/mui-utils/src.\nvar ownerWindow = function ownerWindow(node) {\n  var doc = (node == null ? undefined : node.ownerDocument) || document;\n  return doc.defaultView || window;\n};\n\n// Hat-tip: https://github.com/developit/preact-compat/blob/master/src/index.js#L402.\nvar shallowDiffers = function shallowDiffers(a, b) {\n  for (var i in a) {\n    if (!(i in b)) {\n      return true;\n    }\n  }\n  for (var _i in b) {\n    if (a[_i] !== b[_i]) {\n      return true;\n    }\n  }\n  return false;\n};\n\nvar _excluded = [\"afterInjection\", \"beforeInjection\", \"desc\", \"evalScripts\", \"fallback\", \"httpRequestWithCredentials\", \"loading\", \"renumerateIRIElements\", \"src\", \"title\", \"useRequestCache\", \"wrapper\"];\nvar svgNamespace = 'http://www.w3.org/2000/svg';\nvar xlinkNamespace = 'http://www.w3.org/1999/xlink';\nvar ReactSVG = /*#__PURE__*/function (_React$Component) {\n  function ReactSVG() {\n    var _this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.initialState = {\n      hasError: false,\n      isLoading: true\n    };\n    _this.state = _this.initialState;\n    _this._isMounted = false;\n    _this.reactWrapper = undefined;\n    _this.nonReactWrapper = undefined;\n    _this.refCallback = function (reactWrapper) {\n      _this.reactWrapper = reactWrapper;\n    };\n    return _this;\n  }\n  _inheritsLoose(ReactSVG, _React$Component);\n  var _proto = ReactSVG.prototype;\n  _proto.renderSVG = function renderSVG() {\n    var _this2 = this;\n    /* istanbul ignore else */\n    if (this.reactWrapper instanceof ownerWindow(this.reactWrapper).Node) {\n      var _this$props = this.props,\n        desc = _this$props.desc,\n        evalScripts = _this$props.evalScripts,\n        httpRequestWithCredentials = _this$props.httpRequestWithCredentials,\n        renumerateIRIElements = _this$props.renumerateIRIElements,\n        src = _this$props.src,\n        title = _this$props.title,\n        useRequestCache = _this$props.useRequestCache;\n      /* eslint-disable @typescript-eslint/no-non-null-assertion */\n      var onError = this.props.onError;\n      var beforeInjection = this.props.beforeInjection;\n      var afterInjection = this.props.afterInjection;\n      var wrapper = this.props.wrapper;\n      var nonReactWrapper;\n      var nonReactTarget;\n      if (wrapper === 'svg') {\n        nonReactWrapper = document.createElementNS(svgNamespace, wrapper);\n        nonReactWrapper.setAttribute('xmlns', svgNamespace);\n        nonReactWrapper.setAttribute('xmlns:xlink', xlinkNamespace);\n        nonReactTarget = document.createElementNS(svgNamespace, wrapper);\n      } else {\n        nonReactWrapper = document.createElement(wrapper);\n        nonReactTarget = document.createElement(wrapper);\n      }\n      nonReactWrapper.appendChild(nonReactTarget);\n      nonReactTarget.dataset.src = src;\n      this.nonReactWrapper = this.reactWrapper.appendChild(nonReactWrapper);\n      var handleError = function handleError(error) {\n        _this2.removeSVG();\n        if (!_this2._isMounted) {\n          onError(error);\n          return;\n        }\n        _this2.setState(function () {\n          return {\n            hasError: true,\n            isLoading: false\n          };\n        }, function () {\n          onError(error);\n        });\n      };\n      var afterEach = function afterEach(error, svg) {\n        if (error) {\n          handleError(error);\n          return;\n        }\n        // TODO (Tane): It'd be better to cleanly unsubscribe from SVGInjector\n        // callbacks instead of tracking a property like this.\n        if (_this2._isMounted) {\n          _this2.setState(function () {\n            return {\n              isLoading: false\n            };\n          }, function () {\n            try {\n              afterInjection(svg);\n            } catch (afterInjectionError) {\n              handleError(afterInjectionError);\n            }\n          });\n        }\n      };\n      var beforeEach = function beforeEach(svg) {\n        svg.setAttribute('role', 'img');\n        if (desc) {\n          var originalDesc = svg.querySelector(':scope > desc');\n          if (originalDesc) {\n            svg.removeChild(originalDesc);\n          }\n          var newDesc = document.createElement('desc');\n          newDesc.innerHTML = desc;\n          svg.prepend(newDesc);\n        }\n        if (title) {\n          var originalTitle = svg.querySelector(':scope > title');\n          if (originalTitle) {\n            svg.removeChild(originalTitle);\n          }\n          var newTitle = document.createElement('title');\n          newTitle.innerHTML = title;\n          svg.prepend(newTitle);\n        }\n        try {\n          beforeInjection(svg);\n        } catch (error) {\n          handleError(error);\n        }\n      };\n      SVGInjector(nonReactTarget, {\n        afterEach: afterEach,\n        beforeEach: beforeEach,\n        cacheRequests: useRequestCache,\n        evalScripts: evalScripts,\n        httpRequestWithCredentials: httpRequestWithCredentials,\n        renumerateIRIElements: renumerateIRIElements\n      });\n    }\n  };\n  _proto.removeSVG = function removeSVG() {\n    var _this$nonReactWrapper;\n    if ((_this$nonReactWrapper = this.nonReactWrapper) != null && _this$nonReactWrapper.parentNode) {\n      this.nonReactWrapper.parentNode.removeChild(this.nonReactWrapper);\n      this.nonReactWrapper = null;\n    }\n  };\n  _proto.componentDidMount = function componentDidMount() {\n    this._isMounted = true;\n    this.renderSVG();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var _this3 = this;\n    if (shallowDiffers(_extends({}, prevProps), this.props)) {\n      this.setState(function () {\n        return _this3.initialState;\n      }, function () {\n        _this3.removeSVG();\n        _this3.renderSVG();\n      });\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this._isMounted = false;\n    this.removeSVG();\n  };\n  _proto.render = function render() {\n    /* eslint-disable @typescript-eslint/no-unused-vars */\n    var _this$props2 = this.props;\n      _this$props2.afterInjection;\n      _this$props2.beforeInjection;\n      _this$props2.desc;\n      _this$props2.evalScripts;\n      var Fallback = _this$props2.fallback;\n      _this$props2.httpRequestWithCredentials;\n      var Loading = _this$props2.loading;\n      _this$props2.renumerateIRIElements;\n      _this$props2.src;\n      _this$props2.title;\n      _this$props2.useRequestCache;\n      var wrapper = _this$props2.wrapper,\n      rest = _objectWithoutPropertiesLoose(_this$props2, _excluded);\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    var Wrapper = wrapper;\n    return /*#__PURE__*/React.createElement(Wrapper, _extends({}, rest, {\n      ref: this.refCallback\n    }, wrapper === 'svg' ? {\n      xmlns: svgNamespace,\n      xmlnsXlink: xlinkNamespace\n    } : {}), this.state.isLoading && Loading && /*#__PURE__*/React.createElement(Loading, null), this.state.hasError && Fallback && /*#__PURE__*/React.createElement(Fallback, null));\n  };\n  return ReactSVG;\n}(React.Component);\nReactSVG.defaultProps = {\n  afterInjection: function afterInjection() {\n    return undefined;\n  },\n  beforeInjection: function beforeInjection() {\n    return undefined;\n  },\n  desc: '',\n  evalScripts: 'never',\n  fallback: null,\n  httpRequestWithCredentials: false,\n  loading: null,\n  onError: function onError() {\n    return undefined;\n  },\n  renumerateIRIElements: true,\n  title: '',\n  useRequestCache: true,\n  wrapper: 'div'\n};\nReactSVG.propTypes = {\n  afterInjection: PropTypes.func,\n  beforeInjection: PropTypes.func,\n  desc: PropTypes.string,\n  evalScripts: PropTypes.oneOf(['always', 'once', 'never']),\n  fallback: PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.string]),\n  httpRequestWithCredentials: PropTypes.bool,\n  loading: PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.string]),\n  onError: PropTypes.func,\n  renumerateIRIElements: PropTypes.bool,\n  src: PropTypes.string.isRequired,\n  title: PropTypes.string,\n  useRequestCache: PropTypes.bool,\n  wrapper: PropTypes.oneOf(['div', 'span', 'svg'])\n} ;\n\nexport { ReactSVG };\n//# sourceMappingURL=react-svg.esm.js.map\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 * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n    if (typeof ref === 'function') {\n        ref(value);\n    }\n    else if (ref) {\n        ref.current = value;\n    }\n    return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n    var ref = useState(function () { return ({\n        // value\n        value: initialValue,\n        // last callback\n        callback: callback,\n        // \"memoized\" public interface\n        facade: {\n            get current() {\n                return ref.value;\n            },\n            set current(value) {\n                var last = ref.value;\n                if (last !== value) {\n                    ref.value = value;\n                    ref.callback(value, last);\n                }\n            },\n        },\n    }); })[0];\n    // update callback\n    ref.callback = callback;\n    return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n *   const ownRef = useRef();\n *   const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n *   return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n    var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n        return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n    });\n    // handle refs changes - added or removed\n    useIsomorphicLayoutEffect(function () {\n        var oldValue = currentValues.get(callbackRef);\n        if (oldValue) {\n            var prevRefs_1 = new Set(oldValue);\n            var nextRefs_1 = new Set(refs);\n            var current_1 = callbackRef.current;\n            prevRefs_1.forEach(function (ref) {\n                if (!nextRefs_1.has(ref)) {\n                    assignRef(ref, null);\n                }\n            });\n            nextRefs_1.forEach(function (ref) {\n                if (!prevRefs_1.has(ref)) {\n                    assignRef(ref, current_1);\n                }\n            });\n        }\n        currentValues.set(callbackRef, refs);\n    }, [refs]);\n    return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n    return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    var buffer = [];\n    var assigned = false;\n    var medium = {\n        read: function () {\n            if (assigned) {\n                throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n            }\n            if (buffer.length) {\n                return buffer[buffer.length - 1];\n            }\n            return defaults;\n        },\n        useMedium: function (data) {\n            var item = middleware(data, assigned);\n            buffer.push(item);\n            return function () {\n                buffer = buffer.filter(function (x) { return x !== item; });\n            };\n        },\n        assignSyncMedium: function (cb) {\n            assigned = true;\n            while (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n            }\n            buffer = {\n                push: function (x) { return cb(x); },\n                filter: function () { return buffer; },\n            };\n        },\n        assignMedium: function (cb) {\n            assigned = true;\n            var pendingQueue = [];\n            if (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n                pendingQueue = buffer;\n            }\n            var executeQueue = function () {\n                var cbs = pendingQueue;\n                pendingQueue = [];\n                cbs.forEach(cb);\n            };\n            var cycle = function () { return Promise.resolve().then(executeQueue); };\n            cycle();\n            buffer = {\n                push: function (x) {\n                    pendingQueue.push(x);\n                    cycle();\n                },\n                filter: function (filter) {\n                    pendingQueue = pendingQueue.filter(filter);\n                    return buffer;\n                },\n            };\n        },\n    };\n    return medium;\n}\nexport function createMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n    if (options === void 0) { options = {}; }\n    var medium = innerCreateMedium(null);\n    medium.options = __assign({ async: true, ssr: false }, options);\n    return medium;\n}\n","/**\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","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","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 _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose 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 };","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n  if (ignoreScrollbarX === void 0) {\n    ignoreScrollbarX = false;\n  }\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n  // RTL <body> scrollbar.\n  getWindowScrollBarX(documentElement, htmlRect));\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n      // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n  ...offset$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n  ...shift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n  ...limitShift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n  ...flip$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n  ...size$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n  ...autoPlacement$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n  ...hide$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n  ...inline$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  return [':popover-open', ':modal'].some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","// packages/core/primitive/src/primitive.tsx\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n  return function handleEvent(event) {\n    originalEventHandler?.(event);\n    if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n      return ourEventHandler?.(event);\n    }\n  };\n}\nexport {\n  composeEventHandlers\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/collection/src/collection.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n  const PROVIDER_NAME = name + \"CollectionProvider\";\n  const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n  const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n    PROVIDER_NAME,\n    { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n  );\n  const CollectionProvider = (props) => {\n    const { scope, children } = props;\n    const ref = React.useRef(null);\n    const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n    return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n  };\n  CollectionProvider.displayName = PROVIDER_NAME;\n  const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n  const CollectionSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n      return /* @__PURE__ */ jsx(Slot, { ref: composedRefs, children });\n    }\n  );\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n  const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n  const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n  const CollectionItemSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React.useRef(null);\n      const composedRefs = useComposedRefs(forwardedRef, ref);\n      const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n      React.useEffect(() => {\n        context.itemMap.set(ref, { ref, ...itemData });\n        return () => void context.itemMap.delete(ref);\n      });\n      return /* @__PURE__ */ jsx(Slot, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n    }\n  );\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n  function useCollection(scope) {\n    const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n    const getItems = React.useCallback(() => {\n      const collectionNode = context.collectionRef.current;\n      if (!collectionNode) return [];\n      const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n      const items = Array.from(context.itemMap.values());\n      const orderedItems = items.sort(\n        (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n      );\n      return orderedItems;\n    }, [context.collectionRef, context.itemMap]);\n    return getItems;\n  }\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    useCollection,\n    createCollectionScope\n  ];\n}\nexport {\n  createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/composeRefs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\nfunction composeRefs(...refs) {\n  return (node) => {\n    let hasCleanup = false;\n    const cleanups = refs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup == \"function\") {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup == \"function\") {\n            cleanup();\n          } else {\n            setRef(refs[i], null);\n          }\n        }\n      };\n    }\n  };\n}\nfunction useComposedRefs(...refs) {\n  return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n  composeRefs,\n  useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/createContext.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n  const Context = React.createContext(defaultContext);\n  const Provider = (props) => {\n    const { children, ...context } = props;\n    const value = React.useMemo(() => context, Object.values(context));\n    return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n  };\n  Provider.displayName = rootComponentName + \"Provider\";\n  function useContext2(consumerName) {\n    const context = React.useContext(Context);\n    if (context) return context;\n    if (defaultContext !== void 0) return defaultContext;\n    throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n  }\n  return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n  let defaultContexts = [];\n  function createContext3(rootComponentName, defaultContext) {\n    const BaseContext = React.createContext(defaultContext);\n    const index = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n    const Provider = (props) => {\n      const { scope, children, ...context } = props;\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const value = React.useMemo(() => context, Object.values(context));\n      return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n    };\n    Provider.displayName = rootComponentName + \"Provider\";\n    function useContext2(consumerName, scope) {\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const context = React.useContext(Context);\n      if (context) return context;\n      if (defaultContext !== void 0) return defaultContext;\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    return [Provider, useContext2];\n  }\n  const createScope = () => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React.createContext(defaultContext);\n    });\n    return function useScope(scope) {\n      const contexts = scope?.[scopeName] || scopeContexts;\n      return React.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    };\n  };\n  createScope.scopeName = scopeName;\n  return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1) return baseScope;\n  const createScope = () => {\n    const scopeHooks = scopes.map((createScope2) => ({\n      useScope: createScope2(),\n      scopeName: createScope2.scopeName\n    }));\n    return function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes2, ...currentScope };\n      }, {});\n      return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    };\n  };\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\nexport {\n  createContext2 as createContext,\n  createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/Direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n  const { dir, children } = props;\n  return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n  const globalDir = React.useContext(DirectionContext);\n  return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n  DirectionProvider,\n  Provider,\n  useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/useEscapeKeydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n  const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n  React.useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (event.key === \"Escape\") {\n        onEscapeKeyDown(event);\n      }\n    };\n    ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n  }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n  useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/dismissable-layer/src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n  layers: /* @__PURE__ */ new Set(),\n  layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n  branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      disableOutsidePointerEvents = false,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      ...layerProps\n    } = props;\n    const context = React.useContext(DismissableLayerContext);\n    const [node, setNode] = React.useState(null);\n    const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n    const [, force] = React.useState({});\n    const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n    const layers = Array.from(context.layers);\n    const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n    const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n    const index = node ? layers.indexOf(node) : -1;\n    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n    const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n    const pointerDownOutside = usePointerDownOutside((event) => {\n      const target = event.target;\n      const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n      onPointerDownOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n    const focusOutside = useFocusOutside((event) => {\n      const target = event.target;\n      const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (isFocusInBranch) return;\n      onFocusOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n    useEscapeKeydown((event) => {\n      const isHighestLayer = index === context.layers.size - 1;\n      if (!isHighestLayer) return;\n      onEscapeKeyDown?.(event);\n      if (!event.defaultPrevented && onDismiss) {\n        event.preventDefault();\n        onDismiss();\n      }\n    }, ownerDocument);\n    React.useEffect(() => {\n      if (!node) return;\n      if (disableOutsidePointerEvents) {\n        if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n          originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n          ownerDocument.body.style.pointerEvents = \"none\";\n        }\n        context.layersWithOutsidePointerEventsDisabled.add(node);\n      }\n      context.layers.add(node);\n      dispatchUpdate();\n      return () => {\n        if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n          ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n        }\n      };\n    }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n    React.useEffect(() => {\n      return () => {\n        if (!node) return;\n        context.layers.delete(node);\n        context.layersWithOutsidePointerEventsDisabled.delete(node);\n        dispatchUpdate();\n      };\n    }, [node, context]);\n    React.useEffect(() => {\n      const handleUpdate = () => force({});\n      document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n      return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        ...layerProps,\n        ref: composedRefs,\n        style: {\n          pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n          ...props.style\n        },\n        onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n        onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n        onPointerDownCapture: composeEventHandlers(\n          props.onPointerDownCapture,\n          pointerDownOutside.onPointerDownCapture\n        )\n      }\n    );\n  }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n  const context = React.useContext(DismissableLayerContext);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      context.branches.add(node);\n      return () => {\n        context.branches.delete(node);\n      };\n    }\n  }, [context.branches]);\n  return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n  const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n  const isPointerInsideReactTreeRef = React.useRef(false);\n  const handleClickRef = React.useRef(() => {\n  });\n  React.useEffect(() => {\n    const handlePointerDown = (event) => {\n      if (event.target && !isPointerInsideReactTreeRef.current) {\n        let handleAndDispatchPointerDownOutsideEvent2 = function() {\n          handleAndDispatchCustomEvent(\n            POINTER_DOWN_OUTSIDE,\n            handlePointerDownOutside,\n            eventDetail,\n            { discrete: true }\n          );\n        };\n        var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n        const eventDetail = { originalEvent: event };\n        if (event.pointerType === \"touch\") {\n          ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n          handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n          ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n        } else {\n          handleAndDispatchPointerDownOutsideEvent2();\n        }\n      } else {\n        ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n      }\n      isPointerInsideReactTreeRef.current = false;\n    };\n    const timerId = window.setTimeout(() => {\n      ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n    }, 0);\n    return () => {\n      window.clearTimeout(timerId);\n      ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n      ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n    };\n  }, [ownerDocument, handlePointerDownOutside]);\n  return {\n    // ensures we check React component tree (not just DOM tree)\n    onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n  };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n  const handleFocusOutside = useCallbackRef(onFocusOutside);\n  const isFocusInsideReactTreeRef = React.useRef(false);\n  React.useEffect(() => {\n    const handleFocus = (event) => {\n      if (event.target && !isFocusInsideReactTreeRef.current) {\n        const eventDetail = { originalEvent: event };\n        handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n          discrete: false\n        });\n      }\n    };\n    ownerDocument.addEventListener(\"focusin\", handleFocus);\n    return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n  }, [ownerDocument, handleFocusOutside]);\n  return {\n    onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n    onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n  };\n}\nfunction dispatchUpdate() {\n  const event = new CustomEvent(CONTEXT_UPDATE);\n  document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n  const target = detail.originalEvent.target;\n  const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n  if (handler) target.addEventListener(name, handler, { once: true });\n  if (discrete) {\n    dispatchDiscreteCustomEvent(target, event);\n  } else {\n    target.dispatchEvent(event);\n  }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n  Branch,\n  DismissableLayer,\n  DismissableLayerBranch,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-guards/src/FocusGuards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n  useFocusGuards();\n  return props.children;\n}\nfunction useFocusGuards() {\n  React.useEffect(() => {\n    const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n    document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n    document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n    count++;\n    return () => {\n      if (count === 1) {\n        document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n      }\n      count--;\n    };\n  }, []);\n}\nfunction createFocusGuard() {\n  const element = document.createElement(\"span\");\n  element.setAttribute(\"data-radix-focus-guard\", \"\");\n  element.tabIndex = 0;\n  element.style.outline = \"none\";\n  element.style.opacity = \"0\";\n  element.style.position = \"fixed\";\n  element.style.pointerEvents = \"none\";\n  return element;\n}\nvar Root = FocusGuards;\nexport {\n  FocusGuards,\n  Root,\n  useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-scope/src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n  const {\n    loop = false,\n    trapped = false,\n    onMountAutoFocus: onMountAutoFocusProp,\n    onUnmountAutoFocus: onUnmountAutoFocusProp,\n    ...scopeProps\n  } = props;\n  const [container, setContainer] = React.useState(null);\n  const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n  const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n  const lastFocusedElementRef = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n  const focusScope = React.useRef({\n    paused: false,\n    pause() {\n      this.paused = true;\n    },\n    resume() {\n      this.paused = false;\n    }\n  }).current;\n  React.useEffect(() => {\n    if (trapped) {\n      let handleFocusIn2 = function(event) {\n        if (focusScope.paused || !container) return;\n        const target = event.target;\n        if (container.contains(target)) {\n          lastFocusedElementRef.current = target;\n        } else {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleFocusOut2 = function(event) {\n        if (focusScope.paused || !container) return;\n        const relatedTarget = event.relatedTarget;\n        if (relatedTarget === null) return;\n        if (!container.contains(relatedTarget)) {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleMutations2 = function(mutations) {\n        if (document.activeElement !== document.body) return;\n        if (noElementsRemoved(mutations)) return;\n        const lastFocusedElementStillInContainer = container?.contains(\n          lastFocusedElementRef.current\n        );\n        if (lastFocusedElementStillInContainer) return;\n\n        focus(container);\n      };\n      var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n      document.addEventListener(\"focusin\", handleFocusIn2);\n      document.addEventListener(\"focusout\", handleFocusOut2);\n      const mutationObserver = new MutationObserver(handleMutations2);\n      if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n      return () => {\n        document.removeEventListener(\"focusin\", handleFocusIn2);\n        document.removeEventListener(\"focusout\", handleFocusOut2);\n        mutationObserver.disconnect();\n      };\n    }\n  }, [trapped, container, focusScope.paused]);\n  React.useEffect(() => {\n    if (container) {\n      focusScopesStack.add(focusScope);\n      const previouslyFocusedElement = document.activeElement;\n      const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n      if (!hasFocusedCandidate) {\n        const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n        container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        container.dispatchEvent(mountEvent);\n        if (!mountEvent.defaultPrevented) {\n          focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n          if (document.activeElement === previouslyFocusedElement) {\n            focus(container);\n          }\n        }\n      }\n      return () => {\n        container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        setTimeout(() => {\n          const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n          container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          container.dispatchEvent(unmountEvent);\n          if (!unmountEvent.defaultPrevented) {\n            focus(previouslyFocusedElement ?? document.body, { select: true });\n          }\n          container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          focusScopesStack.remove(focusScope);\n        }, 0);\n      };\n    }\n  }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n  const handleKeyDown = React.useCallback(\n    (event) => {\n      if (!loop && !trapped) return;\n      if (focusScope.paused) return;\n      const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n      const focusedElement = document.activeElement;\n      if (isTabKey && focusedElement) {\n        const container2 = event.currentTarget;\n        const [first, last] = getTabbableEdges(container2);\n        const hasTabbableElementsInside = first && last;\n        if (!hasTabbableElementsInside) {\n          if (focusedElement === container2) event.preventDefault();\n        } else {\n          if (!event.shiftKey && focusedElement === last) {\n            event.preventDefault();\n            if (loop) focus(first, { select: true });\n          } else if (event.shiftKey && focusedElement === first) {\n            event.preventDefault();\n            if (loop) focus(last, { select: true });\n          }\n        }\n      }\n    },\n    [loop, trapped, focusScope.paused]\n  );\n  return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n  const previouslyFocusedElement = document.activeElement;\n  for (const candidate of candidates) {\n    focus(candidate, { select });\n    if (document.activeElement !== previouslyFocusedElement) return;\n  }\n}\nfunction getTabbableEdges(container) {\n  const candidates = getTabbableCandidates(container);\n  const first = findVisible(candidates, container);\n  const last = findVisible(candidates.reverse(), container);\n  return [first, last];\n}\nfunction getTabbableCandidates(container) {\n  const nodes = [];\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (node) => {\n      const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n      if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    }\n  });\n  while (walker.nextNode()) nodes.push(walker.currentNode);\n  return nodes;\n}\nfunction findVisible(elements, container) {\n  for (const element of elements) {\n    if (!isHidden(element, { upTo: container })) return element;\n  }\n}\nfunction isHidden(node, { upTo }) {\n  if (getComputedStyle(node).visibility === \"hidden\") return true;\n  while (node) {\n    if (upTo !== void 0 && node === upTo) return false;\n    if (getComputedStyle(node).display === \"none\") return true;\n    node = node.parentElement;\n  }\n  return false;\n}\nfunction isSelectableInput(element) {\n  return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n  if (element && element.focus) {\n    const previouslyFocusedElement = document.activeElement;\n    element.focus({ preventScroll: true });\n    if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n      element.select();\n  }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n  let stack = [];\n  return {\n    add(focusScope) {\n      const activeFocusScope = stack[0];\n      if (focusScope !== activeFocusScope) {\n        activeFocusScope?.pause();\n      }\n      stack = arrayRemove(stack, focusScope);\n      stack.unshift(focusScope);\n    },\n    remove(focusScope) {\n      stack = arrayRemove(stack, focusScope);\n      stack[0]?.resume();\n    }\n  };\n}\nfunction arrayRemove(array, item) {\n  const updatedArray = [...array];\n  const index = updatedArray.indexOf(item);\n  if (index !== -1) {\n    updatedArray.splice(index, 1);\n  }\n  return updatedArray;\n}\nfunction removeLinks(items) {\n  return items.filter((item) => item.tagName !== \"A\");\n}\nfunction noElementsRemoved(mutations) {\n  for (const mutation of mutations) {\n    if (mutation.removedNodes.length > 0) {\n     return false;\n    }\n  }\n  return true;\n}  \nvar Root = FocusScope;\nexport {\n  FocusScope,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\"useId\".toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n  const [id, setId] = React.useState(useReactId());\n  useLayoutEffect(() => {\n    if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n  }, [deterministicId]);\n  return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n  useId\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/portal/src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n  const { container: containerProp, ...portalProps } = props;\n  const [mounted, setMounted] = React.useState(false);\n  useLayoutEffect(() => setMounted(true), []);\n  const container = containerProp || mounted && globalThis?.document?.body;\n  return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n  Portal,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/presence/src/Presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// packages/react/presence/src/useStateMachine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n  return React.useReducer((state, event) => {\n    const nextState = machine[state][event];\n    return nextState ?? state;\n  }, initialState);\n}\n\n// packages/react/presence/src/Presence.tsx\nvar Presence = (props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n  const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n  const ref = useComposedRefs(presence.ref, getElementRef(child));\n  const forceMount = typeof children === \"function\";\n  return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n  const [node, setNode] = React2.useState();\n  const stylesRef = React2.useRef({});\n  const prevPresentRef = React2.useRef(present);\n  const prevAnimationNameRef = React2.useRef(\"none\");\n  const initialState = present ? \"mounted\" : \"unmounted\";\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: \"unmounted\",\n      ANIMATION_OUT: \"unmountSuspended\"\n    },\n    unmountSuspended: {\n      MOUNT: \"mounted\",\n      ANIMATION_END: \"unmounted\"\n    },\n    unmounted: {\n      MOUNT: \"mounted\"\n    }\n  });\n  React2.useEffect(() => {\n    const currentAnimationName = getAnimationName(stylesRef.current);\n    prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n  }, [state]);\n  useLayoutEffect(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n      if (present) {\n        send(\"MOUNT\");\n      } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n        send(\"UNMOUNT\");\n      } else {\n        const isAnimating = prevAnimationName !== currentAnimationName;\n        if (wasPresent && isAnimating) {\n          send(\"ANIMATION_OUT\");\n        } else {\n          send(\"UNMOUNT\");\n        }\n      }\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n  useLayoutEffect(() => {\n    if (node) {\n      let timeoutId;\n      const ownerWindow = node.ownerDocument.defaultView ?? window;\n      const handleAnimationEnd = (event) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n        if (event.target === node && isCurrentAnimation) {\n          send(\"ANIMATION_END\");\n          if (!prevPresentRef.current) {\n            const currentFillMode = node.style.animationFillMode;\n            node.style.animationFillMode = \"forwards\";\n            timeoutId = ownerWindow.setTimeout(() => {\n              if (node.style.animationFillMode === \"forwards\") {\n                node.style.animationFillMode = currentFillMode;\n              }\n            });\n          }\n        }\n      };\n      const handleAnimationStart = (event) => {\n        if (event.target === node) {\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      };\n      node.addEventListener(\"animationstart\", handleAnimationStart);\n      node.addEventListener(\"animationcancel\", handleAnimationEnd);\n      node.addEventListener(\"animationend\", handleAnimationEnd);\n      return () => {\n        ownerWindow.clearTimeout(timeoutId);\n        node.removeEventListener(\"animationstart\", handleAnimationStart);\n        node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n        node.removeEventListener(\"animationend\", handleAnimationEnd);\n      };\n    } else {\n      send(\"ANIMATION_END\");\n    }\n  }, [node, send]);\n  return {\n    isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n    ref: React2.useCallback((node2) => {\n      if (node2) stylesRef.current = getComputedStyle(node2);\n      setNode(node2);\n    }, [])\n  };\n}\nfunction getAnimationName(styles) {\n  return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\nexport {\n  Presence\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/primitive/src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n  \"a\",\n  \"button\",\n  \"div\",\n  \"form\",\n  \"h2\",\n  \"h3\",\n  \"img\",\n  \"input\",\n  \"label\",\n  \"li\",\n  \"nav\",\n  \"ol\",\n  \"p\",\n  \"span\",\n  \"svg\",\n  \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n  const Node = React.forwardRef((props, forwardedRef) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp = asChild ? Slot : node;\n    if (typeof window !== \"undefined\") {\n      window[Symbol.for(\"radix-ui\")] = true;\n    }\n    return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n  });\n  Node.displayName = `Primitive.${node}`;\n  return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n  Primitive,\n  Root,\n  dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/slot/src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar Slot = React.forwardRef((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n  const childrenArray = React.Children.toArray(children);\n  const slottable = childrenArray.find(isSlottable);\n  if (slottable) {\n    const newElement = slottable.props.children;\n    const newChildren = childrenArray.map((child) => {\n      if (child === slottable) {\n        if (React.Children.count(newElement) > 1) return React.Children.only(null);\n        return React.isValidElement(newElement) ? newElement.props.children : null;\n      } else {\n        return child;\n      }\n    });\n    return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n  }\n  return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n});\nSlot.displayName = \"Slot\";\nvar SlotClone = React.forwardRef((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n  if (React.isValidElement(children)) {\n    const childrenRef = getElementRef(children);\n    const props2 = mergeProps(slotProps, children.props);\n    if (children.type !== React.Fragment) {\n      props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n    }\n    return React.cloneElement(children, props2);\n  }\n  return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\nSlotClone.displayName = \"SlotClone\";\nvar Slottable = ({ children }) => {\n  return /* @__PURE__ */ jsx(Fragment2, { children });\n};\nfunction isSlottable(child) {\n  return React.isValidElement(child) && child.type === Slottable;\n}\nfunction mergeProps(slotProps, childProps) {\n  const overrideProps = { ...childProps };\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args) => {\n          childPropValue(...args);\n          slotPropValue(...args);\n        };\n      } else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    } else if (propName === \"style\") {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === \"className\") {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n    }\n  }\n  return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\nvar Root = Slot;\nexport {\n  Root,\n  Slot,\n  Slottable\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/useCallbackRef.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n  const callbackRef = React.useRef(callback);\n  React.useEffect(() => {\n    callbackRef.current = callback;\n  });\n  return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n  useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-controllable-state/src/useControllableState.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useControllableState({\n  prop,\n  defaultProp,\n  onChange = () => {\n  }\n}) {\n  const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n  const isControlled = prop !== void 0;\n  const value = isControlled ? prop : uncontrolledProp;\n  const handleChange = useCallbackRef(onChange);\n  const setValue = React.useCallback(\n    (nextValue) => {\n      if (isControlled) {\n        const setter = nextValue;\n        const value2 = typeof nextValue === \"function\" ? setter(prop) : nextValue;\n        if (value2 !== prop) handleChange(value2);\n      } else {\n        setUncontrolledProp(nextValue);\n      }\n    },\n    [isControlled, prop, setUncontrolledProp, handleChange]\n  );\n  return [value, setValue];\n}\nfunction useUncontrolledState({\n  defaultProp,\n  onChange\n}) {\n  const uncontrolledState = React.useState(defaultProp);\n  const [value] = uncontrolledState;\n  const prevValueRef = React.useRef(value);\n  const handleChange = useCallbackRef(onChange);\n  React.useEffect(() => {\n    if (prevValueRef.current !== value) {\n      handleChange(value);\n      prevValueRef.current = value;\n    }\n  }, [value, prevValueRef, handleChange]);\n  return uncontrolledState;\n}\nexport {\n  useControllableState\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/useLayoutEffect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = Boolean(globalThis?.document) ? React.useLayoutEffect : () => {\n};\nexport {\n  useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/useSize.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n  const [size, setSize] = React.useState(void 0);\n  useLayoutEffect(() => {\n    if (element) {\n      setSize({ width: element.offsetWidth, height: element.offsetHeight });\n      const resizeObserver = new ResizeObserver((entries) => {\n        if (!Array.isArray(entries)) {\n          return;\n        }\n        if (!entries.length) {\n          return;\n        }\n        const entry = entries[0];\n        let width;\n        let height;\n        if (\"borderBoxSize\" in entry) {\n          const borderSizeEntry = entry[\"borderBoxSize\"];\n          const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n          width = borderSize[\"inlineSize\"];\n          height = borderSize[\"blockSize\"];\n        } else {\n          width = element.offsetWidth;\n          height = element.offsetHeight;\n        }\n        setSize({ width, height });\n      });\n      resizeObserver.observe(element, { box: \"border-box\" });\n      return () => resizeObserver.unobserve(element);\n    } else {\n      setSize(void 0);\n    }\n  }, [element]);\n  return size;\n}\nexport {\n  useSize\n};\n//# sourceMappingURL=index.mjs.map\n","// 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/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","// src/queryObserver.ts\nimport {\n  isServer,\n  isValidTimeout,\n  noop,\n  replaceData,\n  resolveEnabled,\n  resolveStaleTime,\n  shallowEqualObjects,\n  timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { fetchState } from \"./query.js\";\nvar QueryObserver = class extends Subscribable {\n  constructor(client, options) {\n    super();\n    this.options = options;\n    this.#client = client;\n    this.#selectError = null;\n    this.bindMethods();\n    this.setOptions(options);\n  }\n  #client;\n  #currentQuery = void 0;\n  #currentQueryInitialState = void 0;\n  #currentResult = void 0;\n  #currentResultState;\n  #currentResultOptions;\n  #selectError;\n  #selectFn;\n  #selectResult;\n  // This property keeps track of the last query with defined data.\n  // It will be used to pass the previous data and query to the placeholder function between renders.\n  #lastQueryWithDefinedData;\n  #staleTimeoutId;\n  #refetchIntervalId;\n  #currentRefetchInterval;\n  #trackedProps = /* @__PURE__ */ new Set();\n  bindMethods() {\n    this.refetch = this.refetch.bind(this);\n  }\n  onSubscribe() {\n    if (this.listeners.size === 1) {\n      this.#currentQuery.addObserver(this);\n      if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n        this.#executeFetch();\n      } else {\n        this.updateResult();\n      }\n      this.#updateTimers();\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.destroy();\n    }\n  }\n  shouldFetchOnReconnect() {\n    return shouldFetchOn(\n      this.#currentQuery,\n      this.options,\n      this.options.refetchOnReconnect\n    );\n  }\n  shouldFetchOnWindowFocus() {\n    return shouldFetchOn(\n      this.#currentQuery,\n      this.options,\n      this.options.refetchOnWindowFocus\n    );\n  }\n  destroy() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.#clearStaleTimeout();\n    this.#clearRefetchInterval();\n    this.#currentQuery.removeObserver(this);\n  }\n  setOptions(options, notifyOptions) {\n    const prevOptions = this.options;\n    const prevQuery = this.#currentQuery;\n    this.options = this.#client.defaultQueryOptions(options);\n    if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n      throw new Error(\n        \"Expected enabled to be a boolean or a callback that returns a boolean\"\n      );\n    }\n    this.#updateQuery();\n    this.#currentQuery.setOptions(this.options);\n    if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n      this.#client.getQueryCache().notify({\n        type: \"observerOptionsUpdated\",\n        query: this.#currentQuery,\n        observer: this\n      });\n    }\n    const mounted = this.hasListeners();\n    if (mounted && shouldFetchOptionally(\n      this.#currentQuery,\n      prevQuery,\n      this.options,\n      prevOptions\n    )) {\n      this.#executeFetch();\n    }\n    this.updateResult(notifyOptions);\n    if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n      this.#updateStaleTimeout();\n    }\n    const nextRefetchInterval = this.#computeRefetchInterval();\n    if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n      this.#updateRefetchInterval(nextRefetchInterval);\n    }\n  }\n  getOptimisticResult(options) {\n    const query = this.#client.getQueryCache().build(this.#client, options);\n    const result = this.createResult(query, options);\n    if (shouldAssignObserverCurrentProperties(this, result)) {\n      this.#currentResult = result;\n      this.#currentResultOptions = this.options;\n      this.#currentResultState = this.#currentQuery.state;\n    }\n    return result;\n  }\n  getCurrentResult() {\n    return this.#currentResult;\n  }\n  trackResult(result, onPropTracked) {\n    const trackedResult = {};\n    Object.keys(result).forEach((key) => {\n      Object.defineProperty(trackedResult, key, {\n        configurable: false,\n        enumerable: true,\n        get: () => {\n          this.trackProp(key);\n          onPropTracked?.(key);\n          return result[key];\n        }\n      });\n    });\n    return trackedResult;\n  }\n  trackProp(key) {\n    this.#trackedProps.add(key);\n  }\n  getCurrentQuery() {\n    return this.#currentQuery;\n  }\n  refetch({ ...options } = {}) {\n    return this.fetch({\n      ...options\n    });\n  }\n  fetchOptimistic(options) {\n    const defaultedOptions = this.#client.defaultQueryOptions(options);\n    const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n    query.isFetchingOptimistic = true;\n    return query.fetch().then(() => this.createResult(query, defaultedOptions));\n  }\n  fetch(fetchOptions) {\n    return this.#executeFetch({\n      ...fetchOptions,\n      cancelRefetch: fetchOptions.cancelRefetch ?? true\n    }).then(() => {\n      this.updateResult();\n      return this.#currentResult;\n    });\n  }\n  #executeFetch(fetchOptions) {\n    this.#updateQuery();\n    let promise = this.#currentQuery.fetch(\n      this.options,\n      fetchOptions\n    );\n    if (!fetchOptions?.throwOnError) {\n      promise = promise.catch(noop);\n    }\n    return promise;\n  }\n  #updateStaleTimeout() {\n    this.#clearStaleTimeout();\n    const staleTime = resolveStaleTime(\n      this.options.staleTime,\n      this.#currentQuery\n    );\n    if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n      return;\n    }\n    const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n    const timeout = time + 1;\n    this.#staleTimeoutId = setTimeout(() => {\n      if (!this.#currentResult.isStale) {\n        this.updateResult();\n      }\n    }, timeout);\n  }\n  #computeRefetchInterval() {\n    return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n  }\n  #updateRefetchInterval(nextInterval) {\n    this.#clearRefetchInterval();\n    this.#currentRefetchInterval = nextInterval;\n    if (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n      return;\n    }\n    this.#refetchIntervalId = setInterval(() => {\n      if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n        this.#executeFetch();\n      }\n    }, this.#currentRefetchInterval);\n  }\n  #updateTimers() {\n    this.#updateStaleTimeout();\n    this.#updateRefetchInterval(this.#computeRefetchInterval());\n  }\n  #clearStaleTimeout() {\n    if (this.#staleTimeoutId) {\n      clearTimeout(this.#staleTimeoutId);\n      this.#staleTimeoutId = void 0;\n    }\n  }\n  #clearRefetchInterval() {\n    if (this.#refetchIntervalId) {\n      clearInterval(this.#refetchIntervalId);\n      this.#refetchIntervalId = void 0;\n    }\n  }\n  createResult(query, options) {\n    const prevQuery = this.#currentQuery;\n    const prevOptions = this.options;\n    const prevResult = this.#currentResult;\n    const prevResultState = this.#currentResultState;\n    const prevResultOptions = this.#currentResultOptions;\n    const queryChange = query !== prevQuery;\n    const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n    const { state } = query;\n    let newState = { ...state };\n    let isPlaceholderData = false;\n    let data;\n    if (options._optimisticResults) {\n      const mounted = this.hasListeners();\n      const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n      const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n      if (fetchOnMount || fetchOptionally) {\n        newState = {\n          ...newState,\n          ...fetchState(state.data, query.options)\n        };\n      }\n      if (options._optimisticResults === \"isRestoring\") {\n        newState.fetchStatus = \"idle\";\n      }\n    }\n    let { error, errorUpdatedAt, status } = newState;\n    if (options.select && newState.data !== void 0) {\n      if (prevResult && newState.data === prevResultState?.data && options.select === this.#selectFn) {\n        data = this.#selectResult;\n      } else {\n        try {\n          this.#selectFn = options.select;\n          data = options.select(newState.data);\n          data = replaceData(prevResult?.data, data, options);\n          this.#selectResult = data;\n          this.#selectError = null;\n        } catch (selectError) {\n          this.#selectError = selectError;\n        }\n      }\n    } else {\n      data = newState.data;\n    }\n    if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n      let placeholderData;\n      if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n        placeholderData = prevResult.data;\n      } else {\n        placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n          this.#lastQueryWithDefinedData?.state.data,\n          this.#lastQueryWithDefinedData\n        ) : options.placeholderData;\n        if (options.select && placeholderData !== void 0) {\n          try {\n            placeholderData = options.select(placeholderData);\n            this.#selectError = null;\n          } catch (selectError) {\n            this.#selectError = selectError;\n          }\n        }\n      }\n      if (placeholderData !== void 0) {\n        status = \"success\";\n        data = replaceData(\n          prevResult?.data,\n          placeholderData,\n          options\n        );\n        isPlaceholderData = true;\n      }\n    }\n    if (this.#selectError) {\n      error = this.#selectError;\n      data = this.#selectResult;\n      errorUpdatedAt = Date.now();\n      status = \"error\";\n    }\n    const isFetching = newState.fetchStatus === \"fetching\";\n    const isPending = status === \"pending\";\n    const isError = status === \"error\";\n    const isLoading = isPending && isFetching;\n    const hasData = data !== void 0;\n    const result = {\n      status,\n      fetchStatus: newState.fetchStatus,\n      isPending,\n      isSuccess: status === \"success\",\n      isError,\n      isInitialLoading: isLoading,\n      isLoading,\n      data,\n      dataUpdatedAt: newState.dataUpdatedAt,\n      error,\n      errorUpdatedAt,\n      failureCount: newState.fetchFailureCount,\n      failureReason: newState.fetchFailureReason,\n      errorUpdateCount: newState.errorUpdateCount,\n      isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n      isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n      isFetching,\n      isRefetching: isFetching && !isPending,\n      isLoadingError: isError && !hasData,\n      isPaused: newState.fetchStatus === \"paused\",\n      isPlaceholderData,\n      isRefetchError: isError && hasData,\n      isStale: isStale(query, options),\n      refetch: this.refetch\n    };\n    return result;\n  }\n  updateResult(notifyOptions) {\n    const prevResult = this.#currentResult;\n    const nextResult = this.createResult(this.#currentQuery, this.options);\n    this.#currentResultState = this.#currentQuery.state;\n    this.#currentResultOptions = this.options;\n    if (this.#currentResultState.data !== void 0) {\n      this.#lastQueryWithDefinedData = this.#currentQuery;\n    }\n    if (shallowEqualObjects(nextResult, prevResult)) {\n      return;\n    }\n    this.#currentResult = nextResult;\n    const defaultNotifyOptions = {};\n    const shouldNotifyListeners = () => {\n      if (!prevResult) {\n        return true;\n      }\n      const { notifyOnChangeProps } = this.options;\n      const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n      if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n        return true;\n      }\n      const includedProps = new Set(\n        notifyOnChangePropsValue ?? this.#trackedProps\n      );\n      if (this.options.throwOnError) {\n        includedProps.add(\"error\");\n      }\n      return Object.keys(this.#currentResult).some((key) => {\n        const typedKey = key;\n        const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n        return changed && includedProps.has(typedKey);\n      });\n    };\n    if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n      defaultNotifyOptions.listeners = true;\n    }\n    this.#notify({ ...defaultNotifyOptions, ...notifyOptions });\n  }\n  #updateQuery() {\n    const query = this.#client.getQueryCache().build(this.#client, this.options);\n    if (query === this.#currentQuery) {\n      return;\n    }\n    const prevQuery = this.#currentQuery;\n    this.#currentQuery = query;\n    this.#currentQueryInitialState = query.state;\n    if (this.hasListeners()) {\n      prevQuery?.removeObserver(this);\n      query.addObserver(this);\n    }\n  }\n  onQueryUpdate() {\n    this.updateResult();\n    if (this.hasListeners()) {\n      this.#updateTimers();\n    }\n  }\n  #notify(notifyOptions) {\n    notifyManager.batch(() => {\n      if (notifyOptions.listeners) {\n        this.listeners.forEach((listener) => {\n          listener(this.#currentResult);\n        });\n      }\n      this.#client.getQueryCache().notify({\n        query: this.#currentQuery,\n        type: \"observerResultsUpdated\"\n      });\n    });\n  }\n};\nfunction shouldLoadOnMount(query, options) {\n  return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n  return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n  if (resolveEnabled(options.enabled, query) !== false) {\n    const value = typeof field === \"function\" ? field(query) : field;\n    return value === \"always\" || value !== false && isStale(query, options);\n  }\n  return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n  return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n  return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n  if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n    return true;\n  }\n  return false;\n}\nexport {\n  QueryObserver\n};\n//# sourceMappingURL=queryObserver.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/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","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n  let isReset = false;\n  return {\n    clearReset: () => {\n      isReset = false;\n    },\n    reset: () => {\n      isReset = true;\n    },\n    isReset: () => {\n      return isReset;\n    }\n  };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n  children\n}) => {\n  const [value] = React.useState(() => createValue());\n  return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n  QueryErrorResetBoundary,\n  useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n  if (defaultedOptions.suspense) {\n    if (typeof defaultedOptions.staleTime !== \"number\") {\n      defaultedOptions.staleTime = 1e3;\n    }\n    if (typeof defaultedOptions.gcTime === \"number\") {\n      defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, 1e3);\n    }\n  }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n  errorResetBoundary.clearReset();\n});\nexport {\n  defaultThrowOnError,\n  ensureSuspenseTimers,\n  fetchOptimistic,\n  shouldSuspend,\n  willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/isRestoring.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n  IsRestoringProvider,\n  useIsRestoring\n};\n//# sourceMappingURL=isRestoring.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"./utils.js\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n  if (options.suspense || options.throwOnError) {\n    if (!errorResetBoundary.isReset()) {\n      options.retryOnMount = false;\n    }\n  }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n  React.useEffect(() => {\n    errorResetBoundary.clearReset();\n  }, [errorResetBoundary]);\n};\nvar getHasError = ({\n  result,\n  errorResetBoundary,\n  throwOnError,\n  query\n}) => {\n  return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && shouldThrowError(throwOnError, [result.error, query]);\n};\nexport {\n  ensurePreventErrorBoundaryRetry,\n  getHasError,\n  useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { notifyManager } from \"@tanstack/query-core\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./isRestoring.js\";\nimport {\n  ensurePreventErrorBoundaryRetry,\n  getHasError,\n  useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport {\n  ensureSuspenseTimers,\n  fetchOptimistic,\n  shouldSuspend\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (typeof options !== \"object\" || Array.isArray(options)) {\n      throw new Error(\n        'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n      );\n    }\n  }\n  const client = useQueryClient(queryClient);\n  const isRestoring = useIsRestoring();\n  const errorResetBoundary = useQueryErrorResetBoundary();\n  const defaultedOptions = client.defaultQueryOptions(options);\n  client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n    defaultedOptions\n  );\n  defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n  ensureSuspenseTimers(defaultedOptions);\n  ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n  useClearResetErrorBoundary(errorResetBoundary);\n  const [observer] = React.useState(\n    () => new Observer(\n      client,\n      defaultedOptions\n    )\n  );\n  const result = observer.getOptimisticResult(defaultedOptions);\n  React.useSyncExternalStore(\n    React.useCallback(\n      (onStoreChange) => {\n        const unsubscribe = isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange));\n        observer.updateResult();\n        return unsubscribe;\n      },\n      [observer, isRestoring]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  React.useEffect(() => {\n    observer.setOptions(defaultedOptions, { listeners: false });\n  }, [defaultedOptions, observer]);\n  if (shouldSuspend(defaultedOptions, result)) {\n    throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n  }\n  if (getHasError({\n    result,\n    errorResetBoundary,\n    throwOnError: defaultedOptions.throwOnError,\n    query: client.getQueryCache().get(defaultedOptions.queryHash)\n  })) {\n    throw result.error;\n  }\n  ;\n  client.getDefaultOptions().queries?._experimental_afterQuery?.(\n    defaultedOptions,\n    result\n  );\n  return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n  useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n  return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n  useQuery\n};\n//# sourceMappingURL=useQuery.js.map","// src/utils.ts\nfunction shouldThrowError(throwError, params) {\n  if (typeof throwError === \"function\") {\n    return throwError(...params);\n  }\n  return !!throwError;\n}\nfunction noop() {\n}\nexport {\n  noop,\n  shouldThrowError\n};\n//# sourceMappingURL=utils.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","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n  const normalize = constructFrom.bind(\n    null,\n    context || dates.find((date) => typeof date === \"object\"),\n  );\n  return dates.map(normalize);\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 * 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 */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const laterStartOfDay = startOfDay(laterDate_);\n  const earlierStartOfDay = startOfDay(earlierDate_);\n\n  const laterTimestamp =\n    +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n  const earlierTimestamp =\n    +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n","export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst 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};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","const 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};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// 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.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst 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: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst 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};\n\nconst 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\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n","export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // [TODO] -- I challenge you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // [TODO] -- I challenge you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n","export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // [TODO] I challenge you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst 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};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst 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};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst 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};\nconst 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};\n\nconst 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};\nconst 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};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year 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 year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setFullYear(date_.getFullYear(), 0, 1);\n  date_.setHours(0, 0, 0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_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 original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n  return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(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}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_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 original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n  const year = getISOWeekYear(date, options);\n  const fourthOfJanuary = constructFrom(options?.in || date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (+_date >= +startOfNextYear) {\n    return year + 1;\n  } else if (+_date >= +startOfThisYear) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\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.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(options?.in || date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\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\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\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\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! | Long localized time            |  P! | Long localized date            |\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 `format` 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 * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(+date / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    return addLeadingZeros(+date, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\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 * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\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](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 * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// 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\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters 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 * (see the last example)\n *\n * Format of the 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 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\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)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\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 * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\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)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\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              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | 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]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | 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)       | 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 * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\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 *\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 * 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 (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. 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` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\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 [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. 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 *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `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://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date, options?.in);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\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 { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week 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 - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\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","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n    !Array.isArray(value) &&\n    isObjectType(value) &&\n    !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n    ? isCheckBoxInput(event.target)\n        ? event.target.checked\n        : event.target.value\n    : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar isPlainObject = (tempObject) => {\n    const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n    return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n    typeof window.HTMLElement !== 'undefined' &&\n    typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n    let copy;\n    const isArray = Array.isArray(data);\n    const isFileListInstance = typeof FileList !== 'undefined' ? data instanceof FileList : false;\n    if (data instanceof Date) {\n        copy = new Date(data);\n    }\n    else if (data instanceof Set) {\n        copy = new Set(data);\n    }\n    else if (!(isWeb && (data instanceof Blob || isFileListInstance)) &&\n        (isArray || isObject(data))) {\n        copy = isArray ? [] : {};\n        if (!isArray && !isPlainObject(data)) {\n            copy = data;\n        }\n        else {\n            for (const key in data) {\n                if (data.hasOwnProperty(key)) {\n                    copy[key] = cloneObject(data[key]);\n                }\n            }\n        }\n    }\n    else {\n        return data;\n    }\n    return copy;\n}\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (object, path, defaultValue) => {\n    if (!path || !isObject(object)) {\n        return defaultValue;\n    }\n    const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n    return isUndefined(result) || result === object\n        ? isUndefined(object[path])\n            ? defaultValue\n            : object[path]\n        : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar set = (object, path, value) => {\n    let index = -1;\n    const tempPath = isKey(path) ? [path] : stringToPath(path);\n    const length = tempPath.length;\n    const lastIndex = length - 1;\n    while (++index < length) {\n        const key = tempPath[index];\n        let newValue = value;\n        if (index !== lastIndex) {\n            const objValue = object[key];\n            newValue =\n                isObject(objValue) || Array.isArray(objValue)\n                    ? objValue\n                    : !isNaN(+tempPath[index + 1])\n                        ? []\n                        : {};\n        }\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n            return;\n        }\n        object[key] = newValue;\n        object = object[key];\n    }\n    return object;\n};\n\nconst EVENTS = {\n    BLUR: 'blur',\n    FOCUS_OUT: 'focusout',\n    CHANGE: 'change',\n};\nconst VALIDATION_MODE = {\n    onBlur: 'onBlur',\n    onChange: 'onChange',\n    onSubmit: 'onSubmit',\n    onTouched: 'onTouched',\n    all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n    max: 'max',\n    min: 'min',\n    maxLength: 'maxLength',\n    minLength: 'minLength',\n    pattern: 'pattern',\n    required: 'required',\n    validate: 'validate',\n};\n\nconst HookFormContext = React.createContext(null);\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n    const { children, ...data } = props;\n    return (React.createElement(HookFormContext.Provider, { value: data }, children));\n};\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n    const result = {\n        defaultValues: control._defaultValues,\n    };\n    for (const key in formState) {\n        Object.defineProperty(result, key, {\n            get: () => {\n                const _key = key;\n                if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n                    control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n                }\n                localProxyFormState && (localProxyFormState[_key] = true);\n                return formState[_key];\n            },\n        });\n    }\n    return result;\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n    updateFormState(formStateData);\n    const { name, ...formState } = formStateData;\n    return (isEmptyObject(formState) ||\n        Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n        Object.keys(formState).find((key) => _proxyFormState[key] ===\n            (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n    !signalName ||\n    name === signalName ||\n    convertToArrayPayload(name).some((currentName) => currentName &&\n        (exact\n            ? currentName === signalName\n            : currentName.startsWith(signalName) ||\n                signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\n    const _props = React.useRef(props);\n    _props.current = props;\n    React.useEffect(() => {\n        const subscription = !props.disabled &&\n            _props.current.subject &&\n            _props.current.subject.subscribe({\n                next: _props.current.next,\n            });\n        return () => {\n            subscription && subscription.unsubscribe();\n        };\n    }, [props.disabled]);\n}\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, control } = useForm({\n *     defaultValues: {\n *     firstName: \"firstName\"\n *   }});\n *   const { dirtyFields } = useFormState({\n *     control\n *   });\n *   const onSubmit = (data) => console.log(data);\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input {...register(\"firstName\")} placeholder=\"First Name\" />\n *       {dirtyFields.firstName && <p>Field is dirty.</p>}\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useFormState(props) {\n    const methods = useFormContext();\n    const { control = methods.control, disabled, name, exact } = props || {};\n    const [formState, updateFormState] = React.useState(control._formState);\n    const _mounted = React.useRef(true);\n    const _localProxyFormState = React.useRef({\n        isDirty: false,\n        isLoading: false,\n        dirtyFields: false,\n        touchedFields: false,\n        validatingFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    });\n    const _name = React.useRef(name);\n    _name.current = name;\n    useSubscribe({\n        disabled,\n        next: (value) => _mounted.current &&\n            shouldSubscribeByName(_name.current, value.name, exact) &&\n            shouldRenderFormState(value, _localProxyFormState.current, control._updateFormState) &&\n            updateFormState({\n                ...control._formState,\n                ...value,\n            }),\n        subject: control._subjects.state,\n    });\n    React.useEffect(() => {\n        _mounted.current = true;\n        _localProxyFormState.current.isValid && control._updateValid(true);\n        return () => {\n            _mounted.current = false;\n        };\n    }, [control]);\n    return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n    if (isString(names)) {\n        isGlobal && _names.watch.add(names);\n        return get(formValues, names, defaultValue);\n    }\n    if (Array.isArray(names)) {\n        return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)));\n    }\n    isGlobal && (_names.watchAll = true);\n    return formValues;\n};\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n *   name: \"fieldName\"\n *   control,\n * })\n * ```\n */\nfunction useWatch(props) {\n    const methods = useFormContext();\n    const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\n    const _name = React.useRef(name);\n    _name.current = name;\n    useSubscribe({\n        disabled,\n        subject: control._subjects.values,\n        next: (formState) => {\n            if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n                updateValue(cloneObject(generateWatchOutput(_name.current, control._names, formState.values || control._formValues, false, defaultValue)));\n            }\n        },\n    });\n    const [value, updateValue] = React.useState(control._getWatch(name, defaultValue));\n    React.useEffect(() => control._removeUnmounted());\n    return value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n *   const { field, fieldState, formState } = useController(props);\n *   return (\n *     <div>\n *       <input {...field} placeholder={props.name} />\n *       <p>{fieldState.isTouched && \"Touched\"}</p>\n *       <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *     </div>\n *   );\n * }\n * ```\n */\nfunction useController(props) {\n    const methods = useFormContext();\n    const { name, disabled, control = methods.control, shouldUnregister } = props;\n    const isArrayField = isNameInFieldArray(control._names.array, name);\n    const value = useWatch({\n        control,\n        name,\n        defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\n        exact: true,\n    });\n    const formState = useFormState({\n        control,\n        name,\n        exact: true,\n    });\n    const _registerProps = React.useRef(control.register(name, {\n        ...props.rules,\n        value,\n        ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n    }));\n    const fieldState = React.useMemo(() => Object.defineProperties({}, {\n        invalid: {\n            enumerable: true,\n            get: () => !!get(formState.errors, name),\n        },\n        isDirty: {\n            enumerable: true,\n            get: () => !!get(formState.dirtyFields, name),\n        },\n        isTouched: {\n            enumerable: true,\n            get: () => !!get(formState.touchedFields, name),\n        },\n        isValidating: {\n            enumerable: true,\n            get: () => !!get(formState.validatingFields, name),\n        },\n        error: {\n            enumerable: true,\n            get: () => get(formState.errors, name),\n        },\n    }), [formState, name]);\n    const field = React.useMemo(() => ({\n        name,\n        value,\n        ...(isBoolean(disabled) || formState.disabled\n            ? { disabled: formState.disabled || disabled }\n            : {}),\n        onChange: (event) => _registerProps.current.onChange({\n            target: {\n                value: getEventValue(event),\n                name: name,\n            },\n            type: EVENTS.CHANGE,\n        }),\n        onBlur: () => _registerProps.current.onBlur({\n            target: {\n                value: get(control._formValues, name),\n                name: name,\n            },\n            type: EVENTS.BLUR,\n        }),\n        ref: (elm) => {\n            const field = get(control._fields, name);\n            if (field && elm) {\n                field._f.ref = {\n                    focus: () => elm.focus(),\n                    select: () => elm.select(),\n                    setCustomValidity: (message) => elm.setCustomValidity(message),\n                    reportValidity: () => elm.reportValidity(),\n                };\n            }\n        },\n    }), [\n        name,\n        control._formValues,\n        disabled,\n        formState.disabled,\n        value,\n        control._fields,\n    ]);\n    React.useEffect(() => {\n        const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n        const updateMounted = (name, value) => {\n            const field = get(control._fields, name);\n            if (field && field._f) {\n                field._f.mount = value;\n            }\n        };\n        updateMounted(name, true);\n        if (_shouldUnregisterField) {\n            const value = cloneObject(get(control._options.defaultValues, name));\n            set(control._defaultValues, name, value);\n            if (isUndefined(get(control._formValues, name))) {\n                set(control._formValues, name, value);\n            }\n        }\n        !isArrayField && control.register(name);\n        return () => {\n            (isArrayField\n                ? _shouldUnregisterField && !control._state.action\n                : _shouldUnregisterField)\n                ? control.unregister(name)\n                : updateMounted(name, false);\n        };\n    }, [name, control, isArrayField, shouldUnregister]);\n    React.useEffect(() => {\n        control._updateDisabledField({\n            disabled,\n            fields: control._fields,\n            name,\n        });\n    }, [disabled, name, control]);\n    return React.useMemo(() => ({\n        field,\n        formState,\n        fieldState,\n    }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control } = useForm<FormValues>({\n *     defaultValues: {\n *       test: \"\"\n *     }\n *   });\n *\n *   return (\n *     <form>\n *       <Controller\n *         control={control}\n *         name=\"test\"\n *         render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n *           <>\n *             <input\n *               onChange={onChange} // send value to hook form\n *               onBlur={onBlur} // notify when input is touched\n *               value={value} // return updated value\n *               ref={ref} // set ref for focus management\n *             />\n *             <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *             <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n *           </>\n *         )}\n *       />\n *     </form>\n *   );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n    const output = {};\n    for (const key of Object.keys(obj)) {\n        if (isObjectType(obj[key]) && obj[key] !== null) {\n            const nested = flatten(obj[key]);\n            for (const nestedKey of Object.keys(nested)) {\n                output[`${key}.${nestedKey}`] = nested[nestedKey];\n            }\n        }\n        else {\n            output[key] = obj[key];\n        }\n    }\n    return output;\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control, formState: { errors } } = useForm();\n *\n *   return (\n *     <Form action=\"/api\" control={control}>\n *       <input {...register(\"name\")} />\n *       <p>{errors?.root?.server && 'Server error'}</p>\n *       <button>Submit</button>\n *     </Form>\n *   );\n * }\n * ```\n */\nfunction Form(props) {\n    const methods = useFormContext();\n    const [mounted, setMounted] = React.useState(false);\n    const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n    const submit = async (event) => {\n        let hasError = false;\n        let type = '';\n        await control.handleSubmit(async (data) => {\n            const formData = new FormData();\n            let formDataJson = '';\n            try {\n                formDataJson = JSON.stringify(data);\n            }\n            catch (_a) { }\n            const flattenFormValues = flatten(control._formValues);\n            for (const key in flattenFormValues) {\n                formData.append(key, flattenFormValues[key]);\n            }\n            if (onSubmit) {\n                await onSubmit({\n                    data,\n                    event,\n                    method,\n                    formData,\n                    formDataJson,\n                });\n            }\n            if (action) {\n                try {\n                    const shouldStringifySubmissionData = [\n                        headers && headers['Content-Type'],\n                        encType,\n                    ].some((value) => value && value.includes('json'));\n                    const response = await fetch(String(action), {\n                        method,\n                        headers: {\n                            ...headers,\n                            ...(encType ? { 'Content-Type': encType } : {}),\n                        },\n                        body: shouldStringifySubmissionData ? formDataJson : formData,\n                    });\n                    if (response &&\n                        (validateStatus\n                            ? !validateStatus(response.status)\n                            : response.status < 200 || response.status >= 300)) {\n                        hasError = true;\n                        onError && onError({ response });\n                        type = String(response.status);\n                    }\n                    else {\n                        onSuccess && onSuccess({ response });\n                    }\n                }\n                catch (error) {\n                    hasError = true;\n                    onError && onError({ error });\n                }\n            }\n        })(event);\n        if (hasError && props.control) {\n            props.control._subjects.state.next({\n                isSubmitSuccessful: false,\n            });\n            props.control.setError('root.server', {\n                type,\n            });\n        }\n    };\n    React.useEffect(() => {\n        setMounted(true);\n    }, []);\n    return render ? (React.createElement(React.Fragment, null, render({\n        submit,\n    }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n    ? {\n        ...errors[name],\n        types: {\n            ...(errors[name] && errors[name].types ? errors[name].types : {}),\n            [type]: message || true,\n        },\n    }\n    : {};\n\nvar generateId = () => {\n    const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        const r = (Math.random() * 16 + d) % 16 | 0;\n        return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n    });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n    ? options.focusName ||\n        `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n    : '';\n\nvar getValidationModes = (mode) => ({\n    isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n    isOnBlur: mode === VALIDATION_MODE.onBlur,\n    isOnChange: mode === VALIDATION_MODE.onChange,\n    isOnAll: mode === VALIDATION_MODE.all,\n    isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n    (_names.watchAll ||\n        _names.watch.has(name) ||\n        [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n            /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n    for (const key of fieldsNames || Object.keys(fields)) {\n        const field = get(fields, key);\n        if (field) {\n            const { _f, ...currentField } = field;\n            if (_f) {\n                if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n                    return true;\n                }\n                else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n                    return true;\n                }\n                else {\n                    if (iterateFieldsByAction(currentField, action)) {\n                        break;\n                    }\n                }\n            }\n            else if (isObject(currentField)) {\n                if (iterateFieldsByAction(currentField, action)) {\n                    break;\n                }\n            }\n        }\n    }\n    return;\n};\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n    const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n    set(fieldArrayErrors, 'root', error[name]);\n    set(errors, name, fieldArrayErrors);\n    return errors;\n};\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isHTMLElement = (value) => {\n    if (!isWeb) {\n        return false;\n    }\n    const owner = value ? value.ownerDocument : 0;\n    return (value instanceof\n        (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMessage = (value) => isString(value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRegex = (value) => value instanceof RegExp;\n\nconst defaultResult = {\n    value: false,\n    isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n    if (Array.isArray(options)) {\n        if (options.length > 1) {\n            const values = options\n                .filter((option) => option && option.checked && !option.disabled)\n                .map((option) => option.value);\n            return { value: values, isValid: !!values.length };\n        }\n        return options[0].checked && !options[0].disabled\n            ? // @ts-expect-error expected to work in the browser\n                options[0].attributes && !isUndefined(options[0].attributes.value)\n                    ? isUndefined(options[0].value) || options[0].value === ''\n                        ? validResult\n                        : { value: options[0].value, isValid: true }\n                    : validResult\n            : defaultResult;\n    }\n    return defaultResult;\n};\n\nconst defaultReturn = {\n    isValid: false,\n    value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n    ? options.reduce((previous, option) => option && option.checked && !option.disabled\n        ? {\n            isValid: true,\n            value: option.value,\n        }\n        : previous, defaultReturn)\n    : defaultReturn;\n\nfunction getValidateError(result, ref, type = 'validate') {\n    if (isMessage(result) ||\n        (Array.isArray(result) && result.every(isMessage)) ||\n        (isBoolean(result) && !result)) {\n        return {\n            type,\n            message: isMessage(result) ? result : '',\n            ref,\n        };\n    }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n    ? validationData\n    : {\n        value: validationData,\n        message: '',\n    };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n    const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n    const inputValue = get(formValues, name);\n    if (!mount || disabledFieldNames.has(name)) {\n        return {};\n    }\n    const inputRef = refs ? refs[0] : ref;\n    const setCustomValidity = (message) => {\n        if (shouldUseNativeValidation && inputRef.reportValidity) {\n            inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n            inputRef.reportValidity();\n        }\n    };\n    const error = {};\n    const isRadio = isRadioInput(ref);\n    const isCheckBox = isCheckBoxInput(ref);\n    const isRadioOrCheckbox = isRadio || isCheckBox;\n    const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n        isUndefined(ref.value) &&\n        isUndefined(inputValue)) ||\n        (isHTMLElement(ref) && ref.value === '') ||\n        inputValue === '' ||\n        (Array.isArray(inputValue) && !inputValue.length);\n    const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n    const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n        const message = exceedMax ? maxLengthMessage : minLengthMessage;\n        error[name] = {\n            type: exceedMax ? maxType : minType,\n            message,\n            ref,\n            ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n        };\n    };\n    if (isFieldArray\n        ? !Array.isArray(inputValue) || !inputValue.length\n        : required &&\n            ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n                (isBoolean(inputValue) && !inputValue) ||\n                (isCheckBox && !getCheckboxValue(refs).isValid) ||\n                (isRadio && !getRadioValue(refs).isValid))) {\n        const { value, message } = isMessage(required)\n            ? { value: !!required, message: required }\n            : getValueAndMessage(required);\n        if (value) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.required,\n                message,\n                ref: inputRef,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n        let exceedMax;\n        let exceedMin;\n        const maxOutput = getValueAndMessage(max);\n        const minOutput = getValueAndMessage(min);\n        if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n            const valueNumber = ref.valueAsNumber ||\n                (inputValue ? +inputValue : inputValue);\n            if (!isNullOrUndefined(maxOutput.value)) {\n                exceedMax = valueNumber > maxOutput.value;\n            }\n            if (!isNullOrUndefined(minOutput.value)) {\n                exceedMin = valueNumber < minOutput.value;\n            }\n        }\n        else {\n            const valueDate = ref.valueAsDate || new Date(inputValue);\n            const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n            const isTime = ref.type == 'time';\n            const isWeek = ref.type == 'week';\n            if (isString(maxOutput.value) && inputValue) {\n                exceedMax = isTime\n                    ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n                    : isWeek\n                        ? inputValue > maxOutput.value\n                        : valueDate > new Date(maxOutput.value);\n            }\n            if (isString(minOutput.value) && inputValue) {\n                exceedMin = isTime\n                    ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n                    : isWeek\n                        ? inputValue < minOutput.value\n                        : valueDate < new Date(minOutput.value);\n            }\n        }\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if ((maxLength || minLength) &&\n        !isEmpty &&\n        (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n        const maxLengthOutput = getValueAndMessage(maxLength);\n        const minLengthOutput = getValueAndMessage(minLength);\n        const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n            inputValue.length > +maxLengthOutput.value;\n        const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n            inputValue.length < +minLengthOutput.value;\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if (pattern && !isEmpty && isString(inputValue)) {\n        const { value: patternValue, message } = getValueAndMessage(pattern);\n        if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.pattern,\n                message,\n                ref,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (validate) {\n        if (isFunction(validate)) {\n            const result = await validate(inputValue, formValues);\n            const validateError = getValidateError(result, inputRef);\n            if (validateError) {\n                error[name] = {\n                    ...validateError,\n                    ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n                };\n                if (!validateAllFieldCriteria) {\n                    setCustomValidity(validateError.message);\n                    return error;\n                }\n            }\n        }\n        else if (isObject(validate)) {\n            let validationResult = {};\n            for (const key in validate) {\n                if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n                    break;\n                }\n                const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n                if (validateError) {\n                    validationResult = {\n                        ...validateError,\n                        ...appendErrorsCurry(key, validateError.message),\n                    };\n                    setCustomValidity(validateError.message);\n                    if (validateAllFieldCriteria) {\n                        error[name] = validationResult;\n                    }\n                }\n            }\n            if (!isEmptyObject(validationResult)) {\n                error[name] = {\n                    ref: inputRef,\n                    ...validationResult,\n                };\n                if (!validateAllFieldCriteria) {\n                    return error;\n                }\n            }\n        }\n    }\n    setCustomValidity(true);\n    return error;\n};\n\nvar appendAt = (data, value) => [\n    ...data,\n    ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n    return [\n        ...data.slice(0, index),\n        ...convertToArrayPayload(value),\n        ...data.slice(index),\n    ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n    if (!Array.isArray(data)) {\n        return [];\n    }\n    if (isUndefined(data[to])) {\n        data[to] = undefined;\n    }\n    data.splice(to, 0, data.splice(from, 1)[0]);\n    return data;\n};\n\nvar prependAt = (data, value) => [\n    ...convertToArrayPayload(value),\n    ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n    let i = 0;\n    const temp = [...data];\n    for (const index of indexes) {\n        temp.splice(index - i, 1);\n        i++;\n    }\n    return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n    ? []\n    : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n    [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nfunction baseGet(object, updatePath) {\n    const length = updatePath.slice(0, -1).length;\n    let index = 0;\n    while (index < length) {\n        object = isUndefined(object) ? index++ : object[updatePath[index++]];\n    }\n    return object;\n}\nfunction isEmptyArray(obj) {\n    for (const key in obj) {\n        if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction unset(object, path) {\n    const paths = Array.isArray(path)\n        ? path\n        : isKey(path)\n            ? [path]\n            : stringToPath(path);\n    const childObject = paths.length === 1 ? object : baseGet(object, paths);\n    const index = paths.length - 1;\n    const key = paths[index];\n    if (childObject) {\n        delete childObject[key];\n    }\n    if (index !== 0 &&\n        ((isObject(childObject) && isEmptyObject(childObject)) ||\n            (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n        unset(object, paths.slice(0, -1));\n    }\n    return object;\n}\n\nvar updateAt = (fieldValues, index, value) => {\n    fieldValues[index] = value;\n    return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n *     defaultValues: {\n *       test: []\n *     }\n *   });\n *   const { fields, append } = useFieldArray({\n *     control,\n *     name: \"test\"\n *   });\n *\n *   return (\n *     <form onSubmit={handleSubmit(data => console.log(data))}>\n *       {fields.map((item, index) => (\n *          <input key={item.id} {...register(`test.${index}.firstName`)}  />\n *       ))}\n *       <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n *         append\n *       </button>\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n    const methods = useFormContext();\n    const { control = methods.control, name, keyName = 'id', shouldUnregister, rules, } = props;\n    const [fields, setFields] = React.useState(control._getFieldArray(name));\n    const ids = React.useRef(control._getFieldArray(name).map(generateId));\n    const _fieldIds = React.useRef(fields);\n    const _name = React.useRef(name);\n    const _actioned = React.useRef(false);\n    _name.current = name;\n    _fieldIds.current = fields;\n    control._names.array.add(name);\n    rules &&\n        control.register(name, rules);\n    useSubscribe({\n        next: ({ values, name: fieldArrayName, }) => {\n            if (fieldArrayName === _name.current || !fieldArrayName) {\n                const fieldValues = get(values, _name.current);\n                if (Array.isArray(fieldValues)) {\n                    setFields(fieldValues);\n                    ids.current = fieldValues.map(generateId);\n                }\n            }\n        },\n        subject: control._subjects.array,\n    });\n    const updateValues = React.useCallback((updatedFieldArrayValues) => {\n        _actioned.current = true;\n        control._updateFieldArray(name, updatedFieldArrayValues);\n    }, [control, name]);\n    const append = (value, options) => {\n        const appendValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n        control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n        ids.current = appendAt(ids.current, appendValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const prepend = (value, options) => {\n        const prependValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n        control._names.focus = getFocusFieldName(name, 0, options);\n        ids.current = prependAt(ids.current, prependValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const remove = (index) => {\n        const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n        ids.current = removeArrayAt(ids.current, index);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        !Array.isArray(get(control._fields, name)) &&\n            set(control._fields, name, undefined);\n        control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n            argA: index,\n        });\n    };\n    const insert$1 = (index, value, options) => {\n        const insertValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n        control._names.focus = getFocusFieldName(name, index, options);\n        ids.current = insert(ids.current, index, insertValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._updateFieldArray(name, updatedFieldArrayValues, insert, {\n            argA: index,\n            argB: fillEmptyArray(value),\n        });\n    };\n    const swap = (indexA, indexB) => {\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n        swapArrayAt(ids.current, indexA, indexB);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n            argA: indexA,\n            argB: indexB,\n        }, false);\n    };\n    const move = (from, to) => {\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        moveArrayAt(updatedFieldArrayValues, from, to);\n        moveArrayAt(ids.current, from, to);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n            argA: from,\n            argB: to,\n        }, false);\n    };\n    const update = (index, value) => {\n        const updateValue = cloneObject(value);\n        const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n        ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n        updateValues(updatedFieldArrayValues);\n        setFields([...updatedFieldArrayValues]);\n        control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\n            argA: index,\n            argB: updateValue,\n        }, true, false);\n    };\n    const replace = (value) => {\n        const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n        ids.current = updatedFieldArrayValues.map(generateId);\n        updateValues([...updatedFieldArrayValues]);\n        setFields([...updatedFieldArrayValues]);\n        control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n    };\n    React.useEffect(() => {\n        control._state.action = false;\n        isWatched(name, control._names) &&\n            control._subjects.state.next({\n                ...control._formState,\n            });\n        if (_actioned.current &&\n            (!getValidationModes(control._options.mode).isOnSubmit ||\n                control._formState.isSubmitted)) {\n            if (control._options.resolver) {\n                control._executeSchema([name]).then((result) => {\n                    const error = get(result.errors, name);\n                    const existingError = get(control._formState.errors, name);\n                    if (existingError\n                        ? (!error && existingError.type) ||\n                            (error &&\n                                (existingError.type !== error.type ||\n                                    existingError.message !== error.message))\n                        : error && error.type) {\n                        error\n                            ? set(control._formState.errors, name, error)\n                            : unset(control._formState.errors, name);\n                        control._subjects.state.next({\n                            errors: control._formState.errors,\n                        });\n                    }\n                });\n            }\n            else {\n                const field = get(control._fields, name);\n                if (field &&\n                    field._f &&\n                    !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n                        getValidationModes(control._options.mode).isOnSubmit)) {\n                    validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n                        control._subjects.state.next({\n                            errors: updateFieldArrayRootError(control._formState.errors, error, name),\n                        }));\n                }\n            }\n        }\n        control._subjects.values.next({\n            name,\n            values: { ...control._formValues },\n        });\n        control._names.focus &&\n            iterateFieldsByAction(control._fields, (ref, key) => {\n                if (control._names.focus &&\n                    key.startsWith(control._names.focus) &&\n                    ref.focus) {\n                    ref.focus();\n                    return 1;\n                }\n                return;\n            });\n        control._names.focus = '';\n        control._updateValid();\n        _actioned.current = false;\n    }, [fields, name, control]);\n    React.useEffect(() => {\n        !get(control._formValues, name) && control._updateFieldArray(name);\n        return () => {\n            (control._options.shouldUnregister || shouldUnregister) &&\n                control.unregister(name);\n        };\n    }, [name, control, keyName, shouldUnregister]);\n    return {\n        swap: React.useCallback(swap, [updateValues, name, control]),\n        move: React.useCallback(move, [updateValues, name, control]),\n        prepend: React.useCallback(prepend, [updateValues, name, control]),\n        append: React.useCallback(append, [updateValues, name, control]),\n        remove: React.useCallback(remove, [updateValues, name, control]),\n        insert: React.useCallback(insert$1, [updateValues, name, control]),\n        update: React.useCallback(update, [updateValues, name, control]),\n        replace: React.useCallback(replace, [updateValues, name, control]),\n        fields: React.useMemo(() => fields.map((field, index) => ({\n            ...field,\n            [keyName]: ids.current[index] || generateId(),\n        })), [fields, keyName]),\n    };\n}\n\nvar createSubject = () => {\n    let _observers = [];\n    const next = (value) => {\n        for (const observer of _observers) {\n            observer.next && observer.next(value);\n        }\n    };\n    const subscribe = (observer) => {\n        _observers.push(observer);\n        return {\n            unsubscribe: () => {\n                _observers = _observers.filter((o) => o !== observer);\n            },\n        };\n    };\n    const unsubscribe = () => {\n        _observers = [];\n    };\n    return {\n        get observers() {\n            return _observers;\n        },\n        next,\n        subscribe,\n        unsubscribe,\n    };\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\n    if (isPrimitive(object1) || isPrimitive(object2)) {\n        return object1 === object2;\n    }\n    if (isDateObject(object1) && isDateObject(object2)) {\n        return object1.getTime() === object2.getTime();\n    }\n    const keys1 = Object.keys(object1);\n    const keys2 = Object.keys(object2);\n    if (keys1.length !== keys2.length) {\n        return false;\n    }\n    for (const key of keys1) {\n        const val1 = object1[key];\n        if (!keys2.includes(key)) {\n            return false;\n        }\n        if (key !== 'ref') {\n            const val2 = object2[key];\n            if ((isDateObject(val1) && isDateObject(val2)) ||\n                (isObject(val1) && isObject(val2)) ||\n                (Array.isArray(val1) && Array.isArray(val2))\n                ? !deepEqual(val1, val2)\n                : val1 !== val2) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nvar objectHasFunction = (data) => {\n    for (const key in data) {\n        if (isFunction(data[key])) {\n            return true;\n        }\n    }\n    return false;\n};\n\nfunction markFieldsDirty(data, fields = {}) {\n    const isParentNodeArray = Array.isArray(data);\n    if (isObject(data) || isParentNodeArray) {\n        for (const key in data) {\n            if (Array.isArray(data[key]) ||\n                (isObject(data[key]) && !objectHasFunction(data[key]))) {\n                fields[key] = Array.isArray(data[key]) ? [] : {};\n                markFieldsDirty(data[key], fields[key]);\n            }\n            else if (!isNullOrUndefined(data[key])) {\n                fields[key] = true;\n            }\n        }\n    }\n    return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n    const isParentNodeArray = Array.isArray(data);\n    if (isObject(data) || isParentNodeArray) {\n        for (const key in data) {\n            if (Array.isArray(data[key]) ||\n                (isObject(data[key]) && !objectHasFunction(data[key]))) {\n                if (isUndefined(formValues) ||\n                    isPrimitive(dirtyFieldsFromValues[key])) {\n                    dirtyFieldsFromValues[key] = Array.isArray(data[key])\n                        ? markFieldsDirty(data[key], [])\n                        : { ...markFieldsDirty(data[key]) };\n                }\n                else {\n                    getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n                }\n            }\n            else {\n                dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n            }\n        }\n    }\n    return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n    ? value\n    : valueAsNumber\n        ? value === ''\n            ? NaN\n            : value\n                ? +value\n                : value\n        : valueAsDate && isString(value)\n            ? new Date(value)\n            : setValueAs\n                ? setValueAs(value)\n                : value;\n\nfunction getFieldValue(_f) {\n    const ref = _f.ref;\n    if (isFileInput(ref)) {\n        return ref.files;\n    }\n    if (isRadioInput(ref)) {\n        return getRadioValue(_f.refs).value;\n    }\n    if (isMultipleSelect(ref)) {\n        return [...ref.selectedOptions].map(({ value }) => value);\n    }\n    if (isCheckBoxInput(ref)) {\n        return getCheckboxValue(_f.refs).value;\n    }\n    return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n    const fields = {};\n    for (const name of fieldsNames) {\n        const field = get(_fields, name);\n        field && set(fields, name, field._f);\n    }\n    return {\n        criteriaMode,\n        names: [...fieldsNames],\n        fields,\n        shouldUseNativeValidation,\n    };\n};\n\nvar getRuleValue = (rule) => isUndefined(rule)\n    ? rule\n    : isRegex(rule)\n        ? rule.source\n        : isObject(rule)\n            ? isRegex(rule.value)\n                ? rule.value.source\n                : rule.value\n            : rule;\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => !!fieldReference &&\n    !!fieldReference.validate &&\n    !!((isFunction(fieldReference.validate) &&\n        fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n        (isObject(fieldReference.validate) &&\n            Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n    (options.required ||\n        options.min ||\n        options.max ||\n        options.maxLength ||\n        options.minLength ||\n        options.pattern ||\n        options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\n    const error = get(errors, name);\n    if (error || isKey(name)) {\n        return {\n            error,\n            name,\n        };\n    }\n    const names = name.split('.');\n    while (names.length) {\n        const fieldName = names.join('.');\n        const field = get(_fields, fieldName);\n        const foundError = get(errors, fieldName);\n        if (field && !Array.isArray(field) && name !== fieldName) {\n            return { name };\n        }\n        if (foundError && foundError.type) {\n            return {\n                name: fieldName,\n                error: foundError,\n            };\n        }\n        names.pop();\n    }\n    return {\n        name,\n    };\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n    if (mode.isOnAll) {\n        return false;\n    }\n    else if (!isSubmitted && mode.isOnTouch) {\n        return !(isTouched || isBlurEvent);\n    }\n    else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n        return !isBlurEvent;\n    }\n    else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n        return isBlurEvent;\n    }\n    return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nconst defaultOptions = {\n    mode: VALIDATION_MODE.onSubmit,\n    reValidateMode: VALIDATION_MODE.onChange,\n    shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n    let _options = {\n        ...defaultOptions,\n        ...props,\n    };\n    let _formState = {\n        submitCount: 0,\n        isDirty: false,\n        isLoading: isFunction(_options.defaultValues),\n        isValidating: false,\n        isSubmitted: false,\n        isSubmitting: false,\n        isSubmitSuccessful: false,\n        isValid: false,\n        touchedFields: {},\n        dirtyFields: {},\n        validatingFields: {},\n        errors: _options.errors || {},\n        disabled: _options.disabled || false,\n    };\n    let _fields = {};\n    let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n        ? cloneObject(_options.defaultValues || _options.values) || {}\n        : {};\n    let _formValues = _options.shouldUnregister\n        ? {}\n        : cloneObject(_defaultValues);\n    let _state = {\n        action: false,\n        mount: false,\n        watch: false,\n    };\n    let _names = {\n        mount: new Set(),\n        disabled: new Set(),\n        unMount: new Set(),\n        array: new Set(),\n        watch: new Set(),\n    };\n    let delayErrorCallback;\n    let timer = 0;\n    const _proxyFormState = {\n        isDirty: false,\n        dirtyFields: false,\n        validatingFields: false,\n        touchedFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    };\n    const _subjects = {\n        values: createSubject(),\n        array: createSubject(),\n        state: createSubject(),\n    };\n    const validationModeBeforeSubmit = getValidationModes(_options.mode);\n    const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n    const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n    const debounce = (callback) => (wait) => {\n        clearTimeout(timer);\n        timer = setTimeout(callback, wait);\n    };\n    const _updateValid = async (shouldUpdateValid) => {\n        if (!_options.disabled && (_proxyFormState.isValid || shouldUpdateValid)) {\n            const isValid = _options.resolver\n                ? isEmptyObject((await _executeSchema()).errors)\n                : await executeBuiltInValidation(_fields, true);\n            if (isValid !== _formState.isValid) {\n                _subjects.state.next({\n                    isValid,\n                });\n            }\n        }\n    };\n    const _updateIsValidating = (names, isValidating) => {\n        if (!_options.disabled &&\n            (_proxyFormState.isValidating || _proxyFormState.validatingFields)) {\n            (names || Array.from(_names.mount)).forEach((name) => {\n                if (name) {\n                    isValidating\n                        ? set(_formState.validatingFields, name, isValidating)\n                        : unset(_formState.validatingFields, name);\n                }\n            });\n            _subjects.state.next({\n                validatingFields: _formState.validatingFields,\n                isValidating: !isEmptyObject(_formState.validatingFields),\n            });\n        }\n    };\n    const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n        if (args && method && !_options.disabled) {\n            _state.action = true;\n            if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n                const fieldValues = method(get(_fields, name), args.argA, args.argB);\n                shouldSetValues && set(_fields, name, fieldValues);\n            }\n            if (shouldUpdateFieldsAndState &&\n                Array.isArray(get(_formState.errors, name))) {\n                const errors = method(get(_formState.errors, name), args.argA, args.argB);\n                shouldSetValues && set(_formState.errors, name, errors);\n                unsetEmptyArray(_formState.errors, name);\n            }\n            if (_proxyFormState.touchedFields &&\n                shouldUpdateFieldsAndState &&\n                Array.isArray(get(_formState.touchedFields, name))) {\n                const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n                shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n            }\n            if (_proxyFormState.dirtyFields) {\n                _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n            }\n            _subjects.state.next({\n                name,\n                isDirty: _getDirty(name, values),\n                dirtyFields: _formState.dirtyFields,\n                errors: _formState.errors,\n                isValid: _formState.isValid,\n            });\n        }\n        else {\n            set(_formValues, name, values);\n        }\n    };\n    const updateErrors = (name, error) => {\n        set(_formState.errors, name, error);\n        _subjects.state.next({\n            errors: _formState.errors,\n        });\n    };\n    const _setErrors = (errors) => {\n        _formState.errors = errors;\n        _subjects.state.next({\n            errors: _formState.errors,\n            isValid: false,\n        });\n    };\n    const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n        const field = get(_fields, name);\n        if (field) {\n            const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n            isUndefined(defaultValue) ||\n                (ref && ref.defaultChecked) ||\n                shouldSkipSetValueAs\n                ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n                : setFieldValue(name, defaultValue);\n            _state.mount && _updateValid();\n        }\n    };\n    const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n        let shouldUpdateField = false;\n        let isPreviousDirty = false;\n        const output = {\n            name,\n        };\n        if (!_options.disabled) {\n            const disabledField = !!(get(_fields, name) &&\n                get(_fields, name)._f &&\n                get(_fields, name)._f.disabled);\n            if (!isBlurEvent || shouldDirty) {\n                if (_proxyFormState.isDirty) {\n                    isPreviousDirty = _formState.isDirty;\n                    _formState.isDirty = output.isDirty = _getDirty();\n                    shouldUpdateField = isPreviousDirty !== output.isDirty;\n                }\n                const isCurrentFieldPristine = disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n                isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n                isCurrentFieldPristine || disabledField\n                    ? unset(_formState.dirtyFields, name)\n                    : set(_formState.dirtyFields, name, true);\n                output.dirtyFields = _formState.dirtyFields;\n                shouldUpdateField =\n                    shouldUpdateField ||\n                        (_proxyFormState.dirtyFields &&\n                            isPreviousDirty !== !isCurrentFieldPristine);\n            }\n            if (isBlurEvent) {\n                const isPreviousFieldTouched = get(_formState.touchedFields, name);\n                if (!isPreviousFieldTouched) {\n                    set(_formState.touchedFields, name, isBlurEvent);\n                    output.touchedFields = _formState.touchedFields;\n                    shouldUpdateField =\n                        shouldUpdateField ||\n                            (_proxyFormState.touchedFields &&\n                                isPreviousFieldTouched !== isBlurEvent);\n                }\n            }\n            shouldUpdateField && shouldRender && _subjects.state.next(output);\n        }\n        return shouldUpdateField ? output : {};\n    };\n    const shouldRenderByError = (name, isValid, error, fieldState) => {\n        const previousFieldError = get(_formState.errors, name);\n        const shouldUpdateValid = _proxyFormState.isValid &&\n            isBoolean(isValid) &&\n            _formState.isValid !== isValid;\n        if (_options.delayError && error) {\n            delayErrorCallback = debounce(() => updateErrors(name, error));\n            delayErrorCallback(_options.delayError);\n        }\n        else {\n            clearTimeout(timer);\n            delayErrorCallback = null;\n            error\n                ? set(_formState.errors, name, error)\n                : unset(_formState.errors, name);\n        }\n        if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n            !isEmptyObject(fieldState) ||\n            shouldUpdateValid) {\n            const updatedFormState = {\n                ...fieldState,\n                ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n                errors: _formState.errors,\n                name,\n            };\n            _formState = {\n                ..._formState,\n                ...updatedFormState,\n            };\n            _subjects.state.next(updatedFormState);\n        }\n    };\n    const _executeSchema = async (name) => {\n        _updateIsValidating(name, true);\n        const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n        _updateIsValidating(name);\n        return result;\n    };\n    const executeSchemaAndUpdateState = async (names) => {\n        const { errors } = await _executeSchema(names);\n        if (names) {\n            for (const name of names) {\n                const error = get(errors, name);\n                error\n                    ? set(_formState.errors, name, error)\n                    : unset(_formState.errors, name);\n            }\n        }\n        else {\n            _formState.errors = errors;\n        }\n        return errors;\n    };\n    const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n        valid: true,\n    }) => {\n        for (const name in fields) {\n            const field = fields[name];\n            if (field) {\n                const { _f, ...fieldValue } = field;\n                if (_f) {\n                    const isFieldArrayRoot = _names.array.has(_f.name);\n                    const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n                    if (isPromiseFunction && _proxyFormState.validatingFields) {\n                        _updateIsValidating([name], true);\n                    }\n                    const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n                    if (isPromiseFunction && _proxyFormState.validatingFields) {\n                        _updateIsValidating([name]);\n                    }\n                    if (fieldError[_f.name]) {\n                        context.valid = false;\n                        if (shouldOnlyCheckValid) {\n                            break;\n                        }\n                    }\n                    !shouldOnlyCheckValid &&\n                        (get(fieldError, _f.name)\n                            ? isFieldArrayRoot\n                                ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n                                : set(_formState.errors, _f.name, fieldError[_f.name])\n                            : unset(_formState.errors, _f.name));\n                }\n                !isEmptyObject(fieldValue) &&\n                    (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n            }\n        }\n        return context.valid;\n    };\n    const _removeUnmounted = () => {\n        for (const name of _names.unMount) {\n            const field = get(_fields, name);\n            field &&\n                (field._f.refs\n                    ? field._f.refs.every((ref) => !live(ref))\n                    : !live(field._f.ref)) &&\n                unregister(name);\n        }\n        _names.unMount = new Set();\n    };\n    const _getDirty = (name, data) => !_options.disabled &&\n        (name && data && set(_formValues, name, data),\n            !deepEqual(getValues(), _defaultValues));\n    const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n        ...(_state.mount\n            ? _formValues\n            : isUndefined(defaultValue)\n                ? _defaultValues\n                : isString(names)\n                    ? { [names]: defaultValue }\n                    : defaultValue),\n    }, isGlobal, defaultValue);\n    const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n    const setFieldValue = (name, value, options = {}) => {\n        const field = get(_fields, name);\n        let fieldValue = value;\n        if (field) {\n            const fieldReference = field._f;\n            if (fieldReference) {\n                !fieldReference.disabled &&\n                    set(_formValues, name, getFieldValueAs(value, fieldReference));\n                fieldValue =\n                    isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n                        ? ''\n                        : value;\n                if (isMultipleSelect(fieldReference.ref)) {\n                    [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n                }\n                else if (fieldReference.refs) {\n                    if (isCheckBoxInput(fieldReference.ref)) {\n                        fieldReference.refs.length > 1\n                            ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n                                (checkboxRef.checked = Array.isArray(fieldValue)\n                                    ? !!fieldValue.find((data) => data === checkboxRef.value)\n                                    : fieldValue === checkboxRef.value))\n                            : fieldReference.refs[0] &&\n                                (fieldReference.refs[0].checked = !!fieldValue);\n                    }\n                    else {\n                        fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n                    }\n                }\n                else if (isFileInput(fieldReference.ref)) {\n                    fieldReference.ref.value = '';\n                }\n                else {\n                    fieldReference.ref.value = fieldValue;\n                    if (!fieldReference.ref.type) {\n                        _subjects.values.next({\n                            name,\n                            values: { ..._formValues },\n                        });\n                    }\n                }\n            }\n        }\n        (options.shouldDirty || options.shouldTouch) &&\n            updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n        options.shouldValidate && trigger(name);\n    };\n    const setValues = (name, value, options) => {\n        for (const fieldKey in value) {\n            const fieldValue = value[fieldKey];\n            const fieldName = `${name}.${fieldKey}`;\n            const field = get(_fields, fieldName);\n            (_names.array.has(name) ||\n                isObject(fieldValue) ||\n                (field && !field._f)) &&\n                !isDateObject(fieldValue)\n                ? setValues(fieldName, fieldValue, options)\n                : setFieldValue(fieldName, fieldValue, options);\n        }\n    };\n    const setValue = (name, value, options = {}) => {\n        const field = get(_fields, name);\n        const isFieldArray = _names.array.has(name);\n        const cloneValue = cloneObject(value);\n        set(_formValues, name, cloneValue);\n        if (isFieldArray) {\n            _subjects.array.next({\n                name,\n                values: { ..._formValues },\n            });\n            if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n                options.shouldDirty) {\n                _subjects.state.next({\n                    name,\n                    dirtyFields: getDirtyFields(_defaultValues, _formValues),\n                    isDirty: _getDirty(name, cloneValue),\n                });\n            }\n        }\n        else {\n            field && !field._f && !isNullOrUndefined(cloneValue)\n                ? setValues(name, cloneValue, options)\n                : setFieldValue(name, cloneValue, options);\n        }\n        isWatched(name, _names) && _subjects.state.next({ ..._formState });\n        _subjects.values.next({\n            name: _state.mount ? name : undefined,\n            values: { ..._formValues },\n        });\n    };\n    const onChange = async (event) => {\n        _state.mount = true;\n        const target = event.target;\n        let name = target.name;\n        let isFieldValueUpdated = true;\n        const field = get(_fields, name);\n        const getCurrentFieldValue = () => target.type ? getFieldValue(field._f) : getEventValue(event);\n        const _updateIsFieldValueUpdated = (fieldValue) => {\n            isFieldValueUpdated =\n                Number.isNaN(fieldValue) ||\n                    (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n                    deepEqual(fieldValue, get(_formValues, name, fieldValue));\n        };\n        if (field) {\n            let error;\n            let isValid;\n            const fieldValue = getCurrentFieldValue();\n            const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n            const shouldSkipValidation = (!hasValidation(field._f) &&\n                !_options.resolver &&\n                !get(_formState.errors, name) &&\n                !field._f.deps) ||\n                skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n            const watched = isWatched(name, _names, isBlurEvent);\n            set(_formValues, name, fieldValue);\n            if (isBlurEvent) {\n                field._f.onBlur && field._f.onBlur(event);\n                delayErrorCallback && delayErrorCallback(0);\n            }\n            else if (field._f.onChange) {\n                field._f.onChange(event);\n            }\n            const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n            const shouldRender = !isEmptyObject(fieldState) || watched;\n            !isBlurEvent &&\n                _subjects.values.next({\n                    name,\n                    type: event.type,\n                    values: { ..._formValues },\n                });\n            if (shouldSkipValidation) {\n                if (_proxyFormState.isValid) {\n                    if (_options.mode === 'onBlur' && isBlurEvent) {\n                        _updateValid();\n                    }\n                    else if (!isBlurEvent) {\n                        _updateValid();\n                    }\n                }\n                return (shouldRender &&\n                    _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n            }\n            !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n            if (_options.resolver) {\n                const { errors } = await _executeSchema([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (isFieldValueUpdated) {\n                    const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n                    const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n                    error = errorLookupResult.error;\n                    name = errorLookupResult.name;\n                    isValid = isEmptyObject(errors);\n                }\n            }\n            else {\n                _updateIsValidating([name], true);\n                error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n                _updateIsValidating([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (isFieldValueUpdated) {\n                    if (error) {\n                        isValid = false;\n                    }\n                    else if (_proxyFormState.isValid) {\n                        isValid = await executeBuiltInValidation(_fields, true);\n                    }\n                }\n            }\n            if (isFieldValueUpdated) {\n                field._f.deps &&\n                    trigger(field._f.deps);\n                shouldRenderByError(name, isValid, error, fieldState);\n            }\n        }\n    };\n    const _focusInput = (ref, key) => {\n        if (get(_formState.errors, key) && ref.focus) {\n            ref.focus();\n            return 1;\n        }\n        return;\n    };\n    const trigger = async (name, options = {}) => {\n        let isValid;\n        let validationResult;\n        const fieldNames = convertToArrayPayload(name);\n        if (_options.resolver) {\n            const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n            isValid = isEmptyObject(errors);\n            validationResult = name\n                ? !fieldNames.some((name) => get(errors, name))\n                : isValid;\n        }\n        else if (name) {\n            validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n                const field = get(_fields, fieldName);\n                return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n            }))).every(Boolean);\n            !(!validationResult && !_formState.isValid) && _updateValid();\n        }\n        else {\n            validationResult = isValid = await executeBuiltInValidation(_fields);\n        }\n        _subjects.state.next({\n            ...(!isString(name) ||\n                (_proxyFormState.isValid && isValid !== _formState.isValid)\n                ? {}\n                : { name }),\n            ...(_options.resolver || !name ? { isValid } : {}),\n            errors: _formState.errors,\n        });\n        options.shouldFocus &&\n            !validationResult &&\n            iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n        return validationResult;\n    };\n    const getValues = (fieldNames) => {\n        const values = {\n            ...(_state.mount ? _formValues : _defaultValues),\n        };\n        return isUndefined(fieldNames)\n            ? values\n            : isString(fieldNames)\n                ? get(values, fieldNames)\n                : fieldNames.map((name) => get(values, name));\n    };\n    const getFieldState = (name, formState) => ({\n        invalid: !!get((formState || _formState).errors, name),\n        isDirty: !!get((formState || _formState).dirtyFields, name),\n        error: get((formState || _formState).errors, name),\n        isValidating: !!get(_formState.validatingFields, name),\n        isTouched: !!get((formState || _formState).touchedFields, name),\n    });\n    const clearErrors = (name) => {\n        name &&\n            convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n        _subjects.state.next({\n            errors: name ? _formState.errors : {},\n        });\n    };\n    const setError = (name, error, options) => {\n        const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n        const currentError = get(_formState.errors, name) || {};\n        // Don't override existing error messages elsewhere in the object tree.\n        const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n        set(_formState.errors, name, {\n            ...restOfErrorTree,\n            ...error,\n            ref,\n        });\n        _subjects.state.next({\n            name,\n            errors: _formState.errors,\n            isValid: false,\n        });\n        options && options.shouldFocus && ref && ref.focus && ref.focus();\n    };\n    const watch = (name, defaultValue) => isFunction(name)\n        ? _subjects.values.subscribe({\n            next: (payload) => name(_getWatch(undefined, defaultValue), payload),\n        })\n        : _getWatch(name, defaultValue, true);\n    const unregister = (name, options = {}) => {\n        for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n            _names.mount.delete(fieldName);\n            _names.array.delete(fieldName);\n            if (!options.keepValue) {\n                unset(_fields, fieldName);\n                unset(_formValues, fieldName);\n            }\n            !options.keepError && unset(_formState.errors, fieldName);\n            !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n            !options.keepTouched && unset(_formState.touchedFields, fieldName);\n            !options.keepIsValidating &&\n                unset(_formState.validatingFields, fieldName);\n            !_options.shouldUnregister &&\n                !options.keepDefaultValue &&\n                unset(_defaultValues, fieldName);\n        }\n        _subjects.values.next({\n            values: { ..._formValues },\n        });\n        _subjects.state.next({\n            ..._formState,\n            ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n        });\n        !options.keepIsValid && _updateValid();\n    };\n    const _updateDisabledField = ({ disabled, name, field, fields, }) => {\n        if ((isBoolean(disabled) && _state.mount) ||\n            !!disabled ||\n            _names.disabled.has(name)) {\n            disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n            updateTouchAndDirty(name, getFieldValue(field ? field._f : get(fields, name)._f), false, false, true);\n        }\n    };\n    const register = (name, options = {}) => {\n        let field = get(_fields, name);\n        const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n        set(_fields, name, {\n            ...(field || {}),\n            _f: {\n                ...(field && field._f ? field._f : { ref: { name } }),\n                name,\n                mount: true,\n                ...options,\n            },\n        });\n        _names.mount.add(name);\n        if (field) {\n            _updateDisabledField({\n                field,\n                disabled: isBoolean(options.disabled)\n                    ? options.disabled\n                    : _options.disabled,\n                name,\n            });\n        }\n        else {\n            updateValidAndValue(name, true, options.value);\n        }\n        return {\n            ...(disabledIsDefined\n                ? { disabled: options.disabled || _options.disabled }\n                : {}),\n            ...(_options.progressive\n                ? {\n                    required: !!options.required,\n                    min: getRuleValue(options.min),\n                    max: getRuleValue(options.max),\n                    minLength: getRuleValue(options.minLength),\n                    maxLength: getRuleValue(options.maxLength),\n                    pattern: getRuleValue(options.pattern),\n                }\n                : {}),\n            name,\n            onChange,\n            onBlur: onChange,\n            ref: (ref) => {\n                if (ref) {\n                    register(name, options);\n                    field = get(_fields, name);\n                    const fieldRef = isUndefined(ref.value)\n                        ? ref.querySelectorAll\n                            ? ref.querySelectorAll('input,select,textarea')[0] || ref\n                            : ref\n                        : ref;\n                    const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n                    const refs = field._f.refs || [];\n                    if (radioOrCheckbox\n                        ? refs.find((option) => option === fieldRef)\n                        : fieldRef === field._f.ref) {\n                        return;\n                    }\n                    set(_fields, name, {\n                        _f: {\n                            ...field._f,\n                            ...(radioOrCheckbox\n                                ? {\n                                    refs: [\n                                        ...refs.filter(live),\n                                        fieldRef,\n                                        ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n                                    ],\n                                    ref: { type: fieldRef.type, name },\n                                }\n                                : { ref: fieldRef }),\n                        },\n                    });\n                    updateValidAndValue(name, false, undefined, fieldRef);\n                }\n                else {\n                    field = get(_fields, name, {});\n                    if (field._f) {\n                        field._f.mount = false;\n                    }\n                    (_options.shouldUnregister || options.shouldUnregister) &&\n                        !(isNameInFieldArray(_names.array, name) && _state.action) &&\n                        _names.unMount.add(name);\n                }\n            },\n        };\n    };\n    const _focusError = () => _options.shouldFocusError &&\n        iterateFieldsByAction(_fields, _focusInput, _names.mount);\n    const _disableForm = (disabled) => {\n        if (isBoolean(disabled)) {\n            _subjects.state.next({ disabled });\n            iterateFieldsByAction(_fields, (ref, name) => {\n                const currentField = get(_fields, name);\n                if (currentField) {\n                    ref.disabled = currentField._f.disabled || disabled;\n                    if (Array.isArray(currentField._f.refs)) {\n                        currentField._f.refs.forEach((inputRef) => {\n                            inputRef.disabled = currentField._f.disabled || disabled;\n                        });\n                    }\n                }\n            }, 0, false);\n        }\n    };\n    const handleSubmit = (onValid, onInvalid) => async (e) => {\n        let onValidError = undefined;\n        if (e) {\n            e.preventDefault && e.preventDefault();\n            e.persist && e.persist();\n        }\n        let fieldValues = cloneObject(_formValues);\n        if (_names.disabled.size) {\n            for (const name of _names.disabled) {\n                set(fieldValues, name, undefined);\n            }\n        }\n        _subjects.state.next({\n            isSubmitting: true,\n        });\n        if (_options.resolver) {\n            const { errors, values } = await _executeSchema();\n            _formState.errors = errors;\n            fieldValues = values;\n        }\n        else {\n            await executeBuiltInValidation(_fields);\n        }\n        unset(_formState.errors, 'root');\n        if (isEmptyObject(_formState.errors)) {\n            _subjects.state.next({\n                errors: {},\n            });\n            try {\n                await onValid(fieldValues, e);\n            }\n            catch (error) {\n                onValidError = error;\n            }\n        }\n        else {\n            if (onInvalid) {\n                await onInvalid({ ..._formState.errors }, e);\n            }\n            _focusError();\n            setTimeout(_focusError);\n        }\n        _subjects.state.next({\n            isSubmitted: true,\n            isSubmitting: false,\n            isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n            submitCount: _formState.submitCount + 1,\n            errors: _formState.errors,\n        });\n        if (onValidError) {\n            throw onValidError;\n        }\n    };\n    const resetField = (name, options = {}) => {\n        if (get(_fields, name)) {\n            if (isUndefined(options.defaultValue)) {\n                setValue(name, cloneObject(get(_defaultValues, name)));\n            }\n            else {\n                setValue(name, options.defaultValue);\n                set(_defaultValues, name, cloneObject(options.defaultValue));\n            }\n            if (!options.keepTouched) {\n                unset(_formState.touchedFields, name);\n            }\n            if (!options.keepDirty) {\n                unset(_formState.dirtyFields, name);\n                _formState.isDirty = options.defaultValue\n                    ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n                    : _getDirty();\n            }\n            if (!options.keepError) {\n                unset(_formState.errors, name);\n                _proxyFormState.isValid && _updateValid();\n            }\n            _subjects.state.next({ ..._formState });\n        }\n    };\n    const _reset = (formValues, keepStateOptions = {}) => {\n        const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n        const cloneUpdatedValues = cloneObject(updatedValues);\n        const isEmptyResetValues = isEmptyObject(formValues);\n        const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n        if (!keepStateOptions.keepDefaultValues) {\n            _defaultValues = updatedValues;\n        }\n        if (!keepStateOptions.keepValues) {\n            if (keepStateOptions.keepDirtyValues) {\n                const fieldsToCheck = new Set([\n                    ..._names.mount,\n                    ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n                ]);\n                for (const fieldName of Array.from(fieldsToCheck)) {\n                    get(_formState.dirtyFields, fieldName)\n                        ? set(values, fieldName, get(_formValues, fieldName))\n                        : setValue(fieldName, get(values, fieldName));\n                }\n            }\n            else {\n                if (isWeb && isUndefined(formValues)) {\n                    for (const name of _names.mount) {\n                        const field = get(_fields, name);\n                        if (field && field._f) {\n                            const fieldReference = Array.isArray(field._f.refs)\n                                ? field._f.refs[0]\n                                : field._f.ref;\n                            if (isHTMLElement(fieldReference)) {\n                                const form = fieldReference.closest('form');\n                                if (form) {\n                                    form.reset();\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                }\n                _fields = {};\n            }\n            _formValues = _options.shouldUnregister\n                ? keepStateOptions.keepDefaultValues\n                    ? cloneObject(_defaultValues)\n                    : {}\n                : cloneObject(values);\n            _subjects.array.next({\n                values: { ...values },\n            });\n            _subjects.values.next({\n                values: { ...values },\n            });\n        }\n        _names = {\n            mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n            unMount: new Set(),\n            array: new Set(),\n            disabled: new Set(),\n            watch: new Set(),\n            watchAll: false,\n            focus: '',\n        };\n        _state.mount =\n            !_proxyFormState.isValid ||\n                !!keepStateOptions.keepIsValid ||\n                !!keepStateOptions.keepDirtyValues;\n        _state.watch = !!_options.shouldUnregister;\n        _subjects.state.next({\n            submitCount: keepStateOptions.keepSubmitCount\n                ? _formState.submitCount\n                : 0,\n            isDirty: isEmptyResetValues\n                ? false\n                : keepStateOptions.keepDirty\n                    ? _formState.isDirty\n                    : !!(keepStateOptions.keepDefaultValues &&\n                        !deepEqual(formValues, _defaultValues)),\n            isSubmitted: keepStateOptions.keepIsSubmitted\n                ? _formState.isSubmitted\n                : false,\n            dirtyFields: isEmptyResetValues\n                ? {}\n                : keepStateOptions.keepDirtyValues\n                    ? keepStateOptions.keepDefaultValues && _formValues\n                        ? getDirtyFields(_defaultValues, _formValues)\n                        : _formState.dirtyFields\n                    : keepStateOptions.keepDefaultValues && formValues\n                        ? getDirtyFields(_defaultValues, formValues)\n                        : keepStateOptions.keepDirty\n                            ? _formState.dirtyFields\n                            : {},\n            touchedFields: keepStateOptions.keepTouched\n                ? _formState.touchedFields\n                : {},\n            errors: keepStateOptions.keepErrors ? _formState.errors : {},\n            isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n                ? _formState.isSubmitSuccessful\n                : false,\n            isSubmitting: false,\n        });\n    };\n    const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n        ? formValues(_formValues)\n        : formValues, keepStateOptions);\n    const setFocus = (name, options = {}) => {\n        const field = get(_fields, name);\n        const fieldReference = field && field._f;\n        if (fieldReference) {\n            const fieldRef = fieldReference.refs\n                ? fieldReference.refs[0]\n                : fieldReference.ref;\n            if (fieldRef.focus) {\n                fieldRef.focus();\n                options.shouldSelect &&\n                    isFunction(fieldRef.select) &&\n                    fieldRef.select();\n            }\n        }\n    };\n    const _updateFormState = (updatedFormState) => {\n        _formState = {\n            ..._formState,\n            ...updatedFormState,\n        };\n    };\n    const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n        _options.defaultValues().then((values) => {\n            reset(values, _options.resetOptions);\n            _subjects.state.next({\n                isLoading: false,\n            });\n        });\n    return {\n        control: {\n            register,\n            unregister,\n            getFieldState,\n            handleSubmit,\n            setError,\n            _executeSchema,\n            _getWatch,\n            _getDirty,\n            _updateValid,\n            _removeUnmounted,\n            _updateFieldArray,\n            _updateDisabledField,\n            _getFieldArray,\n            _reset,\n            _resetDefaultValues,\n            _updateFormState,\n            _disableForm,\n            _subjects,\n            _proxyFormState,\n            _setErrors,\n            get _fields() {\n                return _fields;\n            },\n            get _formValues() {\n                return _formValues;\n            },\n            get _state() {\n                return _state;\n            },\n            set _state(value) {\n                _state = value;\n            },\n            get _defaultValues() {\n                return _defaultValues;\n            },\n            get _names() {\n                return _names;\n            },\n            set _names(value) {\n                _names = value;\n            },\n            get _formState() {\n                return _formState;\n            },\n            set _formState(value) {\n                _formState = value;\n            },\n            get _options() {\n                return _options;\n            },\n            set _options(value) {\n                _options = {\n                    ..._options,\n                    ...value,\n                };\n            },\n        },\n        trigger,\n        register,\n        handleSubmit,\n        watch,\n        setValue,\n        getValues,\n        reset,\n        resetField,\n        clearErrors,\n        unregister,\n        setError,\n        setFocus,\n        getFieldState,\n    };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, watch, formState: { errors } } = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   console.log(watch(\"example\"));\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input defaultValue=\"test\" {...register(\"example\")} />\n *       <input {...register(\"exampleRequired\", { required: true })} />\n *       {errors.exampleRequired && <span>This field is required</span>}\n *       <button>Submit</button>\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n    const _formControl = React.useRef(undefined);\n    const _values = React.useRef(undefined);\n    const [formState, updateFormState] = React.useState({\n        isDirty: false,\n        isValidating: false,\n        isLoading: isFunction(props.defaultValues),\n        isSubmitted: false,\n        isSubmitting: false,\n        isSubmitSuccessful: false,\n        isValid: false,\n        submitCount: 0,\n        dirtyFields: {},\n        touchedFields: {},\n        validatingFields: {},\n        errors: props.errors || {},\n        disabled: props.disabled || false,\n        defaultValues: isFunction(props.defaultValues)\n            ? undefined\n            : props.defaultValues,\n    });\n    if (!_formControl.current) {\n        _formControl.current = {\n            ...createFormControl(props),\n            formState,\n        };\n    }\n    const control = _formControl.current.control;\n    control._options = props;\n    useSubscribe({\n        subject: control._subjects.state,\n        next: (value) => {\n            if (shouldRenderFormState(value, control._proxyFormState, control._updateFormState, true)) {\n                updateFormState({ ...control._formState });\n            }\n        },\n    });\n    React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n    React.useEffect(() => {\n        if (control._proxyFormState.isDirty) {\n            const isDirty = control._getDirty();\n            if (isDirty !== formState.isDirty) {\n                control._subjects.state.next({\n                    isDirty,\n                });\n            }\n        }\n    }, [control, formState.isDirty]);\n    React.useEffect(() => {\n        if (props.values && !deepEqual(props.values, _values.current)) {\n            control._reset(props.values, control._options.resetOptions);\n            _values.current = props.values;\n            updateFormState((state) => ({ ...state }));\n        }\n        else {\n            control._resetDefaultValues();\n        }\n    }, [props.values, control]);\n    React.useEffect(() => {\n        if (props.errors) {\n            control._setErrors(props.errors);\n        }\n    }, [props.errors, control]);\n    React.useEffect(() => {\n        if (!control._state.mount) {\n            control._updateValid();\n            control._state.mount = true;\n        }\n        if (control._state.watch) {\n            control._state.watch = false;\n            control._subjects.state.next({ ...control._formState });\n        }\n        control._removeUnmounted();\n    });\n    React.useEffect(() => {\n        props.shouldUnregister &&\n            control._subjects.values.next({\n                values: control._getWatch(),\n            });\n    }, [props.shouldUnregister, control]);\n    _formControl.current.formState = getProxyFormState(formState, control);\n    return _formControl.current;\n}\n\nexport { Controller, Form, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose;\n    if (async) {\n        if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n        dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n        if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n        dispose = value[Symbol.dispose];\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n","import { useState, useCallback, useLayoutEffect, useEffect, useRef, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\n\n// src/useBoolean/useBoolean.ts\nfunction useBoolean(defaultValue = false) {\n  if (typeof defaultValue !== \"boolean\") {\n    throw new Error(\"defaultValue must be `true` or `false`\");\n  }\n  const [value, setValue] = useState(defaultValue);\n  const setTrue = useCallback(() => {\n    setValue(true);\n  }, []);\n  const setFalse = useCallback(() => {\n    setValue(false);\n  }, []);\n  const toggle = useCallback(() => {\n    setValue((x) => !x);\n  }, []);\n  return { value, setValue, setTrue, setFalse, toggle };\n}\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// src/useEventListener/useEventListener.ts\nfunction useEventListener(eventName, handler, element, options) {\n  const savedHandler = useRef(handler);\n  useIsomorphicLayoutEffect(() => {\n    savedHandler.current = handler;\n  }, [handler]);\n  useEffect(() => {\n    const targetElement = (element == null ? void 0 : element.current) ?? window;\n    if (!(targetElement && targetElement.addEventListener))\n      return;\n    const listener = (event) => {\n      savedHandler.current(event);\n    };\n    targetElement.addEventListener(eventName, listener, options);\n    return () => {\n      targetElement.removeEventListener(eventName, listener, options);\n    };\n  }, [eventName, element, options]);\n}\n\n// src/useClickAnyWhere/useClickAnyWhere.ts\nfunction useClickAnyWhere(handler) {\n  useEventListener(\"click\", (event) => {\n    handler(event);\n  });\n}\nfunction useCopyToClipboard() {\n  const [copiedText, setCopiedText] = useState(null);\n  const copy = useCallback(async (text) => {\n    if (!(navigator == null ? void 0 : navigator.clipboard)) {\n      console.warn(\"Clipboard not supported\");\n      return false;\n    }\n    try {\n      await navigator.clipboard.writeText(text);\n      setCopiedText(text);\n      return true;\n    } catch (error) {\n      console.warn(\"Copy failed\", error);\n      setCopiedText(null);\n      return false;\n    }\n  }, []);\n  return [copiedText, copy];\n}\nfunction useCounter(initialValue) {\n  const [count, setCount] = useState(initialValue ?? 0);\n  const increment = useCallback(() => {\n    setCount((x) => x + 1);\n  }, []);\n  const decrement = useCallback(() => {\n    setCount((x) => x - 1);\n  }, []);\n  const reset = useCallback(() => {\n    setCount(initialValue ?? 0);\n  }, [initialValue]);\n  return {\n    count,\n    increment,\n    decrement,\n    reset,\n    setCount\n  };\n}\nfunction useInterval(callback, delay) {\n  const savedCallback = useRef(callback);\n  useIsomorphicLayoutEffect(() => {\n    savedCallback.current = callback;\n  }, [callback]);\n  useEffect(() => {\n    if (delay === null) {\n      return;\n    }\n    const id = setInterval(() => {\n      savedCallback.current();\n    }, delay);\n    return () => {\n      clearInterval(id);\n    };\n  }, [delay]);\n}\n\n// src/useCountdown/useCountdown.ts\nfunction useCountdown({\n  countStart,\n  countStop = 0,\n  intervalMs = 1e3,\n  isIncrement = false\n}) {\n  const {\n    count,\n    increment,\n    decrement,\n    reset: resetCounter\n  } = useCounter(countStart);\n  const {\n    value: isCountdownRunning,\n    setTrue: startCountdown,\n    setFalse: stopCountdown\n  } = useBoolean(false);\n  const resetCountdown = useCallback(() => {\n    stopCountdown();\n    resetCounter();\n  }, [stopCountdown, resetCounter]);\n  const countdownCallback = useCallback(() => {\n    if (count === countStop) {\n      stopCountdown();\n      return;\n    }\n    if (isIncrement) {\n      increment();\n    } else {\n      decrement();\n    }\n  }, [count, countStop, decrement, increment, isIncrement, stopCountdown]);\n  useInterval(countdownCallback, isCountdownRunning ? intervalMs : null);\n  return [count, { startCountdown, stopCountdown, resetCountdown }];\n}\nfunction useEventCallback(fn) {\n  const ref = useRef(() => {\n    throw new Error(\"Cannot call an event handler while rendering.\");\n  });\n  useIsomorphicLayoutEffect(() => {\n    ref.current = fn;\n  }, [fn]);\n  return useCallback((...args) => {\n    var _a;\n    return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n  }, [ref]);\n}\n\n// src/useLocalStorage/useLocalStorage.ts\nvar IS_SERVER = typeof window === \"undefined\";\nfunction useLocalStorage(key, initialValue, options = {}) {\n  const { initializeWithValue = true } = options;\n  const serializer = useCallback(\n    (value) => {\n      if (options.serializer) {\n        return options.serializer(value);\n      }\n      return JSON.stringify(value);\n    },\n    [options]\n  );\n  const deserializer = useCallback(\n    (value) => {\n      if (options.deserializer) {\n        return options.deserializer(value);\n      }\n      if (value === \"undefined\") {\n        return void 0;\n      }\n      const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n      let parsed;\n      try {\n        parsed = JSON.parse(value);\n      } catch (error) {\n        console.error(\"Error parsing JSON:\", error);\n        return defaultValue;\n      }\n      return parsed;\n    },\n    [options, initialValue]\n  );\n  const readValue = useCallback(() => {\n    const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n    if (IS_SERVER) {\n      return initialValueToUse;\n    }\n    try {\n      const raw = window.localStorage.getItem(key);\n      return raw ? deserializer(raw) : initialValueToUse;\n    } catch (error) {\n      console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n      return initialValueToUse;\n    }\n  }, [initialValue, key, deserializer]);\n  const [storedValue, setStoredValue] = useState(() => {\n    if (initializeWithValue) {\n      return readValue();\n    }\n    return initialValue instanceof Function ? initialValue() : initialValue;\n  });\n  const setValue = useEventCallback((value) => {\n    if (IS_SERVER) {\n      console.warn(\n        `Tried setting localStorage key \\u201C${key}\\u201D even though environment is not a client`\n      );\n    }\n    try {\n      const newValue = value instanceof Function ? value(readValue()) : value;\n      window.localStorage.setItem(key, serializer(newValue));\n      setStoredValue(newValue);\n      window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n    } catch (error) {\n      console.warn(`Error setting localStorage key \\u201C${key}\\u201D:`, error);\n    }\n  });\n  const removeValue = useEventCallback(() => {\n    if (IS_SERVER) {\n      console.warn(\n        `Tried removing localStorage key \\u201C${key}\\u201D even though environment is not a client`\n      );\n    }\n    const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n    window.localStorage.removeItem(key);\n    setStoredValue(defaultValue);\n    window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n  });\n  useEffect(() => {\n    setStoredValue(readValue());\n  }, [key]);\n  const handleStorageChange = useCallback(\n    (event) => {\n      if (event.key && event.key !== key) {\n        return;\n      }\n      setStoredValue(readValue());\n    },\n    [key, readValue]\n  );\n  useEventListener(\"storage\", handleStorageChange);\n  useEventListener(\"local-storage\", handleStorageChange);\n  return [storedValue, setValue, removeValue];\n}\nvar IS_SERVER2 = typeof window === \"undefined\";\nfunction useMediaQuery(query, {\n  defaultValue = false,\n  initializeWithValue = true\n} = {}) {\n  const getMatches = (query2) => {\n    if (IS_SERVER2) {\n      return defaultValue;\n    }\n    return window.matchMedia(query2).matches;\n  };\n  const [matches, setMatches] = useState(() => {\n    if (initializeWithValue) {\n      return getMatches(query);\n    }\n    return defaultValue;\n  });\n  function handleChange() {\n    setMatches(getMatches(query));\n  }\n  useIsomorphicLayoutEffect(() => {\n    const matchMedia = window.matchMedia(query);\n    handleChange();\n    if (matchMedia.addListener) {\n      matchMedia.addListener(handleChange);\n    } else {\n      matchMedia.addEventListener(\"change\", handleChange);\n    }\n    return () => {\n      if (matchMedia.removeListener) {\n        matchMedia.removeListener(handleChange);\n      } else {\n        matchMedia.removeEventListener(\"change\", handleChange);\n      }\n    };\n  }, [query]);\n  return matches;\n}\n\n// src/useDarkMode/useDarkMode.ts\nvar COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY = \"usehooks-ts-dark-mode\";\nfunction useDarkMode(options = {}) {\n  const {\n    defaultValue,\n    localStorageKey = LOCAL_STORAGE_KEY,\n    initializeWithValue = true\n  } = options;\n  const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, {\n    initializeWithValue,\n    defaultValue\n  });\n  const [isDarkMode, setDarkMode] = useLocalStorage(\n    localStorageKey,\n    defaultValue ?? isDarkOS ?? false,\n    { initializeWithValue }\n  );\n  useIsomorphicLayoutEffect(() => {\n    if (isDarkOS !== isDarkMode) {\n      setDarkMode(isDarkOS);\n    }\n  }, [isDarkOS]);\n  return {\n    isDarkMode,\n    toggle: () => {\n      setDarkMode((prev) => !prev);\n    },\n    enable: () => {\n      setDarkMode(true);\n    },\n    disable: () => {\n      setDarkMode(false);\n    },\n    set: (value) => {\n      setDarkMode(value);\n    }\n  };\n}\nfunction useUnmount(func) {\n  const funcRef = useRef(func);\n  funcRef.current = func;\n  useEffect(\n    () => () => {\n      funcRef.current();\n    },\n    []\n  );\n}\n\n// src/useDebounceCallback/useDebounceCallback.ts\nfunction useDebounceCallback(func, delay = 500, options) {\n  const debouncedFunc = useRef();\n  useUnmount(() => {\n    if (debouncedFunc.current) {\n      debouncedFunc.current.cancel();\n    }\n  });\n  const debounced = useMemo(() => {\n    const debouncedFuncInstance = debounce(func, delay, options);\n    const wrappedFunc = (...args) => {\n      return debouncedFuncInstance(...args);\n    };\n    wrappedFunc.cancel = () => {\n      debouncedFuncInstance.cancel();\n    };\n    wrappedFunc.isPending = () => {\n      return !!debouncedFunc.current;\n    };\n    wrappedFunc.flush = () => {\n      return debouncedFuncInstance.flush();\n    };\n    return wrappedFunc;\n  }, [func, delay, options]);\n  useEffect(() => {\n    debouncedFunc.current = debounce(func, delay, options);\n  }, [func, delay, options]);\n  return debounced;\n}\nfunction useDebounceValue(initialValue, delay, options) {\n  const eq = (options == null ? void 0 : options.equalityFn) ?? ((left, right) => left === right);\n  const unwrappedInitialValue = initialValue instanceof Function ? initialValue() : initialValue;\n  const [debouncedValue, setDebouncedValue] = useState(unwrappedInitialValue);\n  const previousValueRef = useRef(unwrappedInitialValue);\n  const updateDebouncedValue = useDebounceCallback(\n    setDebouncedValue,\n    delay,\n    options\n  );\n  if (!eq(previousValueRef.current, unwrappedInitialValue)) {\n    updateDebouncedValue(unwrappedInitialValue);\n    previousValueRef.current = unwrappedInitialValue;\n  }\n  return [debouncedValue, updateDebouncedValue];\n}\nfunction useDocumentTitle(title, options = {}) {\n  const { preserveTitleOnUnmount = true } = options;\n  const defaultTitle = useRef(null);\n  useIsomorphicLayoutEffect(() => {\n    defaultTitle.current = window.document.title;\n  }, []);\n  useIsomorphicLayoutEffect(() => {\n    window.document.title = title;\n  }, [title]);\n  useUnmount(() => {\n    if (!preserveTitleOnUnmount && defaultTitle.current) {\n      window.document.title = defaultTitle.current;\n    }\n  });\n}\nfunction useHover(elementRef) {\n  const [value, setValue] = useState(false);\n  const handleMouseEnter = () => {\n    setValue(true);\n  };\n  const handleMouseLeave = () => {\n    setValue(false);\n  };\n  useEventListener(\"mouseenter\", handleMouseEnter, elementRef);\n  useEventListener(\"mouseleave\", handleMouseLeave, elementRef);\n  return value;\n}\nfunction useIntersectionObserver({\n  threshold = 0,\n  root = null,\n  rootMargin = \"0%\",\n  freezeOnceVisible = false,\n  initialIsIntersecting = false,\n  onChange\n} = {}) {\n  var _a;\n  const [ref, setRef] = useState(null);\n  const [state, setState] = useState(() => ({\n    isIntersecting: initialIsIntersecting,\n    entry: void 0\n  }));\n  const callbackRef = useRef();\n  callbackRef.current = onChange;\n  const frozen = ((_a = state.entry) == null ? void 0 : _a.isIntersecting) && freezeOnceVisible;\n  useEffect(() => {\n    if (!ref)\n      return;\n    if (!(\"IntersectionObserver\" in window))\n      return;\n    if (frozen)\n      return;\n    let unobserve;\n    const observer = new IntersectionObserver(\n      (entries) => {\n        const thresholds = Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n        entries.forEach((entry) => {\n          const isIntersecting = entry.isIntersecting && thresholds.some((threshold2) => entry.intersectionRatio >= threshold2);\n          setState({ isIntersecting, entry });\n          if (callbackRef.current) {\n            callbackRef.current(isIntersecting, entry);\n          }\n          if (isIntersecting && freezeOnceVisible && unobserve) {\n            unobserve();\n            unobserve = void 0;\n          }\n        });\n      },\n      { threshold, root, rootMargin }\n    );\n    observer.observe(ref);\n    return () => {\n      observer.disconnect();\n    };\n  }, [\n    ref,\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    JSON.stringify(threshold),\n    root,\n    rootMargin,\n    frozen,\n    freezeOnceVisible\n  ]);\n  const prevRef = useRef(null);\n  useEffect(() => {\n    var _a2;\n    if (!ref && ((_a2 = state.entry) == null ? void 0 : _a2.target) && !freezeOnceVisible && !frozen && prevRef.current !== state.entry.target) {\n      prevRef.current = state.entry.target;\n      setState({ isIntersecting: initialIsIntersecting, entry: void 0 });\n    }\n  }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n  const result = [\n    setRef,\n    !!state.isIntersecting,\n    state.entry\n  ];\n  result.ref = result[0];\n  result.isIntersecting = result[1];\n  result.entry = result[2];\n  return result;\n}\nfunction useIsClient() {\n  const [isClient, setClient] = useState(false);\n  useEffect(() => {\n    setClient(true);\n  }, []);\n  return isClient;\n}\nfunction useIsMounted() {\n  const isMounted = useRef(false);\n  useEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return useCallback(() => isMounted.current, []);\n}\nfunction useMap(initialState = /* @__PURE__ */ new Map()) {\n  const [map, setMap] = useState(new Map(initialState));\n  const actions = {\n    set: useCallback((key, value) => {\n      setMap((prev) => {\n        const copy = new Map(prev);\n        copy.set(key, value);\n        return copy;\n      });\n    }, []),\n    setAll: useCallback((entries) => {\n      setMap(() => new Map(entries));\n    }, []),\n    remove: useCallback((key) => {\n      setMap((prev) => {\n        const copy = new Map(prev);\n        copy.delete(key);\n        return copy;\n      });\n    }, []),\n    reset: useCallback(() => {\n      setMap(() => /* @__PURE__ */ new Map());\n    }, [])\n  };\n  return [map, actions];\n}\n\n// src/useOnClickOutside/useOnClickOutside.ts\nfunction useOnClickOutside(ref, handler, eventType = \"mousedown\", eventListenerOptions = {}) {\n  useEventListener(\n    eventType,\n    (event) => {\n      const target = event.target;\n      if (!target || !target.isConnected) {\n        return;\n      }\n      const isOutside = Array.isArray(ref) ? ref.filter((r) => Boolean(r.current)).every((r) => r.current && !r.current.contains(target)) : ref.current && !ref.current.contains(target);\n      if (isOutside) {\n        handler(event);\n      }\n    },\n    void 0,\n    eventListenerOptions\n  );\n}\nvar IS_SERVER3 = typeof window === \"undefined\";\nfunction useReadLocalStorage(key, options = {}) {\n  let { initializeWithValue = true } = options;\n  if (IS_SERVER3) {\n    initializeWithValue = false;\n  }\n  const deserializer = useCallback(\n    (value) => {\n      if (options.deserializer) {\n        return options.deserializer(value);\n      }\n      if (value === \"undefined\") {\n        return void 0;\n      }\n      let parsed;\n      try {\n        parsed = JSON.parse(value);\n      } catch (error) {\n        console.error(\"Error parsing JSON:\", error);\n        return null;\n      }\n      return parsed;\n    },\n    [options]\n  );\n  const readValue = useCallback(() => {\n    if (IS_SERVER3) {\n      return null;\n    }\n    try {\n      const raw = window.localStorage.getItem(key);\n      return raw ? deserializer(raw) : null;\n    } catch (error) {\n      console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n      return null;\n    }\n  }, [key, deserializer]);\n  const [storedValue, setStoredValue] = useState(() => {\n    if (initializeWithValue) {\n      return readValue();\n    }\n    return void 0;\n  });\n  useEffect(() => {\n    setStoredValue(readValue());\n  }, [key]);\n  const handleStorageChange = useCallback(\n    (event) => {\n      if (event.key && event.key !== key) {\n        return;\n      }\n      setStoredValue(readValue());\n    },\n    [key, readValue]\n  );\n  useEventListener(\"storage\", handleStorageChange);\n  useEventListener(\"local-storage\", handleStorageChange);\n  return storedValue;\n}\nvar initialSize = {\n  width: void 0,\n  height: void 0\n};\nfunction useResizeObserver(options) {\n  const { ref, box = \"content-box\" } = options;\n  const [{ width, height }, setSize] = useState(initialSize);\n  const isMounted = useIsMounted();\n  const previousSize = useRef({ ...initialSize });\n  const onResize = useRef(void 0);\n  onResize.current = options.onResize;\n  useEffect(() => {\n    if (!ref.current)\n      return;\n    if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window))\n      return;\n    const observer = new ResizeObserver(([entry]) => {\n      const boxProp = box === \"border-box\" ? \"borderBoxSize\" : box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n      const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n      const newHeight = extractSize(entry, boxProp, \"blockSize\");\n      const hasChanged = previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n      if (hasChanged) {\n        const newSize = { width: newWidth, height: newHeight };\n        previousSize.current.width = newWidth;\n        previousSize.current.height = newHeight;\n        if (onResize.current) {\n          onResize.current(newSize);\n        } else {\n          if (isMounted()) {\n            setSize(newSize);\n          }\n        }\n      }\n    });\n    observer.observe(ref.current, { box });\n    return () => {\n      observer.disconnect();\n    };\n  }, [box, ref, isMounted]);\n  return { width, height };\n}\nfunction extractSize(entry, box, sizeType) {\n  if (!entry[box]) {\n    if (box === \"contentBoxSize\") {\n      return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n    }\n    return void 0;\n  }\n  return Array.isArray(entry[box]) ? entry[box][0][sizeType] : (\n    // @ts-ignore Support Firefox's non-standard behavior\n    entry[box][sizeType]\n  );\n}\nvar IS_SERVER4 = typeof window === \"undefined\";\nfunction useScreen(options = {}) {\n  let { initializeWithValue = true } = options;\n  if (IS_SERVER4) {\n    initializeWithValue = false;\n  }\n  const readScreen = () => {\n    if (IS_SERVER4) {\n      return void 0;\n    }\n    return window.screen;\n  };\n  const [screen, setScreen] = useState(() => {\n    if (initializeWithValue) {\n      return readScreen();\n    }\n    return void 0;\n  });\n  const debouncedSetScreen = useDebounceCallback(\n    setScreen,\n    options.debounceDelay\n  );\n  function handleSize() {\n    const newScreen = readScreen();\n    const setSize = options.debounceDelay ? debouncedSetScreen : setScreen;\n    if (newScreen) {\n      const {\n        width,\n        height,\n        availHeight,\n        availWidth,\n        colorDepth,\n        orientation,\n        pixelDepth\n      } = newScreen;\n      setSize({\n        width,\n        height,\n        availHeight,\n        availWidth,\n        colorDepth,\n        orientation,\n        pixelDepth\n      });\n    }\n  }\n  useEventListener(\"resize\", handleSize);\n  useIsomorphicLayoutEffect(() => {\n    handleSize();\n  }, []);\n  return screen;\n}\nvar cachedScriptStatuses = /* @__PURE__ */ new Map();\nfunction getScriptNode(src) {\n  const node = document.querySelector(\n    `script[src=\"${src}\"]`\n  );\n  const status = node == null ? void 0 : node.getAttribute(\"data-status\");\n  return {\n    node,\n    status\n  };\n}\nfunction useScript(src, options) {\n  const [status, setStatus] = useState(() => {\n    if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n      return \"idle\";\n    }\n    if (typeof window === \"undefined\") {\n      return \"loading\";\n    }\n    return cachedScriptStatuses.get(src) ?? \"loading\";\n  });\n  useEffect(() => {\n    if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n      return;\n    }\n    const cachedScriptStatus = cachedScriptStatuses.get(src);\n    if (cachedScriptStatus === \"ready\" || cachedScriptStatus === \"error\") {\n      setStatus(cachedScriptStatus);\n      return;\n    }\n    const script = getScriptNode(src);\n    let scriptNode = script.node;\n    if (!scriptNode) {\n      scriptNode = document.createElement(\"script\");\n      scriptNode.src = src;\n      scriptNode.async = true;\n      if (options == null ? void 0 : options.id) {\n        scriptNode.id = options.id;\n      }\n      scriptNode.setAttribute(\"data-status\", \"loading\");\n      document.body.appendChild(scriptNode);\n      const setAttributeFromEvent = (event) => {\n        const scriptStatus = event.type === \"load\" ? \"ready\" : \"error\";\n        scriptNode == null ? void 0 : scriptNode.setAttribute(\"data-status\", scriptStatus);\n      };\n      scriptNode.addEventListener(\"load\", setAttributeFromEvent);\n      scriptNode.addEventListener(\"error\", setAttributeFromEvent);\n    } else {\n      setStatus(script.status ?? cachedScriptStatus ?? \"loading\");\n    }\n    const setStateFromEvent = (event) => {\n      const newStatus = event.type === \"load\" ? \"ready\" : \"error\";\n      setStatus(newStatus);\n      cachedScriptStatuses.set(src, newStatus);\n    };\n    scriptNode.addEventListener(\"load\", setStateFromEvent);\n    scriptNode.addEventListener(\"error\", setStateFromEvent);\n    return () => {\n      if (scriptNode) {\n        scriptNode.removeEventListener(\"load\", setStateFromEvent);\n        scriptNode.removeEventListener(\"error\", setStateFromEvent);\n      }\n      if (scriptNode && (options == null ? void 0 : options.removeOnUnmount)) {\n        scriptNode.remove();\n        cachedScriptStatuses.delete(src);\n      }\n    };\n  }, [src, options == null ? void 0 : options.shouldPreventLoad, options == null ? void 0 : options.removeOnUnmount, options == null ? void 0 : options.id]);\n  return status;\n}\nvar IS_SERVER5 = typeof window === \"undefined\";\nfunction useScrollLock(options = {}) {\n  const { autoLock = true, lockTarget, widthReflow = true } = options;\n  const [isLocked, setIsLocked] = useState(false);\n  const target = useRef(null);\n  const originalStyle = useRef(null);\n  const lock = () => {\n    if (target.current) {\n      const { overflow, paddingRight } = target.current.style;\n      originalStyle.current = { overflow, paddingRight };\n      if (widthReflow) {\n        const offsetWidth = target.current === document.body ? window.innerWidth : target.current.offsetWidth;\n        const currentPaddingRight = parseInt(window.getComputedStyle(target.current).paddingRight, 10) || 0;\n        const scrollbarWidth = offsetWidth - target.current.scrollWidth;\n        target.current.style.paddingRight = `${scrollbarWidth + currentPaddingRight}px`;\n      }\n      target.current.style.overflow = \"hidden\";\n      setIsLocked(true);\n    }\n  };\n  const unlock = () => {\n    if (target.current && originalStyle.current) {\n      target.current.style.overflow = originalStyle.current.overflow;\n      if (widthReflow) {\n        target.current.style.paddingRight = originalStyle.current.paddingRight;\n      }\n    }\n    setIsLocked(false);\n  };\n  useIsomorphicLayoutEffect(() => {\n    if (IS_SERVER5)\n      return;\n    if (lockTarget) {\n      target.current = typeof lockTarget === \"string\" ? document.querySelector(lockTarget) : lockTarget;\n    }\n    if (!target.current) {\n      target.current = document.body;\n    }\n    if (autoLock) {\n      lock();\n    }\n    return () => {\n      unlock();\n    };\n  }, [autoLock, lockTarget, widthReflow]);\n  return { isLocked, lock, unlock };\n}\nvar IS_SERVER6 = typeof window === \"undefined\";\nfunction useSessionStorage(key, initialValue, options = {}) {\n  const { initializeWithValue = true } = options;\n  const serializer = useCallback(\n    (value) => {\n      if (options.serializer) {\n        return options.serializer(value);\n      }\n      return JSON.stringify(value);\n    },\n    [options]\n  );\n  const deserializer = useCallback(\n    (value) => {\n      if (options.deserializer) {\n        return options.deserializer(value);\n      }\n      if (value === \"undefined\") {\n        return void 0;\n      }\n      const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n      let parsed;\n      try {\n        parsed = JSON.parse(value);\n      } catch (error) {\n        console.error(\"Error parsing JSON:\", error);\n        return defaultValue;\n      }\n      return parsed;\n    },\n    [options, initialValue]\n  );\n  const readValue = useCallback(() => {\n    const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n    if (IS_SERVER6) {\n      return initialValueToUse;\n    }\n    try {\n      const raw = window.sessionStorage.getItem(key);\n      return raw ? deserializer(raw) : initialValueToUse;\n    } catch (error) {\n      console.warn(`Error reading sessionStorage key \\u201C${key}\\u201D:`, error);\n      return initialValueToUse;\n    }\n  }, [initialValue, key, deserializer]);\n  const [storedValue, setStoredValue] = useState(() => {\n    if (initializeWithValue) {\n      return readValue();\n    }\n    return initialValue instanceof Function ? initialValue() : initialValue;\n  });\n  const setValue = useEventCallback((value) => {\n    if (IS_SERVER6) {\n      console.warn(\n        `Tried setting sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n      );\n    }\n    try {\n      const newValue = value instanceof Function ? value(readValue()) : value;\n      window.sessionStorage.setItem(key, serializer(newValue));\n      setStoredValue(newValue);\n      window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n    } catch (error) {\n      console.warn(`Error setting sessionStorage key \\u201C${key}\\u201D:`, error);\n    }\n  });\n  const removeValue = useEventCallback(() => {\n    if (IS_SERVER6) {\n      console.warn(\n        `Tried removing sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n      );\n    }\n    const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n    window.sessionStorage.removeItem(key);\n    setStoredValue(defaultValue);\n    window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n  });\n  useEffect(() => {\n    setStoredValue(readValue());\n  }, [key]);\n  const handleStorageChange = useCallback(\n    (event) => {\n      if (event.key && event.key !== key) {\n        return;\n      }\n      setStoredValue(readValue());\n    },\n    [key, readValue]\n  );\n  useEventListener(\"storage\", handleStorageChange);\n  useEventListener(\"session-storage\", handleStorageChange);\n  return [storedValue, setValue, removeValue];\n}\nfunction useStep(maxStep) {\n  const [currentStep, setCurrentStep] = useState(1);\n  const canGoToNextStep = currentStep + 1 <= maxStep;\n  const canGoToPrevStep = currentStep - 1 > 0;\n  const setStep = useCallback(\n    (step) => {\n      const newStep = step instanceof Function ? step(currentStep) : step;\n      if (newStep >= 1 && newStep <= maxStep) {\n        setCurrentStep(newStep);\n        return;\n      }\n      throw new Error(\"Step not valid\");\n    },\n    [maxStep, currentStep]\n  );\n  const goToNextStep = useCallback(() => {\n    if (canGoToNextStep) {\n      setCurrentStep((step) => step + 1);\n    }\n  }, [canGoToNextStep]);\n  const goToPrevStep = useCallback(() => {\n    if (canGoToPrevStep) {\n      setCurrentStep((step) => step - 1);\n    }\n  }, [canGoToPrevStep]);\n  const reset = useCallback(() => {\n    setCurrentStep(1);\n  }, []);\n  return [\n    currentStep,\n    {\n      goToNextStep,\n      goToPrevStep,\n      canGoToNextStep,\n      canGoToPrevStep,\n      setStep,\n      reset\n    }\n  ];\n}\n\n// src/useTernaryDarkMode/useTernaryDarkMode.ts\nvar COLOR_SCHEME_QUERY2 = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY2 = \"usehooks-ts-ternary-dark-mode\";\nfunction useTernaryDarkMode({\n  defaultValue = \"system\",\n  localStorageKey = LOCAL_STORAGE_KEY2,\n  initializeWithValue = true\n} = {}) {\n  const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY2, { initializeWithValue });\n  const [mode, setMode] = useLocalStorage(localStorageKey, defaultValue, {\n    initializeWithValue\n  });\n  const isDarkMode = mode === \"dark\" || mode === \"system\" && isDarkOS;\n  const toggleTernaryDarkMode = () => {\n    const modes = [\"light\", \"system\", \"dark\"];\n    setMode((prevMode) => {\n      const nextIndex = (modes.indexOf(prevMode) + 1) % modes.length;\n      return modes[nextIndex];\n    });\n  };\n  return {\n    isDarkMode,\n    ternaryDarkMode: mode,\n    setTernaryDarkMode: setMode,\n    toggleTernaryDarkMode\n  };\n}\nfunction useTimeout(callback, delay) {\n  const savedCallback = useRef(callback);\n  useIsomorphicLayoutEffect(() => {\n    savedCallback.current = callback;\n  }, [callback]);\n  useEffect(() => {\n    if (!delay && delay !== 0) {\n      return;\n    }\n    const id = setTimeout(() => {\n      savedCallback.current();\n    }, delay);\n    return () => {\n      clearTimeout(id);\n    };\n  }, [delay]);\n}\nfunction useToggle(defaultValue) {\n  const [value, setValue] = useState(!!defaultValue);\n  const toggle = useCallback(() => {\n    setValue((x) => !x);\n  }, []);\n  return [value, toggle, setValue];\n}\nvar IS_SERVER7 = typeof window === \"undefined\";\nfunction useWindowSize(options = {}) {\n  let { initializeWithValue = true } = options;\n  if (IS_SERVER7) {\n    initializeWithValue = false;\n  }\n  const [windowSize, setWindowSize] = useState(() => {\n    if (initializeWithValue) {\n      return {\n        width: window.innerWidth,\n        height: window.innerHeight\n      };\n    }\n    return {\n      width: void 0,\n      height: void 0\n    };\n  });\n  const debouncedSetWindowSize = useDebounceCallback(\n    setWindowSize,\n    options.debounceDelay\n  );\n  function handleSize() {\n    const setSize = options.debounceDelay ? debouncedSetWindowSize : setWindowSize;\n    setSize({\n      width: window.innerWidth,\n      height: window.innerHeight\n    });\n  }\n  useEventListener(\"resize\", handleSize);\n  useIsomorphicLayoutEffect(() => {\n    handleSize();\n  }, []);\n  return windowSize;\n}\n\nexport { useBoolean, useClickAnyWhere, useCopyToClipboard, useCountdown, useCounter, useDarkMode, useDebounceCallback, useDebounceValue, useDocumentTitle, useEventCallback, useEventListener, useHover, useIntersectionObserver, useInterval, useIsClient, useIsMounted, useIsomorphicLayoutEffect, useLocalStorage, useMap, useMediaQuery, useOnClickOutside, useReadLocalStorage, useResizeObserver, useScreen, useScript, useScrollLock, useSessionStorage, useStep, useTernaryDarkMode, useTimeout, useToggle, useUnmount, useWindowSize };\n"],"names":["ErrorFallback","dynamic","then","lib","ssr","appWithTranslation","App","Component","pageProps","router","queryProps","getQueryProviderProps","routerLocale","useRouter","locale","useManualPageLogger","pathname","APP_NAME","ErrorBoundary","FallbackComponent","QueryProvider","dehydratedQueryState","appName","oneLinkConfig","PAGE_VIEW","ActionTypes","TRACK","EXCLUDES","concat","Object","getOwnPropertyNames","getPrototypeOf","aggregateApisByType","obj","total","keys","arr","filterKeysByType","type","filter","key","indexOf","hasOwnProperty","push","noop","isService","length","defaultService","isPromise","value","elem","prefix","attr2obj","attrs","attributes","dataAttrs","rdashAlpha","fcamelCase","all","letter","toUpperCase","nodeType","i","name","camelName","slice","replace","getAttribute","TrackBindingPlugin","attributePrefix","traverseParent","_attributePrefix","_traverseParent","listen","rootElement","document","body","callback","_clickHandler","remove","_rootElement","EventListener","_handleClick","bind","target","event","isModifiedEvent","metaKey","altKey","ctrlKey","shiftKey","isLeftClickEvent","button","srcElement","dataset","_getData","parentElement","parentNode","eventName","mergePagedefaults","canUseDOM","qs","fromEntries","URLSearchParams","window","location","search","e","console","warn","defaults","pageViewEvent","pageDefaults","requestTimeout","Transaction","pvTransactions","transactionId","create","current","get","tId","set","Metrics","services","options","vendors","enabled","undefined","debug","metrics_debug","customParams","cancelOnNext","Array","isArray","map","vendor","createService","inst","api","instance","instantiate","apis","apiList","extractApis","service","reduce","constructor","transaction","routeState","apiImpl","impl","args","_prepareTrack","freeze","on","forEach","removeListener","setRouteState","_cancelPreviousPromiseIfPending","state","useTrackBinding","_removeTrackBindingListener","invariant","track","_trackBindingListener","useTrackBindingPlugin","trackBindingPlugin","destroy","_removeListeners","_callServices","promise","params","clearTimer","timer","clearTimeout","results","Promise","resolve","process","isTimeout","result","apiExists","warning","requestPromise","setTimeout","error","Error","status","response","catch","entry","shouldCancel","_createTransaction","_clearTransaction","_doTrack","dispatchEvent","eventFacade","emit","log","every","item","_getDefaultData","_mergeWith","assign","data","_addCancelHook","reject","_addEventNameToPromise","shouldMerge","unshift","_inspectArguments","removeAllListeners","EventEmitter","createMetrics","metrics","AdobeTagManager","digitalData","pageName","server","setItem","String","setEventInfo","_addEventInfo","shouldAddEvent","_load","satellite","_satellite","_track","logError","isEmpty","_cleanAndSetData","_promise","dispatchReady","seedScript","querySelector","createElement","onload","onerror","src","seedFile","setAttribute","head","appendChild","names","events","eventInfo","eventAction","_resetEvents","_set","path","_unset","_value","unset","propertySearchLocationPath","propertySearchDateInfoPath","productIDPath","productInfo","productId","CustomEvent","metricsConfig","Interface","ImageClickID","Scroll","Img","NoValue","Modal","Link","Dynamic","Carousel","Collage","Full","Half","Headliner","Hero","Filmstrip","Patchwork","Offset","Gallery","Masthead","Sticky","clearImageAnalyticsData","isBrowser","logWarning","ANALYTICS_GLOBAL_CLICK_EVENT","env","trackEvent","isAnalyticsImageTrackingEnabled","entries","existingValue","getBaseUrl","slug","URL","href","origin","number","friendlyNumber","page","expType","siteExperience","category","experience","siteType","pageInfo","user","brandCode","brandName","lang","destinationUrl","parseISO","argument","date","offset","invalidDate","constructFrom","in","NaN","additionalDigits","dateStrings","splitDateString","timeString","array","dateString","split","patterns","dateTimeDelimiter","test","timeZoneDelimiter","substr","token","timezone","exec","time","parseYearResult","parseYear","regex","captures","match","year","restDateString","parseInt","century","Date","fourthOfJanuaryDay","dateRegex","isWeekDate","dayOfYear","parseDateUnit","month","day","week","dayOfWeek","validateWeekDate","setUTCFullYear","isoWeekYear","getUTCDay","setUTCDate","getUTCDate","validateDate","daysInMonths","validateDayOfYearDate","isLeapYearIndex","Math","max","isNaN","timestamp","parseTime","timeRegex","hours","parseTimeUnit","minutes","seconds","validateTime","millisecondsInHour","millisecondsInMinute","parseTimezone","timezoneString","timezoneRegex","sign","validateTimezone","tmpDate","toDate","setFullYear","getUTCFullYear","getUTCMonth","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseFloat","createPropertySearchDateInfoString","props","arrivalDate","departureDate","currentDate","format","parsedArrivalDate","toISOString","parsedDepartureDate","formattedParsedArrivalDate","formattedParsedDepartureDate","numNights","differenceInCalendarDays","daysInAdvance","numRooms","numAdults","numChildren","isFlexDatesEnabled","isUsePoints","isSpecialRatesUsed","distance","meetingCapacity","meetingStartDate","meetingEndDate","isMeetingFoodOrBeverage","isMeetingAudioVideo","convertBoolToYNString","convertString","toLowerCase","trim","Boolean","true","false","booleanUrlParam","booleanYNMap","toString","defaultPageData","getBrand","hiltonName","isHiltonPortfolio","receivedBrandCode","receivedBrandName","getPageDetails","brandPath","pageDetails","pageDetail1","pageDetail2","pageDetail3","pageDetail","index","capitalizeHyphen","contentType","primaryCategory","adobePageType","trackEventType","input","fullBrandArr","dynamicData","desc","getPageName","splitBrandPath","dynamicTagName","getDynamicTagName","getDetailsForPage","pageDetailLevels","originalFullBrandPath","replacementPageDetails","segment","encodeURIComponent","details","_details","getTrackingEventType","pageType","analyticsTaggingOverrides","getPageType","legacyTrackEventType","useMetrics","language","fullBrandPath","mappedPage","brandData","isCPMEditor","metricsInstance","useMemo","useMetricsInstance","appVersion","ExtendedAdobeTagManager","mergedProps","setDataLayer","ctyhocn","country","template","pageDetailOne","pageDetailTwo","pageDetailThree","legacyPrimaryCategory","legacyPageType","brandCodeForPageName","s","capitalize","charAt","isBrandPage","title","setDefaultPageData","setPageData","trackUserLoggedIn","hhonorsNumber","tierName","points","goUserTypes","join","setPageInfo","setPageDetails","detailIdx","setAttributes","valuesByAttributes","attribute","trackPageView","removePropertySearchInfo","propertySearchDateInfo","trackTextHeadlinerClick","textHeadlinerNumber","itemNumber","totalItems","leftArrow","rightArrow","trackBrandShowcaseClick","brandShowcaseNumber","trackCarouselNavigationClick","navigationClick","carouselNumber","totalDots","label","trackFullWidthImageClick","fullWidthImageNumber","trackGridItemClick","gridNumber","is4XGrid","trackTabItemClick","tabComponentNumber","trackAlertLinkClick","text","linkLabel","trackAlertClick","trackSearchPageWidgetSubmission","searchData","rooms","searchType","dates","from","til","createPropertySearchRateCodeString","analyticsSpecialRates","groupCode","rates","corporateCode","corpAccount","promoCode","isTravelAgents","isTripleA","isAarp","isSenior","isGovernment","isOwner","isEmployee","isFriendsAndFamily","createPropertySearchCriteriaString","adults","children","parseStringyBool","flexDates","values","some","trackGenericAction","actionDetail","setErrorPageData","errorCode","errorName","_addPageBottom","script","scriptContent","isMetricsDisabled","localStorageItem","localStorage","getItem","disableMetricsCookie","JSON","useEffect","pageData","formalName","url","seo","pageTitle","analyticsTagging","createCpmComponentDefinition","Footer","componentParams","navigationList","experimentationAgents","useBrandData","shouldRenderExperiment","useShouldRenderExperiment","hidePageFooter","socialLinks","socialMediaLinks","contactPhoneLink","phone","defaultPhoneNumbers","footerLinks","isNavigationLinks","items","listData","links","link","experimentationConfiguration","hideFooter","theme","includes","BrandComponentThemeInline","OscFooter","replaceLang","stringValue","mapData","isBrandNavigationLinks","megaNavLinks","primaryNav","navItem","mapMegaNavLink","secondary","secondaryNavItems","subMenu","filtered","mainNavLinks","Header","hidePageHeader","languageCode","isHeaderH1","isPortfolioHomePage","asPath","getIsPortfolioHomePage","pageHeading","hideHeader","filterMegaNavExperiments","componentClassName","BrandsHeader","brandFormalName","brandUrl","showLanguageSelector","honorsSignInUrl","getHonorsSignInUrl","honorsJoinUrl","getHonorsJoinUrl","forgotInfoUrl","getForgotInfoUrl","globalPrivacyUrl","getGlobalPrivacyUrl","honorsAccountUrl","getHonorsAccountUrl","ohwBaseUrl","heading","isNewWindow","showNewWindowIcon","useStickyLayout","ref","thresholdSticky","useState","isSticky","setIsSticky","checkForSticky","useDebounceCallback","height","stickyWrapperRef","windowHeight","innerHeight","wrapperHeight","offsetHeight","round","useResizeObserver","onResize","isWrapperSticky","component","SearchWidgetCpm","selection","shopAvailOptions","isGroupSearch","displayOption","contentParam","query","content","DEFAULT_LANGUAGE","corporateAccount","useCorporateAccount","baseAppUrl","getBrandRouteParams","brandSlug","auxPageSlug","sessionId","getVisitorId","isPartnerBrand","maxNumRooms","useSingleInstanceQueryStrings","cid","awc","dclid","gclid","wtmcid","isNewTabTest","setIsNewTabTest","isAmenityIdsFilterTest","setIsAmenityIdsFilterTest","newTabTest","useConductricsSelection","useSearchFormNewTabTest","enableTest","Status","OK","PENDING","isLoaded","choice","amenityIdsFilterTest","useAmenityIdsFilterTest","mapDataToSpecialRates","additionalQS","specialRates","stickyTest","useStickySearchFormTest","containerRef","useRef","isLandingPage","amenityIdsFilterTestQS","variantB","f_amenityIds","div","className","cx","LocationProvider","BrandsSearch","isBrandRoute","isDayUse","defaultLanguage","autocompleteUri","additionalQSParameters","onSearchSubmit","sendReward","Goals","FindAHotelClick","handleSearchRedirect","formData","newBrowserTab","deepLinkUrl","generateUrl","searchUrlParameters","open","shouldOpenNewTabOnSubmit","stringify","mappingSpec","sharedMappingSpec","cpmComponentName","SearchWidget","generateCpmAppInterface","fetchServerCpmPage","CpmRenderer","getBrandTaggingValues","brandTagging","postfix","brandPageDetails","cidPostfix","getAssetPath","CpmPage","cpmData","localeCode","featureToggles","shouldIncludeBackToTopButton","previewSegments","useAuth","authClient","Intl","Locale","GenericError","description1","description2","FeatureTogglesContext","Provider","CorporateAccountContext","BrandDataContext","MetricsContext","PreviewSegmentsContextProvider","sectionNames","mappingName","campaignCodeTaggingValues","top","footer","main","Layout","isBrandHomePage","isBrandHomePageUrlFormat","bottom","assetPath","brandSvgPath","getBrandSvg","articleTitle","seoImage","getDependencies","metricsProps","getObjValues","ErrorPage","helpfulLinks","useTranslation","t","useEffectDeps","h1","h2","data-testid","p","nav","ul","li","linkURL","span","aria-hidden","ReactSVG","iconUrl","Icon","icon","id","PhoneNumberLink","hint","usePhoneNumberHint","hasStandardHint","sanitizeLinkProps","linkProps","underline","PhoneNumberSection","showIcon","size","variant","h3","isContactInfo","x","numbers","phoneText","ContactInfo","statusCode","contactInfo","returnObjects","honors","brand","helpfulLinksRaw","searchUrl","errorKind","config","appId","authEndpoints","browser","DX_AUTH_API_SERVER_URI","gqlEndpoints","Alert","isTruncated","rest","useCycle","active","hasSlides","cycleProps","role","hidden","data-osc-product","truncate","AlertDialog","ariaLabel","hasChildrenWithTitle","React","setOpen","commonProps","isOpen","onDismiss","dialogTrigger","onClick","Dialog","cycleId","aria-live","AlertsControls","hideLabel","loop","onNextClick","onPreviousClick","Pagination","controls","Alerts","onChangeIndex","validSlides","child","slides","count","Cycle","AlertsContent","BrandMessagesDocument","operationName","operationString","originalOpName","DynamicMarkdown","BrandAlertsCpm","useBrandMessagesQuery","variables","useQuery","queryKey","isFetching","refetch","messages","clientMessages","brandLink","shortDescription","headline","messageProps","adaDescription","messageType","getStatus","AttachedContent","description","alignContent","brandComponentTheme","textAlignCss","isDark","isLight","BrandTextHeader","BrandTextBody","BrandLink","data-conductrics-goal","goal","data-conductrics-value","breakpoints","sm","md","lg","xl","xxl","asNumber","BrandCarousel","isFullScreen","images","onArrowClick","activeIndex","setActiveIndex","onNavigation","cmsTranslationClasses","isXL","useMediaQuery","getBreakpoint","isSmall","imageUrls","image","width","aspectRatio","overrideImageUrl","GetHeightForWidthAndAspectRatio","alt","captionData","generateCpmCarouselMetrics","CarouselSingle","showAlternateControls","extractInstanceIndexFromId","dashIndex","lastIndexOf","substring","BrandCarouselEditorButtons","slideIndex","cmsDocumentControl","$ref","ForTheStayOverlay","overlayPosition","makeContext","Context","createContext","useContext","useFeatureToggles","headingLevel","asset","cpmAssets","CpmMappingError","displayName","altText","aspectRatios","caption","captionLink","longDescription","topHeadingLevel","calculateHeadingLevel","BrandCarouselCpm","itemsWithManageContentButton","setSlideIndex","textAlign","noMargin","createManageContentButton","useCreateManageContentButton","imageCount","orientation","HeadingLevelProvider","level","backgroundIllustration","isParallax","backgroundParallax","AnimateRevealItem","delay","animationType","isAnimated","newIndex","mapComponentData","documentBrandCode","code","BrandShowcaseCpm","onItemClicked","useCallback","BrandShowcase","logoUrl","baseUrl","video","videos","segmentIds","source","BrandVideo","YouTubeVideo","wrapperClassName","isAutoPlay","isAutoLoop","BREAK_POINTS","small","medium","large","extraLarge","twoExtraLarge","getAspectRatioUrl","imgUrl","twoXimgUrl","threeXImgUrl","srcUrl","cw","has","ch","aspectRatioVariants","accum","breakPointName","breakPointWidth","generateCollageMetrics","itemTitle","position","CollageMetrics","clickID","osc","ANALYTICS_NO_VALUE","COLLAGE_ANALYTICS_COUNT","ImageType","function","ImageFunction","CollageContent","isFlipped","isInView","logo","brandLinkVariant","propertyTheme","base","Image","fill","imageUrl","HeadingLevel","headingLevelFallback","metricsOnClick","CollageDesktopImage","imageWithRatioUrl","isPrimaryImageRatio","figure","Caption","primaryImageRect","secondaryImageRect","primaryImage","primaryCaptionData","secondaryImage","secondaryCaptionData","isTailored","speed","carouselImages","useIntersectionObserver","threshold","freezeOnceVisible","isIntersecting","primaryImageRef","secondaryImageRef","useRect","primaryImageWidth","secondaryImageWidth","screenWidth","useWindowSize","observedWrapper","getIsReducedMotion","intersectionRef","optimizedCarouselImages","img","handlePrimaryCaptionClick","PRIMARY_CAPTION_POSITION","section","Parallax","disabled","inView","accent","border","SECONDARY_CAPTION_POSITION","imageDisplay","animation","constructImage","__typename","_id","selectLastAssetWithAspectRatio","selectFirstAssetWithAspectRatio","primaryImageThreeByTwo","secondaryImageThreeByTwo","primaryCaptionAsset","secondaryCaptionAsset","getIsFlipped","CollageCpm","EditorialSnippet","ctaLink","socialMediaLink","socialMediaIcon","isSquareImage","hgroup","unoptimized","imageFunction","cardCarouselMetrics","click","CardCarouselItem","rect","imageAltTxt","imageAspectRatio","isEditorialComponent","isInsideBorder","currentCard","totalCards","tabIndex","mainHeadline","handleTrackCardCarouselItemMetrics","generateCardCarouselMetrics","ResponsiveImage","anchorClassName","CardCarousel","mainShortDescription","setCardItemFocus","activeElement","itemToFocus","useArrowKeys","closest","cardCarouselItem","goToNextItem","nextElementSibling","preventDefault","stopPropagation","listElement","focus","findNextItemToFocus","goToPreviousItem","previousElementSibling","findPreviousItemToFocus","isRtl","showPreviousArrow","setShowPreviousArrow","showNextArrow","setShowNextArrow","isRtlUtil","headerId","useId","firstVisibleItemIndex","setFirstVisibleItemIndex","lessThanThreeItems","sideScroll","element","step","scrollLeft","onChange","maxScrollwidth","scrollWidth","carouselWidth","arrowButtonRect","onScrollArrow","handleKeyPressDown","ownerDocument","isLinkPresent","findFirstLinkIndex","findIndex","invisible","handlePreviousButtonClick","clientWidth","scrollValue","prevVal","aria-labelledby","onScroll","itemProps","onKeyDown","data-use-arrow-keys","handleNextButtonClick","EditorialCarousel","carousel","contentBelowImg","imgWrapperClassName","carouselHeadline","subHeadline","Markdown","Pullquote","blockquote","stat","ol","timeline","Chip","as","iconName","shouldInheritStyles","isIconTrailing","preset","chipLabel","VARIANT_STYLES","general","marketing","neutral","PRESET_STYLES","featured","new","sale","package","recentlyRenovated","variantClassName","presetClassName","Element","BrandEditorialCarousel","teaser","editorialVariant","teaserType","teaserData","headingAndDescription","Stats","Timeline","channel","EditorialHamptonHexVisual","svg","viewBox","xmlns","d","cpmRelated","cpmRelatedDocuments","relatedDocuments","removeNullyFromArray","cardImage","_meta","mainImage","chips","chip","social","gridDescription","cards","display","CpmEditorial","socialLink","segmentedCards","useSegmentedItems","maintainUnsegmentedCount","carouselItems","filteredLinks","Experimentation","HamptonHexVisual","modalImageUrl","FourXGrid","listLink","isThemeAdded","hexEnabled","relative","DynamicGridWOM","listTextAlign","listHeadline","listDescription","DynamicGrid","onViewItem","selectedItemId","val","Number","isFinite","isWA","imageOverlayButtonText","desktopImageUrl","tabletImageUrl","mobileImageUrl","imageAltText","FullWidthImageCpm","FullWidthImage","overlayButtonClicked","generateGalleryMetrics","DEFAULT_GALLERY_POSITION","DEFAULT_GALLERY_COUNT","GalleryImage","idx","dialogTitle","isDialogOpen","setIsDialogOpen","isMobile","BREAKPOINTS","isDesktop","numberOfItemsInARow","aria-label","wrapperTag","startingIndex","generatePartialGalleryMetrics","isGalleryExpanded","setIsGalleryExpanded","galleryItemsLength","showViewBtn","shouldHideImage","TabsContext","useTabs","sanitizeId","TabButton","activeClassName","inactiveClassName","handleOnClick","addRef","onTabKeyDown","onTabSelect","safeId","isActive","aria-controls","aria-selected","handleOnTabClick","TabListButton","TabList","forwardedRef","TabListScrollable","adjustScrollPosition","distanceFromButtonToBeginningOfTabListDiv","buttonWidth","tablistWidth","leftPaddingOfScrollableDiv","getComputedStyle","documentElement","fontSize","leftArrowWrapperClassName","rightArrowWrapperClassName","arrayChildren","toArray","isRTL","tablistRef","useForkedRef","isBackwardArrowVisible","setBackwardArrowVisible","isForwardArrowVisible","setForwardArrowVisible","focusedTabId","setFocusedTabId","box","focusedTab","getElementById","offsetLeft","offsetWidth","updateArrowVisibility","widthDiff","tabListWidth","showScrollBackwardArrow","tabListRect","onTabListScroll","threeItems","fourItems","getScrollMultiplier","scrollForward","scrollBackward","scrollToFocusedItem","lessOrEqual5","lessOrEqual2","leftArrowhandler","onFocus","rightArrowHandler","TabPanel","forwardRef","TabPanels","setCount","Tabs","changeWithArrow","useUpDownArrows","defaultActive","onTabChange","setActive","refs","changeActiveTab","nextTabIndex","currentIndex","previousTabIndex","isModifiedKeyStroke","tabRef","brandIconMapper","livsmartBreakfast","livsmartFitness","livsmartGrill","livsmartKitchen","livsmartLaundry","livsmartPetFriendly","livsmartStudio","embassyBreakfast","invertedName","embassyFitness","embassyReception","hamptonHexagon","twentyFourHourMemberService","access","account","airlineMiles","amazonBox","americanExpress","benefitsStar","carRental","chooseYourRoom","complimentaryBreakfast","deviceApp","diamond","digitalCheckin","digitalKey","dining","eliteRolloverNights","fifthNightFree","freeWifi","giftPoints","honorsDiscount","honorsOffers","lateCheckout","loungeAccess","lyftRides","onPropertyRewards","orderAhead","pointsMoney","poolPoints","pointsPromotions","premiumWifi","roomGuarantee","roomUpgrade","secondGuest","transferPoints","waterBottle","hotelStays","convertPoints","buyPoints","meetingEvents","hgv","allInclusiveSpaDiscount","cookie","TabbedGallery","activeCategoryId","setActiveCategoryId","focusedCategoryId","setFocusedCategoryId","uniqueCategories","Set","categories","categoryItems","isFocusedTab","isRightBeforeFocusedtab","onBlur","transformImage","assets","mapAssetsToImages","crypto","randomUUID","CpmGallery","isTabbedGallery","galleryItems","flatMap","isGraduate","subheading","isCTADisplayed","galleryMetrics","mapTextAlignToClassname","addIssue","clearIssue","message","GridThreeSixNine","isWom","listSubheading","filteredAssets","transformImages","videoData","multimedia","mapMultimediaListToVideoProps","forcedIndex","even","media","HalfAndHalf","isLXR","HalfAndHalfCarousel","isReverse","hasParallax","mediaRatio","HalfAndHalfOsc","hasImageCarousel","CpmImageHeadliner","ImageHeadliner","ImageHeadlinerItem","HeroVideo","hasHorizontalLine","badgeImageAltText","badgeImageUrl","videoUrl","videoGroup","videoLabel","videoName","posterImageUrl","videoCaptionData","audioTracks","captionTracks","transcriptTracks","markupSchemas","illustrationOverlay","isMuted","wrapperElement","attachedContentAnimate","useVideoPlayer","hasAudio","videoProps","videoCaptionProps","videoControlsProps","videoTranscriptProps","hasActiveTranscript","activeTranscript","isCenter","isLeft","isRight","VideoPlayerMarkup","Video","videoId","VideoCaptions","VideoControls","videoVariant","VideoTranscript","hr","matchMedia","matches","HeroTextOverlay","hasGalleryButton","desktop","tablet","mobile","brandLinkMetricsOnClick","captionMetricsOnClick","isReducedMotion","desktopUrl","mobileUrl","getCurrentAspectRatioAndUrl","imageUrlMobile","imageUrlTablet","imageUrlDesktop","aspectRatioMobile","mobileAspectRatio","aspectRatioTablet","tabletAspectRatio","aspectRatioDesktop","desktopAspectRatio","rx","y","getIsWindowVerticallySmall","Content","CustomMarkdown","markdown","CardContentArea","animationPercent","isFocused","setIsFocused","cta","ScrollAnimation","primaryCTA","triggerRef","videoContainerRef","setAnimationPercent","showInitialContent","setShowInitialContent","shouldAnimateWindow","setShouldAnimateWindow","shouldControlsRemainVisible","getXOffset","min","getYOffset","getBorderWidth","getButtonOffset","start","reduceMotion","prefersReducedMotion","getPrefersReducedMotion","verticallySmall","style","scrollBehavior","handleScroll","triggerRect","getBoundingClientRect","videoRect","videoHeight","handleResize","addEventListener","removeEventListener","setRefs","node","inViewRef","insetInlineStart","opacity","borderWidth","videoElement","muted","priority","shouldAlignContentPosition","mastheadAnalytics","MASTHEAD_IMAGE_POSITION","MASTHEAD_IMAGE_COUNT","multimediaCaption","firstMultimedia","multimediaCaptionData","linkUrl","makeContent","markdownEditor","contentBlock","scrollingAnimation","badgeUrl","staticDisplay","textOverlayDisplay","textboxPosition","horizontalLine","isHomepage","isEY","generateMastheadAnalytics","MastheadOverlayImage","HeroImage","forTheStayIllustration","BrandHorizontalTabbedSectionContent","playerProps","videoSize","copy","isYouTubeShort","isPortrait","isLandscape","isMultimediaVideo","isVideo","isVerticalVideo","isImage","isCinemagraph","playerId","playerClassNames","useVideoPlayerClasses","isLarge","transcriptStyle","hasMediaContent","Transcript","wrapperClassNames","captionClassNames","controlsClassNames","iconType","brandIcon","iconMapper","BrandHorizontalTabbedSection","defaultTab","selectedTab","setSelectedTab","hasIconOrLogo","tabId","currentId","dispatchVideoEvent","VIDEO_EVENTS","PAUSE_SELF","tab","TabIcon","panel","shouldIncreaseLevel","VerticalTabButton","VerticalTab","VerticalTabPanel","tabPanelId","setInitialExpandedAccordions","defaultValue","_","Accordion","containerClassName","iconIndicatorFillColor","iconIndicatorExpandedFillColor","onValueChange","shouldUnmountChildrenWhenCollapsed","uncontrolledExpandedAccordion","setUncontrolledExpandedAccordion","isUncontrolledComponent","languageDirection","getLanguageDirection","isStackedAccordion","handleIconType","iconSize","RadixAccordion","dir","collapsible","handleValueChange","isExpanded","buttonLabel","expandedButtonLabel","collapsedButtonLabel","accessibleButtonLabel","expandedButtonAccessibleLabel","collapsedButtonAccessibleLabel","iconVariant","shouldRenderChildren","buttonWrapperClassName","data-osc","asChild","TriggerWrapper","expandedClassName","collapsedClassName","Wrapper","VerticalTabs","Children","accordionClassName","accordionCollapsedClassName","accordionExpandedClassName","accordionButtonWrapperClassName","accordionIconIndicatorFillColor","accordionIconIndicatorExpandedFillColor","defaultActiveId","mobileDesktopBreakpoint","onAccordionClick","tabList","isValidElement","validTabs","header","aria-orientation","BrandVerticalTabBody","flex","BrandVerticalTabbedSection","cmsId","multimediaList","hasImage","hasVideo","TabbedSection","filteredItems","tabbedSectionDisplay","VerticalTabbedSection","targetTabIndex","MarkdownBlock","isBorderTrim","wrapperRef","overrides","makeHeadingOverrides","makeDescriptionClassName","a","makeLinkClassName","makeOrderedListClassName","makeUnorderedListClassName","makeOrderedListItemClassName","TextualBlock","hasBorderTrim","CurvedHeading","textClassNames","curvedText","curvature","textBelow","nodeBelow","shouldDisable","curvedHeadingId","textRef","svgTextDimensions","calculatedCurvature","sin","PI","viewBoxHeight","shouldDisableCurve","useHasUserModifiedFontDefaults","viewBoxWidth","defs","textPath","xlinkHref","startOffset","textAnchor","ByHilton","g","cmsDocumentType","isStory","isGraduateBrand","mappedContentBlocks","kind","orderedList","unorderedList","blocks","curvedHeader","headlineTooLong","isTextAlignUsed","headerSvg","TextBlockCpm","borderTrim","disableCurve","filteredBlocks","block","TextBlock","TextHighlight","direction","VideoPoster","attachedContent","shouldAnimateReveal","VideoPlayer","transcript","VideoPosterCpm","isClient","useIsClient","PatchworkGridRow","rowHeadlineClassName","shouldUseGetAspectRatio","customContent","numImages","startingImageIndex","patchWorkHeadline","splice","numImagesInRow","rowImages","normalizedImageIndex","RowImage","imageIndex","orderedElements","RowHeadline","reverse","imageRef","imageSize","imageSource","variants","imageSrc","setImageSrc","aspectRatioImage","objectFit","imageType","generatePatchworkGridMetrics","PatchworkGrid","rows","row","rowWithHeadline","find","currentImageIndex","isEnabled","createImageObject","additionalImages","patchworks","topPadding","bottomPadding","ImageControlButton","labelText","navigationText","justClicked","setJustClicked","onButtonClick","timeout","onButtonFocus","NextImage","onLoad","placeholder","blurDataURL","generateFilmstripMetrics","filmstripMetrics","imagesLength","getOffsets","imageWidth","doubleOffset","previousPreviousOffset","previousOffset","nextOffset","nextNextOffset","touchStart","setTouchStart","touchEnd","setTouchEnd","itemText","nextText","itemLabel","activeIndexLabel","getDisplayIndex","previousText","selectors","imgBaseAspectRatio","imgBaseClassName","trackFilmstripMetrics","scroll","onTouchEnd","handleTouchEnd","SWIPE_SENSITIVITY","onTouchMove","handleTouchMove","targetTouches","clientX","onTouchStart","handleTouchStart","translate","getPreviousPreviousIndex","getPreviousIndex","getNextIndex","getNextNextIndex","filmStripImages","CpmFilmStrip","BrandFilmstrip","generateFullWidthMediaMetrics","FULL_WIDTH_MEDIA_POSITION","FULL_WIDTH_MEDIA_COUNT","FullWidthMediaContentBlock","alignment","isCentered","FullWidthMedia","imageWrapperClass","figureClassName","videoClassName","controlsAlignment","align","getHamptonHexColor","HamptonHexBlock","article","backgroundImage","backgroundColor","FullWidthMediaAndCopyOverlay","shouldDisplayStandardContent","shouldDisplayHamptonHex","generatePartialFullWidthMediaMetrics","OFFSET_IMAGE_COUNT","reduceJsxToString","previous","getReactNodeInnerText","jsx","hasProps","prototype","call","default","isInversePattern","innerString","handleOffsetMetric","generateOffsetMetrics","OFFSET_LARGE_IMAGE_POSITION","OFFSET_SMALL_IMAGE_POSITION","BrandOffset","headlineString","DEFAULT_OFFSET_IMAGE_POSITION","OffsetCpm","useHeadingLevel","_accordionHeadingLevel","expandedAccordions","setExpandedAccordions","areAllExpanded","collapseAll","expandAll","detail","Details","ContentWrapper","markdownProps","listItem","hash","str","charCodeAt","blockContent","keyContent","faqContent","subTopic","faqBlocks","faq","faqItem","answerParagraph","paragraph","answerOrderedList","answerUnOrderedList","question","CpmAccordion","firstItem","renderedItems","Spacer","styles","defaultStyles","backgroundRepeat","clipPath","padding","polygon","ry","EnterpriseFiligree","fillColor","testId","IllustrationBlock","illustration","LivSmartAccent","LivSmartFurniture","HamptonSignature","desktopDefinedImage","cmsDefinedAspectRatioImages","tabletDefinedImage","mobileDefinedImage","DynamicGridCPM","gridColumns","tabletImageAspectRatio","mobileImageAspectRatio","columnCount","usePreviewSegmentsFromUrl","previewSegmentIds","setPreviewSegmentIds","segments","defaultPublicVars","SignInSuccess","JoinHiltonHonorsTAB","JoinForFreeCTA","EngagementWithVideoHONORS","HiltonHonorsAppTAB","EngagementWithVideoAPP","DownloadForFreeCTA","SignInCTA","HiltonGetaways","EditBrandSearchWidget","BrandAlerts","Editorial","Grid369","MastheadImage","CmsPageModelDocument","isBoolean","isString","isAlignment","isPosition","isTheme","isFullWidthMediaDisplay","isImageDisplay","isBackgroundIllustration","illustrationVariants","illustrationBlockVariant","isTextOverlay","textOverlayVariants","isPaddingAmount","isHeadingLevel","isInteger","isCmsAspectRatio","convertCmsAspectRatioToCpmAspectRatio","effectsList","makeParamValidator","validator","doValidation","stripUndefineds","parse","getPath","acc","prop","getProp","hasProp","mappingSchema","mappingKind","isEditable","namedImages","oneLinkNoTx2","oneLinkNoTx3","oneLinkNoTx4","oneLinkNoTx5","oneLinkNoTx6","oneLinkNoTx7","oneLinkNoTx8","oneLinkNoTx9","oneLinkNoTx10","oneLinkNoTx11","oneLinkNoTx12","oneLinkNoTx13","oneLinkNoTx14","oneLinkNoTx15","cmsDocumentTypes","oneLinkNoTx1","isGridColumn","isEditorialDisplay","experienceId","experienceData","isMediaRatio","isIllustrationBlock","valid","aaaRate","travelAgentRate","governmentOrMilitaryRate","seniorRate","redeemPts","aarpRate","deeplinkParameter1","deeplinkParameter2","deeplinkParameter3","deeplinkParameterValue1","deeplinkParameterValue2","deeplinkParameterValue3","tabDisplay","isTabDisplay","isOrientation","isHeaderSvg","isMappedComponentName","getBrComponentName","componentBr","getFromPageByRef","getContent","getData","contentVariants","cdnLink","mapVariantScreenSizeToBrandImageSize","firstVariant","compoundedImage","getImageWithVariantsFromPage","expansionPanelImage","campaignId","variantsSizes","assetRef","getDocumentOfTypeFromPageAndComponent","documentTypes","models","getModels","documentTypesWithPrefix","documentType","docData","convertDocumentKeyToInt","modelsToRefs","sort","b","modelKey","transformLink","addCampaignCodeToUrl","translatedLink","compoundImageBreakpointSizes","collage","xs","sizes","tabs","threeSixNineGrid","fourXExpansionPanel","halfAndHalf","fullWidth","imageHeadliner","threeSixNineExpansionPanel","fourXGrid","brandCarousel","getBrandCodeFromPage","info","transformLinksEnhancer","singleLink","makeCmsComponentDocumentEnhancer","componentSchema","addAssetsEnhancer","makeAddAssetsEnhancer","defaultPropertyImages","generateStructuredAssetFromBloomreachAsset","structuredAsset","imagePointer","bloomreachAsset","brandCodes","resolvedAsset","getAssetImage","fn","objectMapWithKey","assetAtRatio","aspectWidth","aspectHeight","aspectRatioAsFloat","largestPossibleDimension","namedImage","namedImageBreakpointSizes","compoundImageBreakpointSize","searchParams","ceil","generateStructuredAssetFromOldStyleImage","oldStyleImages","imageName","imageCompound","getImageCompound","pageBrandCode","toJSON","l","r","lMatchesBrandCode","rMatchesBrandCode","documentNumber","step7","addAspectRatioImages","step6","hasAspectRatiosDefined","convertedAspectRatioMobile","convertedAspectRatioTablet","convertedAspectRatioDesktop","relatedDocumentsRef","cbId","enhancedDoc","itemExcludedFromTranslation","getTaggingValuesFromCpmAnalytics","registerExperimentItem","isCpmEditor","agentId","variation","add","handleError","fallback","errorAccumulator","err","applyMapData","mappedData","mapCpmData","pageBr","extractCampaignCodeTaggingValues","clear","getDocument","componentName","getName","parseComponentParams","componentParamsRaw","universalParams","sanitizeUniversalParams","validOrUndefined","oneLinkNoTx","anchorId","convertTopHeadingLevelToInteger","isCmsHeadingLevel","cmsHeadingLevel","componentSpecificParams","parser","supportedEffects","effect","hasComponentSpecificParams","hasUniversalParams","componentSpecificParamsWithSupported","getParameters","checkValidQueryString","questionMarkCount","queryString","fixedQueryString","campaignCodeSegments","buildSearchStringForAnalyticsCampaignId","keyValue","decodeURIComponent","enhanceData","experimentationAgentIds","cmsData","translateNavigationListLinks","navigationItems","isBrandNavigationDocumentItems","secondaryItems","isNavigationListDocumentItems","linkGroup","cpmListData","itemRefs","directRefs","getItemsRefs","itemsRef","documentNumbers","Map","getDocumentKeyNumbersMap","keyNumbers","keyedItems","mappedListData","keyItems","isUntranslated","isItemUntranslated","padStart","log10","enhancedData","mappedDocumentData","getDocumentByRef","isNodeWithChildren","getMainDocument","rootDocument","mainDocumentRef","childDocument","mainDocument","getPagePrimaryImage","firstAssetOfAspectRatio","validAssets","getComponent","getChildren","itemsData","instanceData","flat","pageModel","rootDoc","root","mainDoc","containerDoc","container","documentRef","headingOnePattern","hasHeadingOne","ErrorBlock","data-e2e","setPrototypeOf","titleFromProps","titleEntity","titleSuffix","hasError","componentDidCatch","errorInstance","render","showError","messageFromError","getDerivedStateFromError","MappingContextProvider","TypeForcedProvider","MappingContext","makeBloomContextHook","context","extracted","useBrComponentContext","BrComponentContext","BrPageContext","useBrPageContextSafe","makeBloomContextHookSafe","EditorIssuesProvider","issues","setIssues","setIsOpen","EditorIssuesContext","toggle","addIssues","_issues","newIssues","currentIssue","prevIssues","issueStub","useIssuesContext","CpmMergedBrPageContext","useCpmMergedBrPageContext","usePartialBrPageContext","cpmBrPageContext","mergedBrPage","model","CpmMergedBrPageContextProvider","useData","EditorIssues","panelId","issueCount","aria-expanded","NewContentBanner","borderStyle","borderTopWidth","SegmentationWrapper","useEditorPageSegmentsContext","EditorPageSegmentationContext","setSegments","brComponent","registerSegments","docRef","segmentId","prevState","nextState","modifiedState","nextSegment","convertItemsRefToModels","getEditorContentId","compound","EditWrapper","isMappedComponent","hideManageContentButton","useHideManageContentButton","useDataSingle","NullDocumentBanner","wrappedChildren","BrManageContentButton","parameter","Fallback","getLabel","BrComponent","BrComponentPoorlyTyped","BrPagePoorlyTyped","Cookies","makeDefaultQueryFetcherFn","defaultQueryFn","headers","req","delete","Headers","fetch","credentials","SyntaxError","sampleSize","MAX_TEXT_SAMPLE_SIZE","sample","lastMatch","matchAll","pop","cause","CpmQueryClientProvider","queryFn","queryClient","QueryClient","defaultOptions","queries","retry","QueryClientProvider","client","CpmDataWrapper","ErrorBanner","pre","brPage","shouldFetch","shouldFetchImages","uuid","shouldFetchListItems","itemRef","shouldFetchRelatedDocuments","getUrl","QueryErrorResetBoundary","reset","OSCErrorBoundary","onReset","fallbackRender","resetErrorBoundary","whiteSpace","BrandButton","InfoBanner","Spinner","FetchComponentData","queryUrl","useSuspenseQuery","sync","fallbackValue","CpmConductricsAgentsContext","CpmConductricsAgentsProvider","agentIds","ConductricsFetcher","isSingleAgent","selections","handleClick","interactiveElement","conductricsGoal","conductricsValue","castToNumber","v","passive","agents","isConductricsSingleSelection","initialMap","ConductricsAgentsContext","PreviewConductricsAgentsContext","usePreviewConductricsAgents","getUnsegmentedItems","numItems","isProdApp","PreviewSegmentsContext","usePreviewSegmentsContext","previewContentContext","getSegmentCookie","cookies","TMS_LIVE_COOKIE_NAME","useSegments","useCookies","tms","startsWith","cookieSegments","getFilteredItems","useGetFilterSegmentedItems","filterLinks","UniversalProviders","ParallaxProvider","isDisabled","CookiesContext","CpmEditorRenderer","definitions","mapping","definition","CpmMapper","componentData","issuesCallbacks","useIssues","issue","useMappingContext","filterSegmentedItems","conductricsAgentsContext","useConductricsAgentsContext","convertPreviewAgentsToSelections","previewAgents","accumulator","registerMappedAgents","mappedAgentIds","setAgents","nextAgents","cloneAgentsMap","clonedMap","clonedVariations","modified","av","variations","validateCompomentParamEffects","fullSupportedEffects","filterMappedData","isCpmListMappingKind","OneLinkWrapper","RenderComponent","CpmMappingWrapper","TYPE_CONTAINER_ITEM_UNDEFINED","BrPage","cpmPage","configuration","bloomReachConfiguration","sectionName","CpmAppRender","useCpmConductricsAgents","preMappedData","componentDefinition","shouldMaintainUnsegmentedCount","segmentedItems","filterExperimentationItems","makeCpmRenderer","contentPath","cmsPageModel","cpmPageModel","documentData","getArticleTitle","getPageDocumentData","fetchQuery","httpClient","initialize","shouldHeaderRenderH1","hasPageGotHeadingOne","hasContentGotH1","hasModelsGotH1","hasListDataGotH1","hasDocumentGotH1","hasContentBlockGotH1","extractMappedPage","hideSearchEngine","metaDescription","metaKeywords","applyDataMapping","preMapComponent","serverSideCmsPageModelQuery","assignIndexedKeys","Head","meta","CpmManageContentButton","reversed","HeadingList","HeadingListItem","textStyle","cn","headingDescription","isMissing","$el","outlineCssClass","outline","scrollIntoView","behavior","inline","classList","AuthContext","initialContext","isAuthenticated","logout","login","refreshGuestInfo","guestInfo","guestId","isLoading","isCorpUser","reducer","action","loggedIn","authInfo","AuthProvider","onLoginAttempt","onLogout","initialState","useReducer","getIsLoggedIn","dispatch","mounted","safeDispatch","logoutCb","loginFaliureCb","loginSuccessCb","flushSync","getGuestInfo","guest","off","getGuestId","VALID_SAME_SITES","setCookie","expires","domain","secure","escape","sameSite","getDefaultDomain","hostname","today","now","expires_date","getTime","cookieValue","toUTCString","AuthClient","request","restore","authEndpoint","gqlEndpoint","minExpiresTTL","webGuestMetadataCookie","authenticationCookie","userRefreshTokenPromise","requestTimeoutMs","appTokenPromise","guestInfoPromise","ssrMode","attemptsToGetGuestInfo","getAll","serverResponse","getTokensFromCookie","getRequestHeaders","webGuestTokenType","fetchAppToken","fetchGuestInfo","shouldRefreshToken","refreshLoggedInUserToken","getGqlEndpoint","getAuthEndpoint","extract","tokenType","refreshToken","getAuthenticationCookie","getAuthorizationHeader","apptoken","accessToken","rawHeaders","userRealm","getAppNameParam","currentToken","method","cache","Accept","Authorization","res","json","UserClaims","ok","invalidateSession","setUserSessionData","userInfo","tokenInfo","access_token","expiresIn","expires_in","token_type","updateAccessToken","currentAuthenticationCookie","updatedWso2AuthTokenCookie","setwso2AuthTokenCookie","authResponseToAuthCookie","redirectToLoginPage","logoutUrl","authorization","removeItem","setWso2Cookie","wso2Cookie","Buffer","endpoint","app_id","resp","userAuth","authHeader","requestInit","controller","abortTimeout","requestUrl","AbortController","abort","GuestDocument","signal","logInfo","isQueryIncomplete","triggerInCompleteEvent","requestBody","mergeCacheControl","errors","makeAuthClient","getGuestFirstName","guestNameObj","ignoreLocalizedName","personalinfo","firstName","nameLocalizations","getApi","conductricsClient","getConductricsSelection","agent","conductricsApi","normalizeAgents","setConductricsSelectionOK","reward","getInitKey","queryKeys","initKey","agentKey","defaultClientState","isInitialized","reduceAgents","stateOrTransformer","useConductricsClientQuery","initialData","gcTime","Infinity","staleTime","useSelection","isSuccess","useConductricsSelectionQuery","clientState","sels","filteredParts","parts","conductricsSels","part","queryError","queryIsLoading","defaultState","getSelection","selectedAgentsState","agentsState","firstAgent","useInitConductrics","useQueryClient","conductricsSelsPath","Conductrics","initConductrics","ClientApi","setQueryData","supportedAgentLocales","CONTROL_VARIANT","allEnv","getClientEnv","__ENV","getServerEnv","__NEXT_DATA__","buildId","WrappedComponent","hoistNonReactStatics","I18nFrameworkAppWithTranslation","_nextI18Next","isOneLink","userConfig","appPath","appPaths","browserLocalePath","use","backend","loadPath","addPath","i18n","nextI18NextAppWithTranslation","getLocaleFormattedNumber","NumberFormat","getIntlNumberLocale","getNumberFormatOptions","useGrouping","FeatureConfigsDocument","shouldIncludeLanguageParam","configLocale","conditions","pathName","ruleEngineResult","RuleEngine","run","getOneLinkProps","sstLocale","CONFIG_NAME","dxCompleteness","isSSR","sessionKey","initialUserSession","continent","coordinate","region","zipCode","saveToSession","object","ttl","expireDate","sessionStorage","getCoordinateBias","biasDegrees","calcBias","point","floor","latitude","longitude","LocationContext","Consumer","CLIENT_LOCATION_URI","userLocation","session","retrieveFromSession","searchBiasDegrees","searchBiasCoordinate","addressBiasDegrees","addressBiasCoordinate","marketingBiasDegrees","marketingBiasCoordinate","refreshTTL","useLocation","dynatrace","dtrum","LOG_LEVELS","ERROR","INFO","WARN","group","enableManualPageDetection","modifiedGroup","setPage","errorKey","markAsErrorPage","ERROR_PAGE","reportCustomError","normalizeError","buildHint","sendBeacon","customError","errorString","stringifyValue","firstLeftArrow","serverResp","mergeHttpHeaders","serverCookies","setVisitorId","addDays","startOfToday","getSafeLanguage","splitLanguage","mappedLang","zhMapping","isExtractableFile","File","Blob","forwardHeaders","makeRequest","queryRequest","retries","undiciErrorSocketRetries","authenticatedOperationNames","handleAuthenticatedOperationError","handleRequestEndpoint","handleRequestHeaders","customHeaders","referrerArg","referrerPolicy","serverRequestArg","variablesToIncludeInParams","serverRequest","authenticatedOperation","visitoridHeader","hltClientMessageIdHeader","bodyLanguage","browserUrl","includeLanguageParam","visitorId","requestId","hltClientMessageId","referrer","paramsFromVariables","extractFiles","clone","files","form","finalUrl","refreshAndRetry","jsonResult","responseText","isForbidden","referenceError","errorMessage","shouldRetry","isUnauthorized","cookingString","allowedCookies","visitorid","hltclientmessageid","filterCookies","generateReferrer","isServer","variable","bl","defaultIsExtractableFile","clones","recurse","recursed","filePaths","isList","FileList","isObject","hasClone","pathPrefix","recursedDeeper","itemClone","propertyClone","FormData","append","paths","file","formDataAppendFile","fieldName","generateError","er","ServerAuthError","handleResultErrors","Response","__info__","GraphError","causedByUnauthorized","graphQLErrors","causedByForbidden","CDN_STALE_TIME","failureCount","queryClientRef","onIncompleteQuery","devtoolsOptions","incompleteLoggingEnabled","useClients","useClientProps","authClientState","queryClientProps","authClientRef","reactQueryClientOverrideOptions","makeQueryClient","makeDefaultFnArgs","refetchOnWindowFocus","cacheTime","mutationFn","makeDefaultMutationFn","mutation","incompleteSSRQueries","ssrResults","getQueriesData","predicate","reportIncomplete","listener","HydrationBoundary","brandCodeToBrandNameMapper","CH","DT","ES","EY","GI","GU","GV","HH","HI","HP","HT","HW","LX","ND","OL","OU","PE","PO","PY","QQ","RU","SA","UA","UP","WA","WW","aarp","employeeRate","friendsAndFamilyRate","fromId","government","offerId","ownerHGVRate","ownerVIPRate","pnd","requestedRatesOnly","senior","smbRate","spec_plan","travelAgentId","travelAgents","tripleA","usePoints","sortByValues","isSortByValue","someString","tripAdvisorRatings","isTripAdvisorRating","rating","buildRatesParams","rateKey","RatePlanParamKeys","encodeURI","buildRoomsParams","normalizedRooms","mapRoomsArrayToCBPFormat","curr","age","c","room","currentRoom","buildDatesParams","flexibleDates","groupsPath","numAttendees","transientPath","searchUriBuilder","urlParams","primarySlug","adjoiningRoomStay","availableHotelsOnly","displayCurrency","f_attributeIds","f_brandCodes","f_price","f_tripAdvisorRatings","maxPoints","placeId","programAccountId","sessionToken","sortBy","specialRateTokens","isDateless","basePath","getGroupOrTransientSubpath","filteredSpecialRateTokens","specialRate","placeUri","geocodeType","bounds","fullPath","endsWith","isBrandCodeMatchedWithFilter","southwest","northeast","queryParams","bookUriBuilder","urlparts","bookParamBuilder","nonEmptyAdditionalQS","querystringObj","formatDate","roomsToQS","prev","roomNumber","adultAges","childAges","room1NumAdults","mapParams","clipPathValue","transitionDelay","isFadeInUp","transitionTimingFunction","BrandIcon","classnames","getClassnames","isSolid","isOutline","iconProps","iconAlign","buttonProps","isStaticContentPage","LANGUAGES","EN","FR","DE","IT","JA","AR","HO","PT","TR","ZH_HANS","ZH_HANT","CS","SV","TH","NL","RO","PL","BG","FI","isPortfolioRedirect","firstSegment","excludedSegments","otherSegments","isStaticPage","isStaticCMSPage","isValid","brandsWithBrandPage","pathParts","n","languages","useQueryStrings","additional","nextJsQuery","useSpeechBubbleOrGlowMVT","trackSignIn","setTrackSignIn","useDxUiHeaderData","getBaseNavLinksFromEnv","formalBrandName","getUserFromGuestInfo","hHonorsSummary","hhonors","summary","hHonorsNumber","hHonorsProgramAccountSummary","programAccountSummary","hHonorsIsHGVMax","isOwnerHGVNew","hHonorsIsTeamMember","isTeamMember","hHonorsIsSMBMember","isSMBMember","honorsTier","honorsPoints","totalPoints","honorsPointsFmt","totalPointsFmt","isHGVMax","honorsPrograms","loginOptions","showCreatePassword","forgetInfoLink","secureInfoLink","joinLink","signUpLink","onSignInAttempt","SIGN_IN_SUCCESS","onSignOut","availableGoUserTypes","packages","pack","packageName","DxUiHeader","mvts","showNewHeader","languageSelectorOptions","labelOptions","buttonOptions","T","DEFAULT_FORM_VALUES","attendee_count","datesFlex","searchedRatePlanDescription","useOfferId","usePnd","useRequestedRatesOnly","differenceInDays","laterDate","earlierDate","normalizeDates","laterDate_","earlierDate_","compareLocalAsc","difference","abs","setDate","getDate","isLastDayNotFull","diff","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","isTeamMemberSpouse","isLongTenure20","isFamilyAndFriends","isLongTenure10","isOwnerHGV","useSMBContextLocalStorage","useLocalStorage","smbContext","setSMBContext","isSMBContextSet","shouldDisablePoints","shouldEnableSMBContextAwareRates","shouldDisableAARP","useFormContext","watch","isOfferIdSelected","isPndSelected","requestedRatesOnlySelected","isOnBusinessProfile","isSMBRatesEnabled","oneCode","showSMBCheckbox","isSmbMember","isCorpFieldDisabled","FormInput","labelClassName","maxLength","registerOptions","pattern","focusable","circle","cy","FeatureTogglesDocument","o","queueMicrotask","requestAnimationFrame","cancelAnimationFrame","nextFrame","microTask","getPropertyValue","dispose","f","u","captureStackTrace","O","None","RenderStrategy","Static","A","Unmount","Hidden","L","U","k","C","ourProps","theirProps","slot","defaultTag","features","visible","mergeRefs","$","P","F","static","unmount","M","h","refName","m","w","R","N","j","H","E","Event","nativeEvent","defaultPrevented","K","S","Focusable","left","margin","overflow","clip","W","setForm","formId","readOnly","defineProperty","enumerable","configurable","writable","detect","handoffState","nextId","handoff","isHandoffComplete","Symbol","register","D","I","inherit","G","htmlFor","B","currentTarget","HTMLLabelElement","HTMLInputElement","preventScroll","Node","ResizeObserver","observe","disconnect","getSnapshot","subscribe","factory","ADD","REMOVE","inert","removeAttribute","First","Previous","Next","Last","WrapAround","NoScroll","AutoFocus","Overflow","Success","Underflow","Strict","Loose","Keyboard","Mouse","navigator","platform","maxTouchPoints","userAgent","selectionStart","selectionEnd","isConnected","setSelectionRange","headlessuiFocusVisible","PUSH","doc","POP","SCROLL_PREVENT","before","containers","contains","scrollY","pageYOffset","HTMLElement","tagName","headlessuiPortal","scrollHeight","clientHeight","scrollTo","defaultView","innerWidth","after","SCROLL_ALLOW","TEARDOWN","screenX","screenY","globalThis","getAnimations","Closed","Enter","Leave","setReference","setFloating","getReferenceProps","getFloatingProps","Me","ue","MutationObserver","maxHeight","attributeFilter","ce","V","gap","to","inner","oe","placement","strategy","transform","middleware","ne","mainAxis","crossAxis","le","ee","te","overflowRef","minItemsVisible","q","referenceOverflowThreshold","onFallbackChange","elements","floating","scrollPaddingBottom","childElementCount","childNodes","offsetTop","scrollTop","re","apply","availableWidth","availableHeight","maxWidth","whileElementsMounted","Z","floatingStyles","anchor","se","ie","Y","z","Q","X","fe","J","setProperty","marginTop","removeChild","Open","Closing","Opening","readyState","capture","Specific","Nothing","resolveItems","resolveActiveIndex","resolveDisabled","resolveId","Space","Escape","Backspace","Delete","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Home","End","PageUp","PageDown","Tab","Left","Right","useSyncExternalStore","Group","Ct","Et","Single","Multi","St","Pointer","Focus","Other","It","OpenCombobox","CloseCombobox","GoToOption","SetTyping","RegisterOption","UnregisterOption","SetActivationTrigger","UpdateVirtualConfiguration","SetInputElement","SetButtonElement","SetOptionsElement","ve","activeOptionIndex","dataRef","order","Tt","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","domRef","Pt","comboboxState","isTyping","activationTrigger","__demoMode","calculateIndex","optionsElement","optionsPropsRef","virtual","Ve","trigger","payload","isSelected","inputElement","buttonElement","ye","Te","Ne","At","paddingBlockStart","paddingTop","paddingBlockEnd","paddingBottom","He","scrollPaddingStart","scrollPaddingEnd","estimateSize","getScrollElement","overscan","Ae","getVirtualItems","getTotalSize","scrollToIndex","Pe","option","overflowAnchor","ae","Rt","_t","Bt","Be","Ht","ht","Oe","Ce","rt","by","onClose","multiple","immediate","nullable","We","je","Ge","Ue","hold","Ke","mode","Ee","compare","closeCombobox","getRootNode","composed","composedPath","touches","clientY","changedTouches","HTMLIFrameElement","activeOption","setIsTyping","goToOption","pe","registerOption","openCombobox","setActivationTrigger","selectActiveOption","setInputElement","setButtonElement","setOptionsElement","yt","ke","it","mt","me","st","Ut","Vt","be","de","autoFocus","he","ft","HTMLFieldSetElement","HTMLLegendElement","we","ge","Se","isFocusVisible","focusProps","Ie","isHovered","hoverProps","ze","right","pressed","pressProps","onPointerDown","onPointerUp","hover","xe","Qe","hasAttribute","onMouseDown","Ft","Gt","Dt","zt","bt","displayValue","_e","$e","selectionDirection","relatedTarget","Fe","gt","autofocus","onCompositionStart","onCompositionEnd","Mt","Kt","wt","hasFlag","portal","modal","transition","pt","lt","Re","outerHTML","at","ct","ot","flags","setFlag","addFlag","removeFlag","toggleFlag","prepare","inFlight","done","end","CSSTransition","allSettled","finished","closed","enter","leave","IntersectionObserver","Ze","allowed","disallowed","nt","accept","NodeFilter","FILTER_REJECT","FILTER_SKIP","FILTER_ACCEPT","walk","acceptNode","createTreeWalker","SHOW_ELEMENT","nextNode","currentNode","onWheel","tt","De","Ot","dt","Lt","jt","kt","Je","measureElement","Le","xt","et","wasMoved","update","selected","onPointerEnter","onMouseEnter","onPointerMove","onMouseMove","onPointerLeave","onMouseLeave","Nt","Ho","Input","Button","Label","vt","Options","Option","mapParamToString","param","getPredictions","uri","urlSearchParams","autocompleteResults","applyExclusions","sendSessionProperties","shortString","searchdrawbridge","usePlacesAutocomplete","serviceOptions","minLength","hasSearchTerms","placeholderData","keepPreviousData","predictions","autocompleteResponse","loading","suggestions","setSuggestions","place_id","formattedSuggestion","formatting","structured_formatting","main_text","secondaryText","secondary_text","matchedSubstrings","matched_substrings","terms","types","geocodeData","userCity","address","city","stateCountry","stateName","ComboboxOption","aria-setsize","aria-posinset","useRecentSearches","initializeWithValue","serializer","REFRESH_TTL_2WEEK","deserializer","setValue","DISPLAY_COUNT","LocationIcons","airport","geocode","pointOfInterest","property","PlacesAutoCompleteSuggestionOptions","suggestion","AutoCompleteSuggestionOptionsWrapper","mainText","locationIconName","isNearByEnabled","LocationPopularDestinationsOption","popularDestinations","popularDestinationsCount","showRecentDestinations","cachedRecentSearches","popularDestinationsOptions","displayCount","recentSearchOptions","showPopularDestinations","LocationRecentSearchesOption","recentSearches","GetTranslateAutocompleteConfigDocument","enableHotelsNearMe","enableRecentSearches","required","optional","autoCompleteLength","placeIdFieldName","checkAutocompleteStatus","popularDestinationOptions","errorId","getFieldState","control","formState","currentSuggestion","setCurrentSuggestion","setRecentSearches","useFormState","isSubmitting","places","knownDescriptions","place","showAriaLabel","setShowAriaLabel","useSuggestions","inputValue","useWatch","fieldError","hasSearchTerm","hasSuggestions","autoCompleteSelectionRequired","useGeocodeCoordinateQuery","GeocodeCoordinateDocument","enablePopularDestinations","isPlacesAutocompleteSuggestions","showSuggestions","setShowSuggestions","onKeyUp","showHotelsNearMe","showRecentSearches","showAutoCompleteSuggestions","showSuggestionsPopover","showSuggestionOptions","onSelect","selectValue","selectedSuggestion","inputName","getSelectedSuggestion","locationFieldState","isComposing","isMobileIME","isHandheld","handleCompositionEnd","handleCompositionStart","openOnFocus","comboboxInputValue","Controller","rules","validate","isValidPrediction","validatePredictions","field","Field","FormLabel","Combobox","ComboboxInput","autoComplete","autoCorrect","autoCapitalize","spellCheck","aria-invalid","aria-describedby","ComboboxOptions","isGeoCodeFetching","HotelsNearMeOption","PopularDestinationsOptions","RecentSearchesOptions","drawBridgeNotification","ariaSuggestions","FormError","LocationInput","Location","debouncedInputValue","useDebounceValue","enablePlacesAutoComplete","useGetTranslateAutocompleteConfigQuery","isFetched","configLanguages","featureConfigs","isSupportedLanguage","IsTranslateAutocompleteResolved","NHCSEARCH_4807","USE_POINTS","DISABLE_AARP_SPECIAL_RATES","targetOHWPage","isTMTPRateSelected","isTMTPProgramMember","isHGVMaxRateSelected","generateShopFormUrl","disableAARPSpecialRates","enableDatesFlexDreamRouting","flexDatesDreamRouting","brandCodeParam","isflexDatesDreamRouting","enableDreamRouting","generateFlexDatesDreamRedirectURL","getSearchPath","specPlan","RatePlanCodes","specialRatesTokens","srpName","governmentRate","promotionCode","travelAgent","getNumRooms","defaultValues","initialValues","merge","generateSanitizedDefaultValues","startOfDay","isDateLess","noSpecialRatesOrOnlyUsePointsApplied","shouldAddLocationCoordParams","locationCoordParams","geometry","locationUriBuilder","GetSpeedBumpFeatureConfigsDocument","useShopFormSummaryText","showChildAges","useFormattedStayDates","useLocale","localeOptions","ready","formattedStayDates","formatDates","toLocaleDateString","dateStyle","stayDuration","textReady","adaFormattedStayDates","childrenAges","updatedChildrenAges","childAge","roomsText","adultsText","hasKids","kidsText","kidsAgesText","firstKidsAge","lastKidAge","kidAge","noDatesStayDuration","adaDates","occupancy","kids","sameYear","isSameYear","kanji","isKanji","weekday","isTurkish","optionsWithYear","arrivalDateString","departureDateString","localeToLanguage","isLocale","baseName","calendar","ar","numberingSystem","ShopFormSummary","editButtonRef","onEditClick","summaryType","hideRoomSummary","isLargeView","titleText","editText","locationAnywhere","adaEditSummary","isLoadingProp","editStayButton","SkeletonLoader","isSmallAndMediumView","GeocodeFailModal","isGeocodeError","setIsGeoCodeError","useAarpToggle","featureToggleData","useFeatureTogglesQuery","wrapperClassNameDefault","speedBumpData","setSpeedBumpData","setSpeedBumpType","isSpeedBumpVisible","closeSpeedBump","closeShopForm","setIsExpanded","buttonClassName","excludeProvider","onSubmit","shouldDirtyToSubmit","onSubmitClick","canAlwaysSubmit","submitOpensNewTab","summaryOptions","renderAfterUpdateButton","shouldDisplayGeocodeErrorModal","hasErrorBanner","useFormProps","formContentRef","getElementState","hasLocationInput","hasRoomsButton","hasSpecialRatesButton","hasNumRoomsButton","hasNumAttendeesButton","setElementState","initiallyExpanded","expanded","useShopFormSpeedBump","speedBumpType","useTranslationsConfig","translateRules","shouldShowLanguageSpeedBump","ruleEngine","handleSpeedBumpClose","handleSpeedBumpContinue","shouldShowSpeedBump","isGMELessThanTenRoomsAndNoAttendees","getSpeedBumpOptions","confirmButtonLabel","cancelButtonLabel","defaultValuesWithDefaults","internalSummaryState","setInternalSummaryState","summaryState","onFormSubmit","hasGeoCodeInput","hasFlexDates","shouldAttemptToGeocode","GeocodeDocument","formContent","FormConnector","isDirty","canSubmit","summaryWrapperClassName","summaryClassName","suppressHeader","ControlClose","Speedbump","isShowing","speedbumpOptions","onContinue","handleSubmit","noValidate","Form","formContentElement","ShopFormLocation","subDays","amount","getDay","DEFAULT_LOCALE_OPTIONS","toLocaleLowerCase","weekStartsOnLocale","en","bg","cs","da","fi","fr","nl","ja","ko","no","pl","ro","ru","es","sv","th","tr","useDaysOfWeek","override","days","isArabic","FORMAT_SHORT_OVERRIDES","startDate","startOfWeek","weekStartsOn","DEFAULT_FORMAT_OPTIONS","monthName","formatDateAndText","LOCALE_OPTIONS","formatter","DateTimeFormat","formatToParts","isNumeric","numeric","useDateFormat","daysOfWeek","dayIndex","weekStart","monthConfig","DatePickerDatesButton","dayTextColorClassName","isReducedSize","dateFormatParts","reducedSubTextSize","startOfMonth","_date","isSameMonth","isSameDay","dateLeft_","dateRight_","isAfter","dateToCompare","isBefore","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","daysInMonth","CalendarDay","inRange","isToday","highlighted","FORMAT","CalendarMonth","endDay","maxDays","allowPrevious","onDayChange","onFocusedDayChange","isVisibleMonth","dayLabel","passedHighlightedDates","highlightedDates","passedEnabledDates","enabledDates","passedMonth","dateToString","parsedDate","isDate","weeks","getDaysSplitByWeeks","startDay","eachDayOfInterval","normalizeInterval","interval","endTime","endOfMonth","getDaysInMonth","monthIndex","lastDayOfMonth","formattedDate","yearText","isVietnamese","monthId","table","thead","scope","tbody","tab0","isWithinInterval","startTime","selectDay","td","flag","lastDayOfWeek","getDefaultOptions","evt","INPUT_FORMAT","Calendar","allowSameDay","onEndDayChange","instructions","dayId","endDayId","MonthDateSelectorComponent","month0Ref","month1Ref","focusedDay","setFocusedDay","previousMonthRef","nextMonthRef","nextDay","prevDisabled","selectedDateRef","onChangeDay","getDayLabel","onMonthChange","newD","monthNumber","monthInFocus","offsetParent","subMonths","selectedCalendarDate","onMonthUpdate","ControlBack","ControlNext","dayFieldName","endDayFieldName","setMessage","shouldDirty","shouldValidate","fromDate","DatePicker","afterCalendarContent","SearchDatesIndicator","hasFlexDatesDisabled","dateFieldNamePrefix","hideFlexDates","hasTodayAsDefault","onConfirm","onFlexibleDates","onOpen","onResetDates","flexDatesLabel","openProp","buttonRef","getValues","setInitialValues","isDateOptional","dayDefault","endDayDefault","endDayLabel","formatDay","formatEndDay","dismissAndResetToOriginalDates","keepDefaultValues","resetDateA11y","setResetDateA11y","resetButtonCTA","resetA11Y","whenLabel","requiredDates","ActionDialog","contentDataAttribute","onCancel","confirmAndCloseModal","resetDates","openModal","cloneDeep","DatePickerCalendar","checkin","useShopFormContext","ShopFormButton","product","InfoCircle","Tooltip","popupClassName","tipId","currentCause","setCurrentCause","setVisible","popoverRef","popoverRect","targetRect","getPopupStyles","hide","show","onMouseOver","onMouseOut","Stepper","inputId","onMinusClick","onPlusClick","valueLabel","minusLabel","minusTestId","plusLabel","plusTestId","iconColor","iconColorDisabled","minusDisabled","plusDisabled","stroke","fillRule","ellipse","strokeLinecap","adultAge","isAdultsOnly","agesRequired","ageRange","onRemoveRoom","maxOccupants","useAgeBasedPricing","adultsId","childrenId","adultAgeProp","useFieldArray","fields","roomsValue","roomNum","roomTestId","getChildAgesFieldsAndValidate","num","shouldFocus","ageId","valueAsNumber","FormSelect","__","newRoom","Rooms","maxRooms","occupancyLimitMessage","reachedMaxOccupants","handleRemoveRoom","RoomsRoom","canOnlyBookSingleRoom","hideGroupLink","tenPlusLinkProps","numGuests","attendeeCount","tenPlusUrl","dismissAndResetToOriginalFormRooms","confirm","SearchButton","omit","side","usePopup","closePopup","infoIconRef","labelProp","PopupButton","PopupContent","InfoPopup","Popup","InfoPopupContent","InputGroup","ShopFormGroup","setError","clearErrors","shouldFocusRoomsInput","roomsInputRef","getNumRoomsAttendeesValidation","isNumRoomsAndNumAttendeesFalsey","GROUP_LIMIT","numRoomsValidation","showNumAttendees","numAttendeesValidation","isIndependent","ratesValue","isSMBSelected","selectedRates","resetRatesToOriginalFormRates","SpecialRates","TogglesDocument","CA","GB","US","useGetMVTSelections","agentStatus","removeFlexibleDatesTestStatus","REMOVE_FLEXIBLE_DATES_AGENT_ID","removeFlexibleDatesSelection","removeFlexibleDatSelections","isRemoveFlexibleDatesTestLoaded","isRemoveFlexibleDatesDefault","isRemoveFlexibleDatesVariant","countryBasedPopularDestinationsTestStatus","COUNTRY_BASED_POPULAR_DESTINATIONS_AGENT_ID","countryBasedPopularDestinationsSelection","countryBasedPopularDestinationsSelections","isCountryBasedPopularDestinationsTestLoaded","isCountryPopularDestinationDefault","isCountryPopularDestinationVariant","isPortfolioPage","shouldDisableOptionalDates","isReady","setSmbRate","nextSmbRate","startdate","enddate","searchFormKey","validateFormOnSubmit","ShopForm","onFormSubmitHandler","ShopFormdata","redirectSearchUrl","wrapperClassNameDefaultWithLocation","SearchWidgetForm","useTogglesQuery","isDatesRequired","canBookSingleRoomOnly","enableRemoveFlexibleDatesTest","setEnableRemoveFlexibleDatesTest","enableCountryPopularDestinationTest","setEnableCountryPopularDestinationTest","abTestCountry","userCountry","enablePopularDestinationsAndRecentSearches","useRecentSearchPopularDestinationData","isPopularDestinations","isRecentSearches","configs","CONFIG_POPULAR_DESTINATION","SEARCH_DRAW_BRIDGE","isDrawbridgeEnabled","isPopularDestinationEnabled","popularDestination","COUNTRY_BASED_POPULAR_DESTINATIONS","configToggles","isTouched","touchedFields","isSearchRewardSent","sendSearchReward","ShopFormDates","isEventsPage","MY_FLEXIBLE_DATES_CLICK_GOAL","RESET_DATES","ShopFormRooms","ShopFormSpecialRates","isGroupSearchAndMoreThan10Rooms","hasAtLeastOneAttendee","numRoomsVal","queryVal","normalizeQSKey","additionalQSParameterKeys","isAdditionalQsParameterKey","makeIfQSKeyMatches","keyMatch","makeValue","makeIfSpecialRatesKeyMatches","makeBool","makeString","makeNumber","parsed","makeStringArray","makeSpecPlan","makeFPrice","isFPrice","makeTripAdvisorRatings","makeSortByValues","injectQSVal","altCorporateAccount","deepLinkParams","corporateId","partner","rawKey","rawVal","isSpecialRatesKey","specialRatesKeys","qsKey","StairwellIllustration","FeatherIllustration","PlateIllustration","Filigree","LineIllustration","effectClassNames","effects","getEffectClassNames","BackgroundIllustration","useInitializeConductrics","traitsList","isConductricsInit","view","traits","tier","teamMember","captionLinkTarget","captionClasses","figcaption","CarouselNoImage","isFullSize","CarouselImage","imageProps","isImageError","setIsImageError","isImageLoaded","setIsImageLoaded","layout","onError","onLoadingComplete","generateCarouselSingleMetrics","carouselMetrics","CarouselNavigationButton","CarouselControls","leftNav","rightNav","paginationCounter","isRtlLanguage","imageTranslateX","TagRenderer","tag","Tag","MarkdownLinkRenderer","rel","markdownArray","updatedChildren","baseClass","mergedOpts","CycleContext","fallbackId","onSetActive","DialogTitle","DialogBase","closeButtonClassName","dialogClassName","dialogOverlayClassName","dialogTitleClassName","bottomContent","stickyHeader","innerRef","dialogRef","onInteractOutside","onEscapeKeyDown","CloseButton","ActionButtons","cancel","shouldStackButtons","resetBtnEnabled","buttons","dialogProps","handleCancel","handleConfirm","DynamicImage","sharedProps","ResponsivePicture","generateDynamicGridMetrics","DynamicGridCardHeader","baseClasses","positionClasses","DynamicGridItem","onItemClick","isCardLayout","onClickGridItem","handleOnFocus","getDynamicGridColumnCount","is369","is4x","is2x","isOther","activeItem","modalImageAspectRatio","baseItems","isMobileVerticalStack","onToggleModal","activeId","updateActiveId","isModalOpen","updateModalOpen","activeListItem","setActiveListItem","el","dynamicGridId","gridWrapperClass","DialogWithContent","containerAspectRatio","closeModal","DynamicGridItemWOM","gridItemRef","headlineId","cidParams","handleLinkFocus","useHasOverflow","onlyHorizontal","onlyVertical","isOverflow","setIsOverflow","useLayoutEffect","hasOverflowHorizontal","hasOverflowVertical","hasLinks","scrollRef","hasOverflow","scrollSectionIsFocusable","itemIndex","ReactErrorBoundary","customerSupportLink","isFluid","legalLinks","teConsentRef","footerNavLength","footerNavHalfPoint","footerNavFirstHalf","footerNavSecondHalf","observer","mutationList","childList","subtree","handleTeconsentParentProps","suppressHydrationWarning","FormErrorIcon","strokeWidth","criteriaMode","memoizedFormProps","methods","useForm","isSubmitted","hasErrors","FormProvider","FormHelpMessage","FormLabelHelper","requiredText","optionalText","helpMessage","helperId","inputClassName","labelClass","formatCardNumber","cardValidator","select","LoginFormEventType","DIGITALDATA","LOGIN","CLOSE","HEIGHT","frameSrc","onLogin","onLoginError","readyCount","iframeRef","noOptions","frameHeight","setFrameHeight","handleMessage","handler","sendMessageToIframe","contentWindow","postMessage","iframe","AccountIcon","Login","buttonName","hideIcon","showDialog","setShowDialog","close","handleLogin","LoginIFrame","GetLanguageSelectorOneLinkConfigDocument","GetLanguageSelectorHotelDataDocument","vi","filterLanguagesWithLabel","getI18nSafeLangCode","safeLangCode","makeLanguageUrl","newLocale","removeUrlParams","languageUrl","RegExp","sortRtlFirst","rtlLangs","ltrLangs","LanguageSelector","featureConfigsData","oneLinkLanguagesConfig","hotelData","urlOverrides","ENOverride","oneLinkLanguages","languagesObj","languagesToExclude","supportsRuleEngineConfig","cmsLanguages","cmsFullSiteLanguages","fullSiteLanguages","supportedFullSiteLanguages","netNewFullSiteLanguages","supportedResOnlyLanguages","sortedResOnlyLanguages","linksContainerRef","popupOptions","onLanguageSelection","selectedLanguage","setSelectedLanguage","buttonHover","setButtonHover","popupButtonRef","useLanguageSelectorLanguages","useGetLanguageSelectorOneLinkConfigQuery","useGetLanguageSelectorHotelDataQuery","fc","appWhitelist","whitelist","appsArray","supportedLanguages","hotel","localization","languageSupport","siteUrl","cmsResOnlyLanguages","bookingUrl","fullSite","LANGUAGE_CODE_NAMES","opensNewTab","resOnlyLanguages","resOnly","netNewResOnlyLanguages","sortedFullSiteLanguages","localeCompare","allLanguages","featureConfigsLoading","hotelDataLoading","getSelectedLanguage","focusFirstLink","handleLinkKeyDown","getKeyDownNavigation","querySelectorAll","initiatingRef","trackLinkClick","PopupContextState","onArrowDownWhenOpen","hoverStyles","DownArrowIcon","popupStyles","overflowY","includeTitles","ListItem","bdi","version","polyline","DrawerPanel","appWrapperId","interactiveElementWrapperId","panelProps","returnFocus","isRightPanelVisible","setIsRightPanelVisible","nonInteractiveElems","nonInteractiveElement","drawerWrapper","els","navParentElement","nonInteractiveElements","FocusLock","onAnimationEnd","sendInteractionReward","trackNavClickBasedOnLabel","dropdownLabel","trackNavClick","signInUrl","signUpUrl","DEFAULT_OCODE","environmentBaseUrl","signInLink","accountLink","honorsActivityLink","smbMemberLink","honorsPointsLink","honorsProfileLink","friendsAndFamilyLink","hgvMaxLink","goHiltonLink","findStayLink","getNHCBP5758MVTVariant","isDefaultVariant","isGlowVariant","isSpeechBubble","Logo","NavItem","listItemProps","spacedChild","NavItemVisual","indicator","hasRotatedIndicator","wrapper","NavItemWithLink","namedIcon","isWide","buttonIcon","rotateOnOpen","NavItemWithModalAndGlow","NavItemWithLinkGlow","NavigationPopupContents","MenuList","MenuListItem","subMenuLabel","UserPopupContents","userLinks","shouldOpenAccountLinksInNewWindow","shouldSuppressHonorsAccountLinks","formattedHonorsPointsTotal","username","honorsPointsTotal","MegaUserLink","listProps","getDisplayedFocusableElements","visibility","SpeechBubble","closeSpeechBubble","showSpeechBubble","contentStyles","onInlineButtonClick","onSpeechBubbleButtonClick","onKeyDownInlineButton","displayedFocusableElements","nextIndex","mutationsList","addedNodes","Popover","hideWhenDetached","onOpenAutoFocus","onKeyDownCloseButton","previousIndex","onDialogOpen","setShowSpeechBubble","speechBubbleContainer","setSpeechBubbleContainer","onSignInClick","setRef","UserNav","shouldSuppressFindStay","shouldSuppressJoinAndSignIn","SignUpComponent","userButtonLinkRef","useFindStayTest","variant1","variant2","variant3","NavItemWithPopup","loggedInButtonRef","signUpComponent","NavItemWithModal","NavItemWithSpeechBubble","MainNav","MegaMenu","suppressLogo","headingLevelProps","userNavProps","DrawerList","selectedItem","menuItems","nextItem","setNextItem","nextItemIndex","setNextItemIndex","setSelectedItem","selectedItemIndex","setSelectedItemIndex","backButtonRef","isFadingOut","setIsFadingOut","lastSelectedButton","focusOnBack","itemSelected","menuItem","goBack","useActiveUserLinks","navLinks","isB2BMember","isTMTPTeamMember","isTMTPNonTeamMember","activeUserLinks","wrapperId","isMenuOpen","setIsMenuOpen","isAccountOpen","setIsAccountOpen","userLoggedInButtonRef","closeMenus","handleKeyDown","addEscapeKeyListener","removeEscapeKeyListener","accountPressed","joinButtonClasses","menuPressed","HeaderLogoLink","closeMainMenu","AccountSection","closeAccount","AccountUserLink","STATUS_ROLE_MAPPER","success","normal","BannerNotification","customIcon","aria-atomic","Countries_AddressOptionsDocument","ADDRESSLINE1","ADDRESSLINE2","CITY","COUNTRY","EMAIL","FAMILYNAME","GIVENNAME","NEWPASSWORD","POSTALCODE","STATE","TEL","AutoComplete","Modes","Add","Edit","AddressFields","addressFieldData","groupName","componentState","setLoadingGeocode","isZipInvalid","setIsZipInvalid","shouldHideCityAndStateFields","getFieldKey","isPostalCodeTouched","useCountries_AddressOptionsQuery","states","countries","useGeocodeQuery","postalCode","geoLocationData","addressOptions","getAutoComplete","FormInputPassword","passwordCriteriaClassName","touchedField","passRequirements","mustBe","containUpper","containLower","containOneNumber","hasRequirementError","strokeLinejoin","FormInputPhone","classname","personalInformationPage","addDefaultOption","phoneCountryError","helperPhoneId","phoneNumberFieldError","phoneCountryFieldError","getOptions","callingCode","Paragraph","WrappedLink","CustomerExternalParagraph","MarketingContent","selectedCountry","setMarketingOptinsSelected","marketingOptin","marketingOptinRules","optIns","optIn","autoOptIn","termsAndConditions","termsAndConditionsJoin","handleMarketingOptinChange","prevSelected","isChecked","checked","customerTextExternal","forceBlock","isUSA","isChina","isMarketingOffersModalOpen","setIsMarketingOffersModalOpen","marketingOptIn","marketingOptInForHGV","Trans","i18nKey","sendErrorAnalytics","formErrors","formErrorsMessages","setFormErrors","setFormErrorMessages","GRAPH_ERRORS","CONFLICT_WITH_RESOURCE","SUCCESSFULL_REGISRATION_DELAYED_CONFIRMATION","EmailSubscription","PERSONALIZED_OFFERS","HILTON_MARKETING","GRAND_VACATIONS","HHONORS_EMAIL","USMarketingOptIn","hhonorsSubscriptions","optOuts","FORM_ERRORS_TO_FILTER","oCodes","JoinForm","defaultCountryCodeData","isMarketabilityCCSEnabled","oCode","onSuccess","bannerContent","setBannerContent","marketingOptinsSelected","useLanguages_DefaultCountryCodeQuery","Languages_DefaultCountryCodeDocument","isJapanesePage","defaultCountryCode","phoneCountry","marketingOffersValue","hasPasswordFields","loadingGeocode","useBrand_CountriesQuery","getMarketing","getCCSMarketing","countryFilter","prohibited","Brand_CountriesDocument","createGuest","useCreateGuestMutation","Collator","marketingOptIns","updateCreateGuestMutation","email","password","marketingGrandVacations","marketingOffers","marketingConsent","marketgOptinsAutoEnrolled","optin","subscriptionCodes","codes","list","addressType","enrollSourceCode","phoneNumber","phoneType","preferredLanguage","privacyRequested","subscriptions","_resolve","mutate","CreateGuestDocument","notifications","encodedName","btoa","encodedNum","encodedEmail","emailAddress","encodedEnroll","innerKey","innerValue","handleFormSubmit","handleInvalidForm","fieldErrors","tForm","isLoadingCountries","shouldMatch","MarketingContentCCS","isPending","JoinModalButton","loginIFrameSrc","onSuccessfulLogin","onSuccessfulJoin","setIsModalOpen","showJoinFormContent","setShowJoinFormContent","showLoginIframe","setShowLoginIframe","newHonorsNumber","setNewHonorsNumber","successMessageRef","useOrigin","setOrigin","protocol","port","handleOpenLoginIframe","handleCloseModal","handleOpenModal","honorsNumber","HeaderMenuLink","joinModalConductricsTestAgent","onSignInLinkClick","commonHeaderBodyProps","joinFromModal","BrandHeaderBody","NewHeaderBody","OldHeaderBody","DropdownMenu","additionalLinks","navRef","isBeforeVisible","setBeforeVisible","isAfterVisible","setAfterVisible","navWidth","newBefore","newAfter","navRect","onNavScroll","filterExperiments","drawerItem","DEFAULT_CONTEXT_VALUE","HeadingLevelContext","isParentEnabled","parentLevel","parent","DEFAULT_HEADING_LEVEL","IconSetNames","EYIconSetNames","EYIconNames","ESIconSetNames","HPIconSetNames","sizeToPixelValue","brandIconPath","sizeInPixels","beforeInjection","afterInjection","wrapperDiv","LinkAdChoices","LinkNewWindow","hasNextLinkSupport","isAdChoices","isTargetBlank","canUseNextLink","urlProp","ddPrimaryCategory","ddPageDetail1","ddPageDetail2","getCIDParam","global","ddPageType","classNames","linkContent","NextLink","MarkdownLink","rule","useSpeedbump","onShow","onHide","isVisible","getUrlConfig","speedbump","mergedOptions","MarkdownToJsx","BackToTop","mainRef","focusFirstElement","focusableHeadings","headingSelected","focusNoHeadings","facebookAppId","HOMEPAGE_IN_ALL_LANGUAGES","CustomHead","brandLogoImageSrc","schemaName","brandFaviconImgSrc","seoArticleTitle","isEdgeTestActive","isBrandHomePageProp","seoSchema","canonicalUrl","mainEntityOfPage","publisher","sameAs","telephone","ogImageSrc","dangerouslySetInnerHTML","__html","favIconPath","schemaUrl","rtl","atScrollEnd","setAtScrollEnd","scrollAnimationRequest","createRef","onShowcaseItemClicked","totalWidth","brandRect","desiredScrollLeft","maxScrollLeft","onComplete","previousItem","scrollToOffset","scrollDistance","duration","animateScroll","timeStamp","progress","SLIDE_DURATION","easing","debouncedOnScroll","distanceFromEndOfScrollBar","endOfScrollBar","marginForDetectingBrandPosition","handleTabListWrapperKeyDown","slide","targetIndex","NavItems","imageDefaultColor","onScrollWrapper","END_MARGIN","dialogPropsWithLabel","multipleImageAspectRatio","multipleImageUrl","generateFullWidthMediaMetricsParams","FULL_WIDTH__METRIC_POSITION","FULL_WIDTH_METRIC_IMAGE_COUNT","showInfoContainer","setShowInfoContainer","imgLoaded","setImgLoaded","handleImageOverlayButtonClick","onImgLoaded","FullWidthImageDialogAspectRatio","handleCloseButtonClick","generateHalfAndHalfMetrics","HALF_AND_HALF_IMAGE_COUNT","HalfAndHalfContent","isPositionOdd","isFullCarousel","isTabletAndMobile","mobileLayout","useHalfAndHalfMobileLayoutTest","variantA","LongDescription","CtaLink","Headline","ShortDescription","ImgVideoContent","ParallaxBanner","ParallaxBannerLayer","scale","isVertical","DefaultLayout","MobileLayoutVariantAB","currElemIndxType","containerBgClass","generateImageHeadlinerMetrics","ImageHeadlinerMetrics","hasLoop","itemData","currentItem","currentHeadline","currentCtaText","ctaText","currentPosition","trackImageHeadlinerScrollClick","onNextClickWithAnalytics","onPreviousClickWithAnalytics","totalSlides","describedByID","imageCss","onLinkClick","ImageHeadlinerContent","ImageHeadlinerControls","modalCloseButtonRef","onClickLink","ariaLabelLink","isHeadlineShown","screen","groupId","pageNumbers","nextDisabled","paginationLabel","PopupContext","getCollisions","offsetBottom","collisions","directionRight","directionLeft","directionUp","directionDown","directionX","directionY","popupOnLeft","popupOnTop","xPosition","getYStyles","overflowX","yPosition","isInitiallyOpen","triggerClickedRef","popupId","which","popoverRefCurrent","ElementSelector","figureTag","xxs","xxxl","xxxxl","xxxxxl","heightWidthArray","denominator","multiplier","getAspectRatio","urlString","parseQsNumber","targetHeight","targetWidth","queryIndex","sourceAspectRatio","sourceWidth","sourceHeight","targetAspectRatio","bandwidth","maxBreakpoint","breakpoint","aspectRatioMap","hFull","loaded","setLoaded","imageHeight","resizedImageUrl","captionExists","defaultWrapperTag","getAspectRatioClass","defaultAspectRatio","desktopImageHeight","desktopResizedImageUrl","tabletResizedImageUrl","mobileResizedImageUrl","picture","srcSet","TRANSLATE_RULES_CONFIG_NAME","ONELINK_CONFIG_NAME","useGetSpeedBumpFeatureConfigsQuery","bypassOneLink","oneLinkProps","translateRuleEngine","targetLanguage","setIsVisible","eventTarget","setEventTarget","urlConfig","shouldShowSpeedbump","enUri","titleOptions","onCloseProp","onContinueProp","handleDismiss","showSpinner","setShowSpinner","TextBlockCTA","TextBlockDescription","TextualDescriptionBlock","TextBlockHeading","TextualOrderedListItemBlock","TextBlockOrderedList","TextualOrderedListBlock","TextBlockOrderedListItem","TextualUnorderedListItemBlock","TextBlockUnorderedList","TextualUnorderedListBlock","TextBlockUnorderedListItem","mapTextAlignToFlexClassname","headingStyles","useAutoPlay","addTrackAsync","trackElement","getTrackId","srclang","matchTracks","htmlTracks","videoTrack","htmlTrack","findTrack","tracks","activeTrack","getMetricsTrackName","formatName","defaultColorVariables","offColor","onColor","disabledColor","useInlineGradient","themeSuffix","getDirection","getGradientColors","presetVariables","primaryColorVariables","customColorVariables","gradientDisabledColor","gradientOnColor","gradientOffColor","collect","filled","background","emptyRect","initialRect","setElement","setRect","useIsomorphicLayoutEffect","contentRect","unobserve","calculateLabelPositions","trackRect","valueRatios","labelRefs","labelRects","xCoordinates","THUMB_W","adjustLabelOverlaps","joinLabelXCoordinates","overlap","LABEL_JOIN_DISTANCE","limits","LABEL_JOIN_CENTER","JOIN_LABEL_LENGTH","limit","additionalLabel","labelPosition","labelType","textClasses","ThumbLabels","inputLabels","labels","trackRef","labelsX","setLabelsX","labelElementRects","setLabelRects","setJoinLabelXCoordinates","topOffsetState","setTopOffset","tooltipRect","topOffset","Slider","fillIndex","hiddenLegend","maxLabel","minLabel","thumbLabelFn","isDefault","isPrimary","isHorizontal","thumbRef","valueRatio","areas","fillAreas","inlineGradProps","gradValues","thumbLabels","defaultLabelFn","WrapperElement","TitleElement","minStepsBetweenThumbs","SliderPrimitive","aria-valuetext","getTextColorClasses","getBackgroundColorClasses","lowestVolume","volumeConfig","VolumeSlider","playerState","updateVolume","volume","getClasses","isValidCue","cue","getCueText","fragment","getCueAsHTML","textContent","html","XMLSerializer","serializeToString","PAUSE_OTHERS","VIDEO_UPDATE_EVENT","defaultPlayerState","isPlaying","showCaptions","activeCaptionTrack","activeVideoTrack","initialVolume","baseVideoTrack","defaultVideoTrack","hasCaptions","allTracks","videoTracks","elementRef","setTrue","hideControls","showControls","fadeControls","handleKeyup","menuId","useToggle","internalPlayerId","hookProps","videoPlayerSettings","setPlayerState","optionsState","useTrackQuery","hasTranscripts","hasAudioTracks","useBaseTracks","getFetchableTracks","additionalTracks","tracksMap","baseTracks","hasTracks","controlsState","useFadeControls","useBoolean","setFalse","setHidden","FADE_TIMEOUT_IN_MS","isInteracting","useEventListener","settingsMenu","useMenu","popupMenuRef","toggleMenu","closeMenu","activeVideo","getMetricsVideoName","playVideo","play","pauseVideo","pause","muteVideo","unmuteVideo","togglePlayButton","performAudioActions","updateTranscript","selectedTranscript","trackName","inActiveCaptionTracks","oncuechange","isPauseOthersEvent","isPauseSelfEvent","isPauseEvent","isOtherVideo","isSameVideo","shouldPauseSelf","closeTranscript","onCueSelect","adjustedTime","CUE_BUFFER","currentTime","toggleMuteButton","toggleCaptions","updateCaption","isSingleCaption","selectedCaption","updateAudioTrack","selectedVideoTrack","findCaption","findTranscript","isGroupMatch","preventPreload","autoPlay","playsInline","poster","crossOrigin","preload","ControlButton","iconContent","ControlIcon","ControlMenu","setMaxHeight","useSafeMaxHeight","wrapperRect","menuRect","buttonRect","buttonOffset","ControlList","ControlItem","beforeSection","afterSection","SettingsMenu","transcriptOptions","menuOptions","selectedOption","setSelectedOption","captionOptions","abbr","onSelection","onMenuOptionClick","menuProps","goToMainMenu","aria-haspopup","Menu","resetMenu","focusButton","useOnClickOutside","activeList","onKeyDownNavigation","subOption","aria-checked","listRef","hasMultipleCaptions","hasAudioDescriptions","isSettingsMenuOpen","pauseButtonLabel","playButtonLabel","aria-pressed","currentTrack","firstTrack","hasSettings","elementProps","activeCues","TranscriptList","setActiveCues","focusedButton","setFocusedButton","activeTranscriptRef","useCues","allCues","getCues","cues","getCueId","getActiveCues","lastActiveCue","updateCues","cueState","activeCue","isAutoScrolling","scrollToActiveCue","firstActiveCue","isSyncing","activeButton","getActiveButton","marginBottom","itemOffset","itemMargins","onScrollEnd","getAllButtons","onNextFocus","onPreviousFocus","isFocusable","TranscriptLine","startSync","minFmt","data-id","aria-current","floorMinutes","floorSeconds","formatTime","padTime","secFmt","baseControlsClasses","center","transcriptClassNames","thumbnailUrl","uploadDate","embedUrl","videoCaptionsProps","playerClasses","firstVideo","groupIdentifier","groupMultimedia","groupBy","toSorted","primaryVideo","mapMultimediaToVideoTrack","uploadDatetime","videoDuration","additionalVideos","videoAutoPlay","noAudio","isExtended","getVideoGroup","extended","extendedAudioDescription","audioTrackLabel","alternativeVideoLabel","filterByTrackType","multimediaMetadata","mapCaptionData","metadata","youtubeEmbedUrlPattern","autoLoop","listId","listIndex","parsedUrl","isShortsLink","testUrlPattern","youtubeShortsUrlPattern","isEmbedLink","isPlaylistLink","youtubePlaylistUrlPattern","slashIndex","isRounded","onStateChange","player","videoSrc","getVideoSrc","onPlayerReady","mute","loadVideo","YT","Player","onReady","ytHasLoaded","onYouTubeIframeAPIReady","firstScriptTag","getElementsByTagName","insertBefore","allow","allowFullScreen","sandbox","getHasUserModifiedFontDefaults","maxSize","wordSpacing","letterSpacing","hasModifiedFontSize","hasModifiedWordSpacing","hasModifiedLetterSpacing","hasUserModifiedFonts","setHasUserModifiedFonts","isArrowUp","isArrowDown","isArrowLeft","isArrowRight","arg","RTL_LANGUAGES","HOST_REGEX","tranlateUrlsRuleEngine","ENGLISH","appBasePaths","facts","appUrl","redirect","parsedURL","originalPath","isOHWUrl","host","SLASH","DOUBLE_SLASH","ruleUrl","ruleFacts","isTranslatedUrl","finalPath","appBasePath","matcher","mutableRef","localRef","rafId","rectChanged","observedNodes","changedStates","newRect","callbacks","cb","useRectBase","nodeRef","initialRectIsSet","initialRefIsSet","onChangeRef","observeRect","wasEmpty","hasRectChanged","getDateMillisecondsPart","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","requiredArgs","toInteger","dirtyNumber","compareAsc","dirtyDateLeft","dirtyDateRight","arguments","dateLeft","dateRight","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","dirtyOptions","defaultWidth","formats","formatLong","full","long","short","timeFormats","dateTime","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","dirtyString","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","formatDistance","addSuffix","comparison","formatRelative","_baseDate","localize","ordinalNumber","_dirtyOptions","rem100","era","narrow","abbreviated","wide","quarter","quarterValues","monthValues","dayValues","dayPeriod","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","any","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","firstWeekContainsDate","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","setUTCHours","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","setUTCDay","dirtyDay","currentDay","startOfUTCISOWeek","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","second","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_SECOND","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","parsers","_options","incompatibleTokens","isTwoDigitYear","unit","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","setUTCMonth","setUTCWeek","dirtyWeek","getUTCWeek","MILLISECONDS_IN_WEEK","startOfUTCWeekYear","firstWeek","setUTCISOWeek","dirtyISOWeek","isoWeek","getUTCISOWeek","startOfUTCISOWeekYear","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","fourthOfJanuary","isLeapYear","wholeWeekDays","setUTCISODay","remainder","isPM","setUTCMinutes","setUTCSeconds","pow","setUTCMilliseconds","timestampIsSet","_token","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","defaultLocale","subFnOptions","setters","TIMEZONE_UNIT_PRIORITY","dateToSystemTimezone","tokens","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","incompatibleToken","_i","usedToken","fullToken","cleanEscapedString","uniquePrioritySetters","setter","setterArray","utcDate","subMilliseconds","dirtyObject","convertedDate","dirtyMonth","dateWithDesiredMonth","setMinutes","milliseconds","setMilliseconds","dirtyAmount","addMilliseconds","argStr","stack","getDomainLocale","locales","domainLocales","normalizeLocalePath","require","detectedLocale","detectDomainLocale","proto","http","finalLocale","normalizePathTrailingSlash","configEnv","handleLoading","onLoadRef","onLoadingCompleteRef","setBlurComplete","sizesInput","decode","prevented","stopped","isDefaultPrevented","isPropagationStopped","persist","getDynamicProps","fetchPriority","fetchpriority","ImageElement","decoding","setShowAltText","ownRef","complete","useMergedRef","data-nimg","ImagePreload","isAppRouter","imgAttributes","opts","imageSrcSet","imageSizes","ReactDOM","pagesRouter","RouterContext","configContext","ImageConfigContext","imageConfigDefault","allSizes","deviceSizes","qualities","blurComplete","showAltText","getImgProps","defaultLoader","imgConf","imgMeta","normalizeSrc","supportsFloat","loadedImageURLs","emptyDataURL","loaders","quality","cur","DEFAULT_Q","dangerouslyAllowSVG","imgixLoader","cloudinaryLoader","paramsString","akamaiLoader","customLoader","isStaticRequire","generateImgAttrs","loader","viewportWidthRe","percentSizes","smallestRatio","widths","getWidths","last","getInt","defaultImageLoader","loaderProps","loaderKey","load","VALID_LOADERS","naturalWidth","naturalHeight","heightInt","widthInt","qualityInt","isLazy","srcString","setIntersection","noscriptSizes","imgStyle","blurStyle","noscript","sizerSvgUrl","lazyRoot","lazyBoundary","objectPosition","customImageLoader","staticSrc","isStaticImageData","staticImageData","useIntersection","rootRef","rootMargin","isIntersected","resetIntersected","wrapperStyle","boxSizing","sizerStyle","hasSizer","layoutStyle","minWidth","minHeight","backgroundSize","backgroundPosition","quotient","previousImageSrc","imgElementArgs","prefetched","prefetch","isLocalURL","bypassPrefetchedCheck","prefetchedKey","formatStringOrUrl","urlObjOrString","formatUrl","hrefProp","asProp","childrenProp","prefetchProp","onTouchStartProp","passHref","shallow","legacyBehavior","prefetchEnabled","resolvedHref","resolveHref","resolvedAs","previousHref","previousAs","only","childRef","setIntersectionRef","resetVisible","setIntersectionWithResetRef","childProps","nodeName","routerScroll","onMouseEnterProp","isAbsoluteUrl","curLocale","localeDomain","isLocaleDomain","addBasePath","addLocale","cloneElement","restProps","hasIntersectionObserver","observers","idList","createObserver","existing","intersectionRatio","idleCallback","requestIdleCallback","cancelIdleCallback","refA","refB","cleanupA","cleanupB","applyRef","cleanup","noSSR","convertModule","mod","LoadableInitializer","loadableOptions","webpack","modules","dynamicOptions","loadableFn","Loadable","pastDelay","loaderFn","loadableGenerated","_state","blurWidth","blurHeight","overrideSrc","isDefaultLoader","intrinsic","responsive","layoutSizes","ratio","color","getImageBlurSvg","placeholderStyle","svgWidth","svgHeight","std","preserveAspectRatio","getImageProps","imgProps","__next_img_default","LoadableContext","ALL_INITIALIZERS","READY_INITIALIZERS","initialized","loadFn","_loadFn","_opts","_callbacks","_delay","_timeout","_res","_clearTimeouts","timedOut","_update","_err","partial","getCurrentValue","LoadableSubscription","createLoadableComponent","subscription","init","sub","moduleIds","ids","moduleId","LoadableComponent","moduleName","useImperativeHandle","flushInitializers","initializers","promises","preloadAll","resolveInitializers","preloadReady","resolvePreload","__NEXT_PRELOADREADY","normalize","millisecondsInWeek","millisecondsInDay","constructFromSymbol","for","UTC","laterStartOfDay","earlierStartOfDay","earlierTimestamp","dateTimeFormats","enUS","tokenValue","eraValues","matchMonthPatterns","matchDayPatterns","startOfISOWeek","getISOWeekYear","getWeekYear","targetLength","output","lightFormatters","signedYear","addLeadingZeros","numberOfDigits","trunc","fractionalSeconds","formatters","signedWeekYear","weekYear","getWeek","startOfWeekYear","getISOWeek","startOfISOWeekYear","getDayOfYear","date_","startOfYear","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriodEnum","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","delimiter","absOffset","weekYearTokenRE","throwTokens","formatStr","originalDate","isToken","matched","preprocessor","formatterOptions","dayOfYearTokenRE","warnOrThrowProtectedError","subject","_message","RangeError"],"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,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,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,151,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,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,298,387,388,430,431,549,591,592,593,624,625,671,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,777,790,791,792,793,794,795,803,804,805,806,807,808,809,810,811,812,872,892,911,912,913,914,915,935,944,945,1054,1055,1056,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334]}