{"version":3,"file":"static/chunks/191-f4c9c4e980e928e6.js","mappings":"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,WACA,kCACA,CACA,CAAG,CADI,EACJ,EAwFH,SAEA,aACA,iBAAyC,IAAQ,WAEjD,GAFiD,CAGjD,sBACA,uBACA,aACA,CAAO,EACP,gCAEA,CAEA,aACA,mCACA,sBACA,WACA,OACA,YACA,CAAK,CACL,CACA,EA3PA,KACsB,mBAAa,CAjBnC,mBAiB0C,EAAQ,CAClD,sBADkD,EAElD,KACA,CAAG,IACH,MAAW,EAAQ,CACnB,mBACA,CAAK,EAFc,CAEd,cApBL,eAoBK,YAlBL,kBAkBK,QACL,CAAG,EACH,CAAC,EAOD,kBACA,kDAA4G,IAAa,IACzH,oBAGA,uDACA,iBACG,KACH,mBACA,CACA,CAEA,kBACA,OACA,mFACA,CACA,CAEA,oBACA,UACA,SAGA,aACA,mBACA,gBAEA,OAAS,EAAQ,CACjB,sBADiB,CACjB,sDACA,CAAG,UACH,EAgBA,gBACA,UACA,SAGA,IACA,IADA,KACA,YAEA,OAAS,EAAQ,CACjB,cACA,QAFiB,GAEjB,CACG,UACH,EAEA,oBACA,YACA,MAGA,YACA,MAGA,OACA,qBACA,yCACA,8CACA,6BACA,EAKA,OACA,eALA,iBAMA,cALA,iBAMA,YALA,iBAMA,cALA,iBAOA,CCtKA,CDsKE,QCtKO,EAA6B,KACtC,oBACA,IAEA,IAFA,KACA,OAHsC,EAGtC,QAGA,QAAc,WAAuB,IACrC,OACA,iBACA,YAGA,QACA,CAEA,SAAS,IAeT,MAAS,CAdP,EAAQ,aADO,EACP,QAcO,CAdP,GACV,YAAoB,mBAAsB,KAC1C,mBAEA,eACA,2CACA,WAGA,CAEA,QACA,GAEiB,qBACjB,CA8JA,cACA,QACA,CAMA,OAGA,QA/JA,YACA,mBACA,kBAEA,eAEA,aACA,gBACA,oBACA,gBA6GA,GACA,0BACA,gBACA,KAEA,gBACA,cACI,CACJ,QACA,sBACA,gBACA,oBACA,QACK,EACL,SACA,CAEA,SAEA,kBACA,OACA,QACA,QACA,MACA,WACA,CAAO,CAEP,CACA,EAzIA,CACA,oBACA,OANA,YA8DA,YACA,mBACA,kBACA,aACA,iBACA,gBACA,oBAEA,OADA,WAC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BA,gBACA,OACA,QACA,uBACA,CACA,0BCvDA,UAnBA,YAKA,IAJA,IAGA,EAHA,IACA,KACA,aAEA,MACA,2BACA,GACA,OACA,GACA,WAGA,CAHsC,CAGtC,GACA,KACA,IAEA,cACA,8BCtCA,gBACA,OAAa,+BACb,CALA,qCAA6C,CAAE,SAAa,EAC5D,YAAkB,QAgBlB,YAAkB,CAXlB,cACA,aAA8B,MAC9B,mBANA,QAOA,mBACA,SAEA,WACA,SAEA,QACA,sCChBA,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,yBC2KA,WAnMA,CACA,MACA,gBACA,YACA,aACA,cACA,mBACA,MACA,WACA,MACA,CAAS,CACJ,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,CAAS,CACJ,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,CAAS,CACJ,CACL,KACA,eACA,WACA,uBACA,cACA,sBACA,MACA,YACA,MACA,CAAS,CACJ,CACL,OACA,iBACA,aACA,kEACA,cACA,aACA,MACA,WACA,MACA,CAAS,CACJ,CACL,WACA,qBACA,iBACA,kBACA,cACA,aACA,MACA,WACA,MACA,CAAS,CACJ,8BCjML,qCAA6C,CAAE,SAAa,EAC5D,OAAa,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,EAC5D,SAAe,QAqBf,SAAe,CANf,kBAdA,IACA,EACA,EACA,EAMA,SAMA,kBAfA,EAgBA,KAhBA,EAgBA,KAfA,mBAEA,WADA,gBACA,IACA,4CACA,4CACA,MACA,MAGA,UADA,EASA,EARA,EACA,wBACA,uBAOA,mBCrBA,MAJgB,EAAQ,KAAc,EAC3B,EAAQ,KAAS,EAG5B,CAJuB,SACL,EAKlB,6BCNA,MAAgB,EAAQ,KAAc,EACtC,EAAiB,EAAQ,KAAe,CADjB,CAEvB,EAAc,EAAQ,KAAY,CADV,CAExB,EAAc,EAAQ,KAAY,CADb,CAErB,EAAc,EAAQ,KAAY,CADb,CAUrB,UATqB,CASrB,GACA,SACA,qBAGA,IADA,aACA,QACA,WACA,mBACA,CACA,CAGA,oBACA,qBACA,kBACA,kBACA,kBAEA,6BC/BA,MAAqB,EAAQ,IAAmB,EAChD,EAAsB,EAAQ,IAAoB,EAClD,CAF4B,CAET,EAAQ,KAAiB,EAC5C,EAAmB,EAAQ,KAAiB,CADlB,CAE1B,EAAmB,EAAQ,KAAiB,CADlB,CAU1B,UAT0B,CAS1B,GACA,SACA,qBAGA,IADA,aACA,QACA,WACA,mBACA,CACA,CAGA,oBACA,qBACA,kBACA,kBACA,kBAEA,6BC3BA,QAJwB,KAAc,EAC3B,EAAQ,KAAS,EAG5B,CAJuB,KAMvB,IALkB,MAKlB,oBCNA,MAAoB,EAAQ,KAAkB,EAC9C,EAAqB,EAAQ,KAAmB,CADrB,CAE3B,EAAkB,EAAQ,KAAgB,CADd,CAE5B,EAAkB,EAAQ,KAAgB,CADjB,CAEzB,EAAkB,EAAQ,IAAgB,EADjB,SAUzB,KACA,SACA,qBAGA,IADA,aACA,QACA,WACA,mBACA,CACA,CAGA,oBACA,qBACA,kBACA,kBACA,kBAEA,6BC3BA,MAJgB,EAAQ,KAAc,EAC3B,EAAQ,KAAS,EAG5B,CAJuB,SACL,CAKlB,6BCFA,QAJwB,KAAc,EAC3B,EAAQ,KAAS,EAG5B,CAJuB,MAMvB,GALkB,MAKlB,oBCNA,MAAe,EAAQ,KAAa,EACpC,EAAkB,EAAQ,KAAgB,CADpB,CAEtB,EAAkB,EAAQ,KAAgB,CADjB,CAWzB,UAVyB,CAUzB,GACA,SACA,qBAGA,IADA,oBACA,OACA,cAEA,CAGA,mCACA,kBAEA,6BC1BA,MAAgB,EAAQ,KAAc,EACtC,EAAiB,EAAQ,KAAe,CADjB,CAEvB,EAAkB,EAAQ,KAAgB,CADlB,CAExB,EAAe,EAAQ,KAAa,CADX,CAEzB,EAAe,EAAQ,IAAa,EADd,EAEP,EAAQ,KAAa,EADd,SAUtB,CATsB,CAStB,GACA,4BACA,kBAIA,oBACA,qBACA,kBACA,kBACA,kBAEA,6BCvBA,MAHW,EAAQ,KAAS,EAG5B,SAEA,CALkB,MAKlB,oBCFA,MAHW,EAAQ,KAAS,EAG5B,UAHkB,CAKlB,6BCDA,QAJwB,KAAc,EAC3B,EAAQ,KAAS,EAG5B,CAJuB,SACL,CAKlB,uBCcA,UAVA,gBACA,iBACA,uBACA,6BACA,kCACA,uCACA,CACA,mBACA,aCGA,UAZA,cAIA,IAHA,SACA,qBAEA,OACA,mBAIA,QACA,aCKA,UAfA,cAMA,IALA,SACA,qBACA,IACA,KAEA,QACA,WACA,UACA,UAEA,CACA,QACA,mBCtBA,MAAgB,EAAQ,KAAc,EACtC,EAAkB,EAAQ,KAAe,CADlB,CAEvB,EAAc,EAAQ,KAAW,CADR,CAEzB,EAAe,EAAQ,KAAY,CADd,CAErB,EAAc,EAAQ,KAAY,CADZ,CAEtB,EAAmB,EAAQ,KAAgB,CADtB,CAOrB,EAHA,QAH0B,QAG1B,CAGA,eAqCA,UA3BA,cACA,WACA,WACA,eACA,mBACA,aACA,0BACA,WAEA,eACA,kBACA,KAEA,cAEA,+BAEA,oDAEA,OACA,GACA,UAGA,QACA,YC1BA,UAXA,cAKA,IAJA,SACA,qBACA,WAEA,OACA,iBAEA,QACA,aCCA,UAXA,cAKA,IAJA,SACA,WACA,WAEA,OACA,YAEA,QACA,aCKA,UAZA,cAIA,IAHA,SACA,qBAEA,OACA,eACA,SAGA,QACA,aCTA,UAJA,YACA,kBACA,mBCTA,MAAsB,EAAQ,KAAoB,EAClD,EAAS,EAAQ,KAAM,CADM,GAmB7B,QAlBgB,SAWhB,OACA,yBACA,sBACA,QAEA,mBCjBA,MAAsB,EAAQ,KAAoB,EAClD,EAAS,EAAQ,KAAM,CADM,CAO7B,EAHA,QAHgB,QAGhB,CAGA,eAoBA,UARA,gBACA,WACA,qBACA,sBACA,QAEA,kBCzBA,MAAS,EAAQ,KAAM,CAoBvB,WApBgB,SAUhB,KAEA,IADA,eACA,KACA,gBACA,SAGA,SACA,kBClBA,MAAiB,EAAQ,KAAe,EACxC,EAAW,EAAQ,IAAQ,EADH,EAgBxB,QAJA,CAXkB,QAWlB,KACA,qBACA,mBCdA,MAAiB,EAAQ,KAAe,EACxC,EAAa,EAAQ,KAAU,CADP,GAgBxB,QAJA,cACA,qBACA,mBCdA,MAAqB,EAAQ,KAAmB,EAwBhD,UAxB4B,SAW5B,OACA,kBACA,OACA,gBACA,cACA,QACA,WACA,CAAK,EAEL,MAEA,mBCtBA,MAAY,EAAQ,KAAU,EAC9B,EAAgB,EAAQ,KAAc,CADnB,CAEnB,EAAkB,EAAQ,KAAgB,CADnB,CAEvB,EAAiB,EAAQ,IAAe,EACxC,EAAmB,EAAQ,KAAiB,EADpB,EAEN,EAAQ,KAAgB,CADhB,CAE1B,EAAgB,EAAQ,KAAc,CADb,CAEzB,EAAkB,EAAQ,KAAgB,CADnB,CAEvB,EAAoB,EAAQ,KAAkB,CADrB,CAEzB,EAAiB,EAAQ,KAAe,CADb,CAE3B,EAAmB,EAAQ,KAAiB,CADpB,CAExB,EAAa,EAAQ,KAAW,CADN,CAE1B,EAAqB,EAAQ,KAAmB,CAD5B,CAEpB,EAAqB,EAAQ,KAAmB,CADpB,CAE5B,EAAsB,EAAQ,KAAoB,CADtB,CAE5B,EAAc,EAAQ,KAAW,CADJ,CAE7B,EAAe,EAAQ,KAAY,CADd,CAErB,EAAY,EAAQ,IAAS,EADP,EAEP,EAAQ,KAAY,EACnC,EAAY,EAAQ,KAAS,CADP,CAEtB,EAAW,EAAQ,IAAQ,EAC3B,EAAa,EAAQ,KAAU,EAQ/B,UARoB,aAapB,sBAIA,oBAoBA,KACA,OA7BA,iBA6BA,CACA,EAfA,uBAeA,GAdA,oBAcA,CACA,EA9BA,mBA8BA,GA7BA,gBA6BA,CACA,EAfA,wBAeA,GAdA,wBAcA,CACA,EAdA,qBAcA,GAbA,sBAaA,CACA,EAbA,sBAaA,GA5BA,eA4BA,CACA,EA5BA,kBA4BA,MACA,EA3BA,kBA2BA,GA1BA,eA0BA,CACA,EA1BA,kBA0BA,GAzBA,kBAyBA,CACA,EAhBA,sBAgBA,GAfA,6BAeA,CACA,EAfA,uBAeA,GAdA,uBAcA,IACA,EArCA,iBAqCA,MACA,EA5BA,mBA4BA,IA8FA,UA5EA,wBACA,MACA,MACA,EAnEA,EAmEA,EACA,MAKA,GAHA,GACA,sBAEA,WACA,SAEA,SACA,SAEA,WACA,KAEA,IADA,OACA,GACA,aACA,KACI,CACJ,WACA,wCAEA,QACA,cAEA,qBAEA,IADA,UAAuC,KACvC,GACA,SACA,YACA,WACA,KACM,CACN,SACA,cAEA,UACA,CACA,CAEA,aACA,eACA,KACA,SAEA,WAEA,KACA,sBACA,qBACA,CAAK,EACD,MACJ,wBACA,uBACA,CAAK,EAGL,QACA,MACA,MAEA,gBASA,OARA,qBACA,GAEA,KADA,IACA,EAGA,qBACA,CAAG,EACH,CACA,mBCnKA,MAAe,EAAQ,KAAY,EAGnC,UAHsB,KAGtB,CAUA,aACA,cACA,mBACA,SACA,SAEA,KACA,WAEA,eACA,YAEA,OADA,mBACA,CACA,CACA,CAAC,GAED,6BC7BA,MAAgB,EAAQ,KAAc,EACtC,EAAoB,EAAQ,KAAkB,CADvB,CAqCvB,UApC2B,SAa3B,aACA,SACA,WAKA,IAHA,SACA,UAEA,QACA,WACA,UACA,IAEA,eAEA,OAEM,GACN,eAEA,CACA,QACA,mBCtBA,MAboB,EAAQ,KAAkB,IAe9C,QAf2B,CAe3B,oBCfA,MAAe,EAAQ,KAAa,EACpC,EAAY,EAAQ,KAAU,CADR,GAuBtB,QAZA,cACA,SAKA,IAHA,QACA,WAEA,cACA,eAEA,uBACA,mBCrBA,MAAgB,EAAQ,KAAc,EACtC,EAAc,EAAQ,KAAW,CAkBjC,WALA,gBACA,WACA,uBACA,mBCjBA,MAAa,EAAQ,KAAW,EAChC,EAAgB,EAAQ,KAAc,CADlB,CAEpB,EAAqB,EAAQ,KAAmB,CADzB,CAQvB,UAP4B,OAO5B,QAkBA,UATA,mBACA,QACA,WAdA,qBADA,gBAiBA,kBACA,KACA,IACA,mBCzBA,MAAiB,EAAQ,KAAe,EACxC,EAAmB,EAAQ,KAAgB,CADnB,CAiBxB,UAhB0B,SAY1B,GACA,aAVA,sBAUA,IACA,kBCfA,MAAsB,EAAQ,KAAoB,EAClD,EAAmB,EAAQ,KAAgB,CADd,CA2B7B,UA1B0B,SAgB1B,oBACA,QAGA,+BAGA,eAFA,WAGA,mBCzBA,MAAY,EAAQ,KAAU,EAC9B,EAAkB,EAAQ,KAAgB,CADvB,CAEnB,EAAiB,EAAQ,KAAe,CADf,CAEzB,EAAmB,EAAQ,KAAiB,CADpB,CAExB,EAAa,EAAQ,KAAW,CADN,CAE1B,EAAc,EAAQ,KAAW,CADb,CAEpB,EAAe,EAAQ,KAAY,CADd,CAErB,EAAmB,EAAQ,KAAgB,CADrB,CAOtB,UAN0B,aAO1B,mBACA,oBAMA,EAHA,iBAGA,cA6DA,WA7CA,sBACA,WACA,OACA,WACA,WAEA,WACA,WAEA,WACA,OACA,OAEA,YACA,SACA,SAEA,KACA,IACA,CACA,SAEA,OADA,aACA,QACA,eACA,iBAEA,WACA,iCACA,6BAEA,SACA,oBACA,gBAGA,OADA,aACA,YACA,CACA,OACA,MAGA,aACA,eACA,mBChFA,MAAa,EAAQ,KAAW,EAChC,EAAmB,EAAQ,KAAgB,CADvB,CAiBpB,UAhB0B,SAY1B,GACA,aAVA,gBAUA,IACA,mBCfA,MAAiB,EAAQ,KAAc,EACvC,EAAe,EAAQ,KAAa,CADZ,CAExB,EAAe,EAAQ,KAAY,CADb,CAEtB,EAAe,EAAQ,KAAa,CADd,CAUtB,UATsB,sBAatB,mBAGA,EAJA,mBAIA,SAGA,mBAGA,aACA,kBAjBA,iBAAoC,KAiBpC,QACA,+EAmBA,UARA,kBACA,gBAIA,CADA,UACA,UACA,kBC5CA,MAAa,EAAQ,KAAW,EAChC,EAAmB,EAAQ,KAAgB,CADvB,GAiBpB,QAhB0B,SAY1B,GACA,aAVA,gBAUA,IACA,mBCfA,MAAiB,EAAQ,KAAe,EACxC,EAAe,EAAQ,KAAY,CADX,CAExB,EAAmB,EAAQ,KAAgB,CADrB,CA+BtB,KACA,EAZA,GAnB0B,qBA+B1B,GAXA,wBAWA,CACA,EAXA,qBAWA,GAVA,sBAUA,CACA,EAVA,sBAUA,GATA,sBASA,CACA,EATA,6BASA,GARA,uBAQA,CACA,EARA,uBAQA,IACA,EAjCA,qBAiCA,GAhCA,iBAgCA,CACA,EApBA,uBAoBA,GAhCA,mBAgCA,CACA,EApBA,oBAoBA,GAhCA,gBAgCA,CACA,EAhCA,iBAgCA,GA/BA,oBA+BA,CACA,EA/BA,eA+BA,GA9BA,kBA8BA,CACA,EA9BA,kBA8BA,GA7BA,kBA6BA,CACA,EA7BA,eA6BA,GA5BA,kBA4BA,CACA,EA5BA,mBA4BA,IAcA,UALA,YACA,aACA,yCCxDA,MAAkB,EAAQ,KAAgB,EAC1C,EAAiB,EAAQ,KAAe,CADf,CAOzB,EAHA,QAHwB,QAGxB,CAGA,iBAsBA,QAbA,YACA,SACA,YAEA,SACA,uBACA,+BACA,UAGA,QACA,mBC3BA,MAAe,EAAQ,KAAY,EACnC,EAAkB,EAAQ,KAAgB,CADpB,CAEtB,EAAmB,EAAQ,KAAiB,CADnB,CAOzB,SAHA,CAH0B,QAG1B,CAGA,eAwBA,UAfA,YACA,SACA,YAEA,WACA,KAEA,eACA,qCACA,UAGA,QACA,mBC9BA,MAAY,EAAQ,KAAU,EAC9B,EAAuB,EAAQ,KAAqB,CADjC,CAEnB,EAAc,EAAQ,KAAY,CADJ,CAE9B,EAAoB,EAAQ,KAAkB,CADzB,CAErB,EAAe,EAAQ,KAAY,CADR,CAE3B,EAAa,EAAQ,KAAU,CADT,CAEtB,EAAc,EAAQ,KAAY,CADd,CAoCpB,UAnCqB,SAarB,aACA,OAGA,kBAEA,GADA,aACA,KACA,qBAEA,CACA,QACA,uBACA,MAEA,aACA,MAEA,QACA,CACA,CAAG,GACH,mBCvCA,MAAuB,EAAQ,KAAqB,EACpD,EAAkB,EAAQ,KAAgB,CADZ,CAE9B,EAAsB,EAAQ,KAAoB,CADzB,CAEzB,EAAgB,EAAQ,KAAc,CADT,CAE7B,EAAsB,EAAQ,KAAoB,CAD3B,CAEvB,EAAkB,EAAQ,KAAe,CADZ,CAE7B,EAAc,EAAQ,KAAW,CADR,CAEzB,EAAwB,EAAQ,IAAqB,EACrD,EAAe,EAAQ,KAAY,EADJ,EAEd,EAAQ,KAAc,CADjB,CAEtB,EAAe,EAAQ,KAAY,CADX,CAExB,EAAoB,EAAQ,KAAiB,CADvB,CAEtB,EAAmB,EAAQ,KAAgB,CADhB,CAE3B,EAAc,EAAQ,KAAY,CADR,CAE1B,EAAoB,EAAQ,KAAiB,CADxB,CAgFrB,UA/E2B,SAiB3B,eACA,aACA,SACA,WAEA,MACA,SACA,MACA,CACA,QACA,kBACA,OAEA,aAEA,MACA,WACA,WACA,eAEA,IACA,QACA,KACA,IAEA,KACA,OAEA,GACA,KACA,WAEA,GACA,KACA,WAGA,KAGA,YACA,IACA,KACA,OAEA,eACA,UAIA,IAEA,CACA,IAEA,WACA,aACA,aAEA,QACA,mBC3FA,MAAe,EAAQ,IAAY,EACnC,EAAe,EAAQ,KAAa,EACpC,EAAkB,EAAQ,KAAgB,CADpB,GAetB,QAdyB,SAUzB,KACA,uBACA,mBCdA,MAAkB,EAAQ,KAAgB,EAC1C,EAAe,EAAQ,KAAa,CADX,CAEzB,EAAc,EAAQ,KAAY,CADZ,CAEtB,EAAe,EAAQ,KAAY,CADd,CAErB,EAAY,EAAQ,KAAU,CADR,GA+CtB,QA9CmB,SAYnB,SACA,SACA,SAEA,SAOA,IALA,SACA,WACA,MACA,IAEA,iBACA,cACA,IAEA,uDACA,MAGA,SACA,UAEA,UADA,uBAEA,QACA,EACA,eAA+C,CAE/C,CACA,SACA,OAEA,QACA,kBChDA,MAAe,EAAQ,KAAY,EACnC,EAAqB,EAAQ,KAAmB,CAD1B,CAEtB,EAAe,EAAQ,IAAY,EADP,EAW5B,SAVsB,EAUtB,KACA,uBACA,gBACA,cACA,WACA,WACA,CAAG,CACH,EAPA,EASA,uBCSA,UArBA,gBACA,SACA,WAEA,KACA,eAEA,YACA,GACA,OAEA,gBACA,OAGA,IADA,eACA,OACA,YAEA,QACA,aCTA,UAVA,cAIA,IAHA,SACA,WAEA,OACA,UAEA,QACA,mBCjBA,MAAa,EAAQ,KAAW,EAChC,EAAe,EAAQ,IAAa,EADhB,EAEN,EAAQ,KAAW,EACjC,EAAe,EAAQ,KAAY,CADd,CAIrB,MAGA,uBACA,sBA0BA,UAhBA,cAEA,sBACA,SAEA,QAEA,iBAEA,QACA,sBAEA,WACA,4BACA,aCrBA,UANA,YACA,mBACA,WACA,CACA,mBCXA,MAAe,EAAQ,KAAa,EACpC,EAAW,EAAQ,KAAQ,CADL,CAEtB,EAAa,EAAQ,KAAW,CADd,CAElB,EAAY,EAAQ,KAAU,CADV,CAiBpB,UANA,cAGA,OAFA,SAEA,MADA,YACA,8BCJA,UAJA,cACA,eACA,mBCVA,MAAc,EAAQ,KAAW,EACjC,EAAY,EAAQ,KAAU,CADT,CAErB,EAAmB,EAAQ,KAAiB,CADzB,CAEnB,EAAe,EAAQ,KAAY,CADT,CAkB1B,UAPA,qBACA,KACA,EAEA,kBACA,mBClBA,MAAgB,EAAQ,KAAc,CAiBtC,WAjBuB,SAWvB,OACA,eAEA,OADA,iBACA,mBACA,mBCfA,MAAiB,EAAQ,KAAe,EAexC,UAfwB,SASxB,GACA,sCAEA,OADA,uBACA,CACA,8BCbA,MAAW,EAAQ,KAAS,EAG5B,EAAkB,GAA0B,KAH1B,IAGA,EAA0B,IAG5C,KAA6C,YAAb,EAAa,IAM7C,EAHA,iBAGA,gBACA,wBAqBA,WAXA,cACA,KACA,iBAEA,eACA,8BAGA,OADA,UACA,CACA,kBChCA,MAAuB,EAAQ,KAAqB,EAepD,UAf8B,SAU9B,KACA,6BACA,qDACA,aCZA,aAeA,UANA,YACA,4CAEA,OADA,wBACA,CACA,mBCdA,MAAa,EAAQ,KAAW,EAGhC,UAHoB,KAGpB,QACA,qBAaA,UAJA,YACA,6BACA,mBCfA,MAAuB,EAAQ,KAAqB,EAepD,UALA,cACA,6BACA,iDACA,aCMA,UAXA,cACA,SACA,WAGA,IADA,gBACA,OACA,UAEA,QACA,mBCjBA,MAAkB,EAAQ,KAAgB,EAC1C,EAAsB,EAAQ,KAAoB,CADzB,CAuCzB,UAtC6B,SAY7B,SACA,QACA,WAKA,IAHA,SACA,WAEA,QACA,WAEA,IACA,mBACA,MAEA,aACA,SAEA,EACA,SAEA,QAEA,CACA,QACA,mBCrCA,MAAiB,EAAQ,KAAe,EACxC,EAAiB,EAAQ,KAAe,CADhB,CAexB,UAdwB,SAUxB,KACA,kBACA,mBCbA,MAAiB,EAAQ,KAAe,EACxC,EAAmB,EAAQ,GAAiB,EAc5C,CAfwB,CAexB,QAJA,EAV0B,OAU1B,KACA,kBACA,mBCVA,QAHmB,KAAS,CAG5B,WAHkB,WAGlB,CAEA,6BCLA,MAAe,EAAQ,KAAa,EACpC,EAAqB,EAAQ,KAAmB,CAmChD,WAnC4B,SAS5B,GACA,uBACA,SACA,WACA,oBACA,kBAWA,IATA,mCACA,QACA,OAEA,oBACA,eACA,KAEA,YACA,QACA,WACA,GACA,UAEA,CACA,QACA,CAAG,CACH,aCVA,UAjBA,YACA,uBAMA,IALA,SACA,YACA,OACA,WAEA,MACA,iBACA,oBACA,KAEA,CACA,QACA,CACA,kBCtBA,MAAgB,EAAQ,KAAc,EACtC,EAAiB,EAAQ,KAAe,CADjB,CAEvB,EAAoB,EAAQ,KAAkB,CADtB,CAExB,EAAe,EAAQ,KAAY,CADR,CA8B3B,UA7BsB,SAStB,GACA,mBAGA,QAFA,QAGA,KACA,OAEA,IACA,KACA,YAEA,IACA,gBACA,WAEA,eACA,CACA,mBC9BA,MAAoB,EAAQ,KAAiB,CAe7C,WAf2B,SAW3B,GACA,oBACA,mBCbA,MAAgB,EAAQ,KAAc,EAEtC,UAFuB,GAGvB,IACA,iCAEA,OADA,IAAW,MAAQ,EACnB,CACA,CAAI,UACJ,CAAC,GAED,6BCVA,MAAe,EAAQ,KAAa,EACpC,EAAgB,EAAQ,KAAc,CADhB,CAEtB,EAAe,EAAQ,KAAa,CADb,CAkFvB,UAjFsB,SAmBtB,aACA,MAjBA,EAiBA,EACA,WACA,WAEA,mBACA,SAGA,eACA,WACA,QACA,kBAEA,SACA,KACA,EA/BA,EA+BA,eAMA,IAJA,WACA,WAGA,QACA,WACA,OAEA,KACA,QACA,eACA,eAEA,eACA,KACA,SAEA,KACA,KACA,CAEA,KACA,uBACA,YACA,sBACA,gBAEA,CAAW,GACX,KACA,KACA,OACM,IACN,QACA,cACA,CACA,KACA,KACA,CACA,CAGA,OAFA,YACA,YACA,CACA,mBCjFA,MAAa,EAAQ,KAAW,EAChC,EAAiB,EAAQ,KAAe,CADpB,CAEpB,EAAS,EAAQ,KAAM,CADC,CAExB,EAAkB,EAAQ,KAAgB,CAD1B,CAEhB,EAAiB,EAAQ,KAAe,CADf,CAEzB,EAAiB,EAAQ,KAAe,CADhB,CAsBxB,UArBwB,KAqBxB,QACA,qBAoFA,UAjEA,wBACA,UACA,IAzBA,oBA0BA,+BACA,2BACA,MAEA,WACA,eAhCA,uBAmCA,+BACA,sBACA,MAEA,QAEA,KAnDA,mBAoDA,IAnDA,gBAoDA,IAjDA,kBAoDA,eAEA,KAxDA,iBAyDA,gDAtDA,kBAyDA,IAvDA,kBA2DA,cAEA,KAjEA,eAkEA,OAEA,KAjEA,eAkEA,MA5EA,EA4EA,EAGA,GAFA,SAEA,mBACA,MAGA,eACA,KACA,YAEA,GAtFA,EAyFA,WACA,2BAEA,OADA,YACA,CAEA,KAnFA,kBAoFA,KACA,2BAEA,CACA,QACA,mBC7GA,MAAiB,EAAQ,KAAe,EASxC,SAHA,CANwB,QAMxB,CAGA,eAgFA,UAjEA,sBACA,MAtBA,EAsBA,EACA,OACA,WAIA,MAHA,KACA,QAEA,GACA,SAGA,IADA,QACA,MACA,WACA,2BACA,QAEA,CAEA,eACA,WACA,QACA,kBAEA,SACA,WACA,WAGA,IADA,QACA,QAEA,QADA,OACA,CACA,OAEA,KACA,QACA,eACA,eAGA,gBACA,oBACA,GACA,CACA,KACA,KACA,CACA,uBACA,CACA,UACA,oBACA,gBAGA,MACA,sCACA,wCACA,uCACA,MAEA,CAGA,OAFA,YACA,YACA,CACA,mBCvFA,MAAc,EAAQ,KAAW,EACjC,EAAe,EAAQ,KAAa,CADf,CAErB,EAAkB,EAAQ,KAAgB,CAa1C,WAbyB,SASzB,GACA,4BACA,mBCZA,uBAAwB,GAAM,EAAgB,GAAM,EAAI,GAAM,kBAAsB,GAAM,CAE1F,6BCHA,MAAqB,EAAQ,KAAmB,EAChD,EAAiB,EAAQ,KAAe,CADZ,CAE5B,EAAW,EAAQ,IAAQ,EAa3B,UAJA,CATkB,QASlB,GACA,eACA,mBCbA,MAAqB,EAAQ,KAAmB,EAChD,EAAmB,EAAQ,GAAiB,EAC5C,CAF4B,CAEf,EAAQ,KAAU,EAc/B,CAf0B,CAe1B,QAdoB,SAUpB,GACA,eACA,mBCdA,MAAgB,EAAQ,KAAc,EAiBtC,UAjBuB,SAUvB,KACA,iBACA,YACA,sCACA,KACA,mBCfA,MAAmB,EAAQ,KAAiB,EAC5C,EAAe,EAAQ,KAAa,CADV,CAgB1B,UAfsB,SAUtB,KACA,aACA,oBACA,mBCXA,MAHc,EAAQ,KAAY,EAGlC,UAHqB,WAGrB,QAEA,8BCLA,MAAa,EAAQ,KAAW,EAGhC,UAHoB,QAGpB,CAGA,mBAOA,aAGA,yBA6BA,UApBA,YACA,kBACA,OAEA,IACA,YACA,QACA,CAAI,UAEJ,gBAQA,OAPA,IACA,EACA,OAEA,aAGA,CACA,mBC3CA,MAAkB,EAAQ,KAAgB,EAC1C,EAAgB,EAAQ,KAAa,CADZ,CAOzB,EAHA,QAHuB,QAGvB,CAGA,qBAGA,+BASA,uBACA,QACA,GAGA,IADA,aACA,YACA,kBACA,CAAG,CACH,EARA,EAUA,2BC7BA,MAAgB,EAAQ,KAAc,EACtC,EAAmB,EAAQ,KAAiB,CADrB,CAEvB,EAAiB,EAAQ,KAAe,CADd,CAE1B,EAAgB,EAAQ,KAAa,CADb,CAaxB,EATA,QAHuB,oBAGvB,CASA,YAEA,IADA,SACA,GACA,UACA,OAEA,QACA,EAPA,EASA,6BCxBA,MAAe,EAAQ,KAAa,EACpC,EAAU,EAAQ,KAAQ,CADJ,CAEtB,EAAc,EAAQ,KAAY,CADjB,CAEjB,EAAU,EAAQ,KAAQ,CADL,CAErB,EAAc,EAAQ,KAAY,CADjB,CAEjB,EAAiB,EAAQ,KAAe,CADnB,CAErB,EAAe,EAAQ,KAAa,CADZ,CAIxB,UAHsB,OAKtB,qBACA,iBACA,qBAEA,sBAGA,OACA,OACA,OACA,OACA,OASA,IAGA,qCACA,gBACA,sBACA,gBACA,iBACA,eACA,WACA,4CACA,YAEA,KACA,UACA,eACA,gBACA,gBACA,gBACA,gBACA,CAEA,QACA,GAGA,uBC7CA,UAJA,cACA,uCCGA,kGAaA,UAJA,YACA,gBACA,mBCvBA,MAAmB,EAAQ,KAAiB,EAc5C,UALA,WACA,2BACA,WACA,aCIA,UANA,YACA,2CAEA,OADA,iBACA,CACA,mBCdA,MAAmB,EAAQ,KAAiB,EAS5C,EAHA,QAN0B,QAM1B,CAGA,iBAoBA,QATA,YACA,oBACA,MACA,WACA,MArBA,8BAqBA,UACA,CACA,8BACA,mBC3BA,MAAmB,EAAQ,KAAiB,EAM5C,EAHA,QAH0B,QAG1B,CAGA,eAgBA,UALA,YACA,oBACA,kCACA,mBCpBA,MAAmB,EAAQ,KAAiB,EAsB5C,UAtB0B,SAe1B,KACA,oBAGA,OAFA,2BACA,mBAfA,4BAeA,EACA,iBCfA,MAHA,iBAGA,eAqBA,UAZA,YACA,eACA,uBAOA,OAJA,8CACA,gBACA,iBAEA,CACA,mBCvBA,MAAuB,EAAQ,KAAqB,EACpD,EAAoB,EAAQ,IAAkB,EAC9C,EAAkB,EAAQ,KAAgB,EADf,EAET,EAAQ,KAAgB,CADjB,CAEzB,EAAsB,EAAQ,KAAoB,CADzB,CAyEzB,UAxE6B,SAoC7B,OACA,oBACA,UACA,IA3BA,uBA4BA,WAEA,KAvCA,mBAwCA,IAvCA,gBAwCA,gBAEA,KAjCA,oBAkCA,aAEA,KAnCA,wBAmCA,IAlCA,wBAmCA,IAlCA,qBAkCA,IAjCA,sBAiCA,IAhCA,sBAiCA,IAhCA,sBAgCA,IA/BA,6BA+BA,IA9BA,uBA8BA,IA7BA,uBA8BA,aAEA,KAjDA,eA2DA,IAxDA,eA+CA,YAEA,KAnDA,kBAoDA,IAjDA,kBAkDA,eAEA,KAtDA,kBAuDA,WAKA,KAzDA,kBA0DA,WACA,CACA,mBC1EA,MAAiB,EAAQ,KAAe,EACxC,EAAmB,EAAQ,KAAiB,CADpB,CAExB,EAAkB,EAAQ,KAAgB,CADhB,CAgB1B,UAfyB,SASzB,GACA,6CAEA,GADA,OAEA,mBCfA,MAAa,EAAQ,KAAW,EAChC,EAAkB,EAAQ,KAAe,CADrB,CAEpB,EAAc,EAAQ,KAAW,CADR,CAIzB,UAHqB,cAGrB,QAcA,UALA,YACA,mBACA,cACA,aCbA,yBAoBA,UAVA,cACA,eAGA,QAFA,WAfA,iBAeA,IAGA,cACA,yBACA,iBACA,mBCtBA,MAAS,EAAQ,KAAM,EACvB,EAAkB,EAAQ,KAAe,CADzB,CAEhB,EAAc,EAAQ,KAAY,CADT,CAEzB,EAAe,EAAQ,KAAY,CADd,CA2BrB,UA1BsB,SAYtB,OACA,SACA,SAEA,qBACA,eACA,sBACA,sBAEA,SAGA,mBC3BA,MAAc,EAAQ,KAAW,EACjC,EAAe,EAAQ,KAAY,CADd,CAIrB,UAHsB,2CAItB,UAuBA,UAbA,cACA,QACA,SAEA,qBACA,2CACA,gBAGA,uBACA,uBACA,aCZA,UAPA,YACA,eACA,0DACA,gBACA,QACA,mBCZA,MAAiB,EAAQ,KAAe,EAGxC,UAHwB,GAIxB,oDACA,8BACA,CAAC,GAaD,UAJA,YACA,iBACA,aChBA,uBAgBA,UAPA,YACA,uBAGA,WAFA,sCAGA,YCHA,UALA,WACA,iBACA,WACA,kBCVA,MAAmB,EAAQ,IAAiB,EAM5C,EAHA,SAH0B,MAG1B,CAGA,OA4BA,UAjBA,YACA,oBACA,eAEA,SAIA,GADA,WAEA,QAEA,cAEA,YACA,GACA,mBChCA,MAAmB,EAAQ,IAAiB,CAkB5C,WAPA,CAX0B,QAW1B,GACA,oBACA,SAEA,4CCfA,MAAmB,EAAQ,IAAiB,EAe5C,UAJA,CAX0B,QAW1B,GACA,4BACA,mBCbA,MAAmB,EAAQ,IAAiB,EAyB5C,UAbA,CAZ0B,QAY1B,KACA,oBACA,SAQA,OANA,KACA,YACA,eAEA,UAEA,uBCtBA,MAAW,EAAQ,KAAS,EAC5B,EAAgB,EAAQ,KAAc,CADpB,CAElB,EAAU,EAAQ,KAAQ,CADH,GAmBvB,QAlBiB,WAUjB,YACA,eACA,WACA,cACA,YACA,CACA,mBClBA,MAAiB,EAAQ,KAAe,EAiBxC,UAjBwB,SAWxB,GACA,0BAEA,OADA,iBACA,CACA,mBCfA,MAAiB,EAAQ,KAAe,EAexC,UAJA,YACA,uBACA,mBCbA,MAAiB,EAAQ,KAAe,EAexC,UAJA,YACA,uBACA,kBCbA,MAAiB,EAAQ,KAAe,CAqBxC,WArBwB,SAYxB,KACA,gBACA,SAIA,OAFA,WACA,yBACA,iBCDA,UAVA,YACA,SACA,gBAKA,OAHA,wBACA,aACG,EACH,CACA,mBCfA,MAAc,EAAQ,KAAW,CAyBjC,WAzBqB,SAarB,GACA,sBAIA,OAfA,MAYA,QACA,UAEA,CACA,CAAG,EAEH,UACA,QACA,mBCpBA,MAHgB,EAAQ,KAAc,EAGtC,UAHuB,OAKvB,6BCFA,QAHsB,KAAY,EAGlC,UAHqB,CAGrB,SAEA,uBCcA,UAVA,YACA,SACA,WACA,uBACA,UAGA,QACA,8BCjBA,MAAiB,EAAQ,KAAe,EAGxC,EAAkB,GAA0B,KAHpB,IAGN,EAA0B,IAG5C,KAA6C,YAAb,EAAa,IAM7C,KAHA,eAGA,UAGA,aACA,IAEA,4CAEA,KACA,SAIA,sCACA,CAAI,UACJ,CAAC,GAED,uBCrBA,MAPA,iBAOA,SAaA,UAJA,YACA,gBACA,aCLA,UANA,cACA,mBACA,cACA,CACA,mBCZA,MAAY,EAAQ,KAAU,EAG9B,UAHmB,CAmCnB,UArBA,gBAEA,OADA,+BACA,WAMA,IALA,gBACA,KACA,kBACA,WAEA,OACA,YAEA,KAEA,IADA,iBACA,OACA,UAGA,OADA,UACA,WACA,CACA,mBCjCA,MAAc,EAAQ,KAAY,EAClC,EAAgB,EAAQ,KAAc,CADjB,CAerB,UAduB,SAUvB,KACA,kCACA,mBCbA,MAAiB,EAAQ,KAAe,EAGxC,UAHwB,EAGxB,8CAGA,kCAEA,uBCYA,UAZA,cACA,iDAIA,eAIA,WACA,aCAA,UALA,YAEA,OADA,oBAbA,6BAcA,IACA,aCHA,UAJA,YACA,2BACA,aCMA,UAVA,YACA,SACA,gBAKA,OAHA,sBACA,QACA,CAAG,EACH,CACA,mBCfA,MAAsB,EAAQ,IAAoB,EAWlD,EAVe,EAAQ,KAAa,EADP,GAa7B,OAZsB,EAYtB,cCRA,cA+BA,WApBA,YACA,QACA,IAEA,kBACA,UACA,EApBA,GAoBA,MAGA,GADA,IACA,IACA,SAzBA,IA0BA,mBACA,MAEA,IAEA,gCACA,CACA,mBClCA,MAAgB,EAAQ,KAAc,EActC,UAduB,WAUvB,oBACA,WACA,aCKA,UARA,YACA,oBACA,cAGA,OADA,iBACA,CACA,aCFA,UAJA,YACA,2BACA,YCEA,UAJA,YACA,2BACA,mBCXA,MAAgB,EAAQ,KAAc,EACtC,EAAU,EAAQ,KAAQ,CADH,CAEvB,EAAe,EAAQ,KAAa,CADnB,CAgCjB,UA/BsB,SAetB,KACA,oBACA,mBACA,iBACA,oBAGA,OAFA,cACA,mBACA,KAEA,wBACA,CAGA,OAFA,WACA,iBACA,uBC9BA,MAAmB,EAAQ,KAAiB,EAC5C,EAAiB,EAAQ,KAAe,CADd,CAE1B,EAAqB,EAAQ,KAAmB,CADxB,CAgBxB,UANA,YACA,YACA,KACA,IACA,mBCfA,MAAoB,EAAQ,KAAkB,EAG9C,UAH2B,2FAM3B,aASA,gBACA,SAOA,OANA,sBACA,WAEA,8BACA,gCACA,CAAG,EACH,CACA,CAAC,EAED,6BC1BA,MAAe,EAAQ,KAAY,EAGnC,MAiBA,IApBsB,KAoBtB,CARA,YACA,4BACA,SAEA,WACA,4BACA,aCdA,eAHA,UAGA,SAqBA,UAZA,YACA,YACA,IACA,gBACA,CAAM,UACN,IACA,WACA,CAAM,UACN,CACA,QACA,aCtBA,sBASA,oDACA,0BAEA,aACA,gCAA+C,CAC/C,CADiD,CACjD,iCAIA,QAPA,aAQA,sBACA,iDAKA,2BAHA,eAdA,UAcA,eADA,QAIA,KAaA,UAJA,YACA,wCCpCA,MAAe,EAAQ,KAAY,EACnC,EAAiB,EAAQ,IAAc,EADjB,EAsBtB,QAJA,CAjBwB,QAiBxB,GACA,4BACA,mBCpBA,MAAgB,EAAQ,KAAc,EA4BtC,UA5BuB,SAwBvB,GACA,aACA,aCDA,UANA,YACA,kBACA,QACA,CACA,aCaA,UAJA,cACA,wBACA,mBClCA,MAAkB,EAAQ,KAAgB,EAqB1C,UArByB,SAgBzB,GAEA,MADA,qBACA,qBCEA,UAJA,YACA,QACA,mBClBA,MAAsB,EAAQ,KAAoB,EAClD,EAAmB,EAAQ,KAAgB,CADd,CAI7B,UAH0B,QAG1B,CAGA,mBAGA,yBAoBA,eAA+C,iBAAmB,kBAClE,iCACA,mBACA,EAEA,uBCZA,oBAEA,6BCzBA,MAAiB,EAAQ,KAAc,EACvC,EAAe,EAAQ,KAAY,CA+BnC,WAJA,YACA,kCACA,kBC9BA,MAAkB,EAAQ,KAAe,EACzC,EAAmB,EAAQ,KAAgB,CADlB,CAgCzB,UA/B0B,SA2B1B,GACA,iBACA,8BC9BA,MAAW,EAAQ,KAAS,EAC5B,EAAgB,EAAQ,KAAa,CADnB,CAIlB,EAA4C,QAHrB,IAGL,EAA0B,IAG5C,KAA6C,YAAb,EAAa,IAM7C,EAN6C,GAG7C,cAGA,gBAGA,sBAqBA,UAFA,sBCnCA,MAAkB,EAAQ,IAAgB,CAkC1C,WAJA,CA9ByB,QA8BzB,KACA,aACA,mBChCA,MAAiB,EAAQ,KAAe,EACxC,EAAe,EAAQ,KAAY,CADX,CAoCxB,UAVA,YACA,SACA,SAIA,WACA,+DA7BA,0BA6BA,GA1BA,kBA0BA,CACA,aCAA,UALA,YACA,0BACA,iBA9BA,gBA+BA,kBChCA,MAAgB,EAAQ,KAAc,EACtC,EAAgB,EAAQ,KAAc,CADf,CAEvB,EAAe,EAAQ,KAAa,CADb,CAIvB,UAHsB,EAGtB,CAmBA,UAEA,wBCIA,UALA,YACA,eACA,4CACA,aCAA,UAJA,YACA,kCACA,mBC1BA,MAAiB,EAAQ,KAAe,EACxC,EAAmB,EAAQ,KAAiB,CADpB,CAExB,EAAmB,EAAQ,KAAgB,CADjB,CAQ1B,UAP0B,QAO1B,CAGA,EAJA,mBAIA,SAGA,mBAGA,iBA2CA,UAbA,YACA,kCACA,SAEA,WACA,YACA,SAEA,6CACA,4CACA,YACA,mBC3DA,MAAgB,EAAQ,IAAc,EACtC,EAAgB,EAAQ,KAAc,EADf,EAER,EAAQ,KAAa,CADb,CAIvB,UAHsB,EAGtB,CAmBA,WAEA,6BC1BA,MAAiB,EAAQ,KAAe,EACxC,EAAmB,EAAQ,KAAgB,CADnB,GA4BxB,QA3B0B,SAsB1B,GACA,0BACA,6BACA,mBC1BA,MAAuB,EAAQ,KAAqB,EACpD,EAAgB,EAAQ,KAAc,CADR,CAE9B,EAAe,EAAQ,KAAa,CADb,CAIvB,UAHsB,SAGtB,CAmBA,WAEA,4BC1BA,MAAoB,EAAQ,KAAkB,EAC9C,EAAe,EAAQ,KAAa,CADT,CAE3B,EAAkB,EAAQ,KAAe,CADnB,CAmCtB,UAJA,YACA,qBACA,mBClCA,MAAoB,EAAQ,KAAkB,EAC9C,EAAiB,EAAQ,KAAe,CADb,CAE3B,EAAkB,EAAQ,KAAe,CADjB,GA8BxB,QA7ByB,SAyBzB,GACA,wBACA,aCVA,UALA,YACA,yBACA,sBACA,mBCjBA,MAAe,EAAQ,KAAa,EAiDpC,UAjDsB,CAiDtB,KACA,uDACA,gBAhDA,uBAkDA,iBACA,gBACA,yBACA,UAEA,YACA,gBAEA,sBAEA,OADA,sBACA,CACA,EAEA,OADA,wBACA,CACA,CAGA,UAEA,6BCxEA,MAAgB,EAAQ,KAAc,EAkCtC,EAjCqB,EAAQ,KAAmB,CADzB,CAkCvB,UAjC4B,CAiC5B,KACA,QACA,CAAC,CAED,8BCtCA,MAAe,EAAQ,IAAa,EACpC,EAAgB,EAAQ,KAAc,EADhB,EAEN,EAAQ,KAAc,CADf,CAEvB,EAAe,EAAQ,KAAa,CADb,CAEvB,EAAiB,EAAQ,KAAe,CADlB,CAEtB,EAAsB,EAAQ,KAAoB,CAD1B,CAExB,EAAe,EAAQ,KAAa,CADP,CAE7B,EAAmB,EAAQ,KAAiB,CADtB,CA4BtB,UA3B0B,GA2B1B,KACA,SACA,WACA,SAEA,SACA,kBAGA,OAFA,SACA,kBACA,CACA,CAAG,EACH,YACA,GACA,aAGA,IADA,eACA,KACA,UAEA,QACA,CAAC,EAED,6BCxDA,MAAc,EAAQ,KAAY,EAkClC,UAlCqB,SA8BrB,OACA,yBACA,aCVA,UAJA,WACA,qBCFA,UAJA,WACA,QACA,mBCfA,MAAiB,EAAQ,KAAe,EACxC,EAAa,EAAQ,KAAU,CADP,CA+BxB,UA9BoB,SA0BpB,GACA,gBACA,mBC7BA,MAAmB,EAAQ,KAAiB,CA2B5C,WA3B0B,SAuB1B,GACA,sBACA,kBCNA,MAnBsB,EAAQ,IAAoB,EAmBlD,WAnB6B,IAqB7B,gECrB46K,aAAv5K,aAAa,oCAAoC,YAAY,mBAAmB,KAAK,mBAAmB,sEAAsE,UAAS,uBAAwB,eAAe,gCAAkC,k8BAAk8B,IAAI,oDAAiD,qGAAqG,SAAS,GAAG,IAAI,IAAI,MAAM,2BAA2B,GAAG,oCAAoC,GAAG,qBAAqB,GAAG,wBAAwB,GAAG,uBAAuB,GAAG,GAAG,GAAG,qDAAqD,EAAE,4KAA4K,IAAI,8DAA8D,IAAI,qEAAqE,EAAE,8EAA8E,kJAAkJ,IAAI,iCAAiC,2VAA2V,GAAG,IAAI,GAAG,uYAAmY,oBAAoB,GAAG,2QAAuR,GAAG,sWAA8W,eAAe,6SAA6S,eAAe,mEAAkE,mBAAmB,UAAY,OAAO,oBAAsB,MAAM,WAAW,+BAA+B,uLAAuL,IAAI,mBAAmB,OAAO,6DAA+E,CAA+D,IAA/D,mCAA4C,YAAmB,IAAnB,CAAiB,EAAE,OAAW,QAAe,uCAAuC,iBAAiB,0BAA0B,EAAE,sBAAsB,eAAe,qBAAqB,2BAA2B,eAAe,qBAAqB,gCAAgC,eAAe,qBAAqB,gCAAgC,eAAe,mBAAmB,kBAAkB,eAAe,IAAI,6GAA6G,SAAS,YAAY,SAAS,eAAe,0BAA0B,mBAAmB,wBAA0B,cAAc,aAAe,qBAAoH,mBAAmB,4BAA4B,kBAAoB,sBAAqB,CAAE,cAAc,SAAS,cAAc,YAAiE,mBAAmB,QAAQ,eAAqB,KAAK,gCAAiC,UAAW,YAAY,CAAqzO,YAAa,uFAAuF,UAAW,EAAG,OAAe,IAAI,IAAI,qBAAqB,mBAAmB,oBAAoB,YAAY,kBAAkB,QAAQ,WAAW,sCAAsC,SAAS,MAAM,OAAO,cAAc,UAA9mP,MAAkB,MAAqkO,GAAO,GAAzsB,EAAj4M,2BAA2B,yEAAyE,4BAA4B,uBAAyB,eAAe,CAAC,qBAAqB,wBAA0B,EAAE,UAAU,EAAE,uBAAuB,cAAgB,0EAA0E,EAAE,iBAAiB,oBAAoB,MAAM,mBAAjkB,MAAkB,oCAA+iB,gDAA6D,QAAQ,cAAc,IAAkL,EAAlL,KAAS,oDAAoD,mBAAqB,iBAAiB;AAAA;AAAA,GAAO,IAAI,GAAG,6BAA6B,kCAA0C,CAAN,EAAM,+BAAkC,KAAK,yDAA2D,YAAY,MAAM,OAAO,OAAO,eAAe,IAAI,YAAY,IAAI,cAAc,iBAAmB,kCAAkC,qBAAuB,eAAW,EAA2H,EAAkJ,EAA7Q,CAAkU,GAAlU,GAAoB,MAApB,EAA2H,CAAvG,CAAuG,YAAvG,8DAA2E,wBAAuB,IAAK,UAAoC,CAApC,EAAkJ,CAA9G,CAA8G,mBAA9G,qGAA8G,oBAA2T,EAAtQ,UAAsQ,EAAtQ,UAA4B,2BAA2B,gCAAkC,oFAAoF,GAAG,WAAsF,EAAtF,0EAAsF,UAAM,wCAAkD,cAAc,cAAc,OAAM,EAAG,iCAAiC,SAAS,GAAG,SAAS,eAAiB,KAAK,YAAY,8BAA+B,kCAAgC,2BAA6B,QAAQ,iBAAiB,YAAY,yCAA0C,QAAQ,EAAE,gBAAgB,yCAA0C,QAAQ,EAAE,YAAY,uBAAwB,yBAAyB,EAAE,wCAAuC,qBAAsB,QAAQ,WAAW,yBAAyB,OAAO,KAAK,aAAa,aAAa,uBAAwB,iDAAgD,CAAE,aAAa,uBAAwB,cAAa,sBAAuB,QAAQ,YAAY,WAAW,+BAAgC,8BAA8B,KAAI,MAAO,oBAAoB,wBAAyB,wBAAwB,gBAAgB,GAAE,mBAAoB,0BAA0B,UAAU,QAAQ,aAAa,UAAU,wBAAyB,oCAAmC,uBAAwB,wDAAwD,EAAE,UAAU,8BAA+B,2DAA0D,uBAAwB,QAAQ,WAAW,gBAAgB,kBAAkB,gBAAgB,6BAA8B,0DAAyD,CAAE,cAAc,2BAA2B,MAAO,QAAQ,yBAA0B,qCAAoC,qBAAsB,iEAAiE,EAAE,OAAO,8BAA+B,iBAAzkH,OAAmB,wBAA0B,cAAc,aAAe,sBAA+/G,sCAAgD,mBAAoB,wCAAwC,iBAAiB,8BAA8B,uBAAwB,UAAU,yBAAyB,2BAA0B,CAAE,sBAAsB,4CAA6C,UAAU,yBAAyB,wCAAuC,CAAE,qBAAqB,qBAAsB,kBAAkB,mCAAmC,UAAU,4CAA4C,yBAAyB,OAAO,SAAS,gBAAkB,6CAA2C,mBAAoB,uEAAyE,KAAS,OAAO,8BAA+L,EAArK,iBAA8C,IAA9C,qBAA8C,EAAQ,yFAAyF,IAAI,gBAAkB,EAAM,iEAAmE,aAAe,qBAAqB,qBAAqB,mCAAmC,sBAAsB,2BAA2B,eAAe,MAAM,SAAS,GAAG,mBAAmB,gCAAiC,YAAY,uCAAwC,QAAQ,iBAAiB,MAAM,gCAAiC,uBAAuB,IAAG,MAAO,WAAW,uBAAwB,2BAA0B,qBAAsB,iEAAiE,EAAE,UAAU,6BAA8B,wEAAuE,6BAA8B,wDAAwD,2BAA2B,QAAQ,yBAAyB,QAAQ,4CAA6C,QAAQ,uDAAuD,eAAe,oBAAoB,SAAS,6CAA6C,eAAe,MAAM,qBAAqB,eAAe,oBAAoB,SAAS,GAAG,IAAI,iBAAiB,gBAAgB,0BAA0B,uBAAwB,OAAO,uBAAuB,aAAa,OAAO,wBAAyB,oFAAmF,gBAAiB,aAAa,8BAA8B,mBAAkB,wBAAyB,QAAQ,iBAAiB,iBAAiB,8BAA8B,mBAAkB,oBAAqB,QAAQ,iBAAiB,cAAc,yBAA0B,0BAAyB,CAAE,sBAAsB,0CAA0C,QAAQ,kBAAmB,8CAA6C,0BAA2B,oCAA0C,EAAE,2DAAuE,CAAN,CAAM,sCAA+C,kBAAiB,sBAAwB,eAAe,qDAAqD,uBAAuB,QAAQ,mDAAmD,qBAAqB,wBAAyB,4BAA2B,wBAAyB,UAAU,QAAQ,IAAG,CAAE,QAAqQ,CAAhP,cAAka,KAAlL,mBAA4B,MAAsJ,EAAtJ,QAAsJ,EAAtJ,MAAsB,0BAA0B,gBAAgB,OAAvT,cAA4U,EAA5T,cAAc,KAAK,EAAE,EAAE,QAAQ,KAAK,WAAW,EAAE,gCAAiC,MAAM,WAAa,wBAAwB,gBAAmB,wCAAuC,MAAM,KAAK,SAAS,CAAiH,kDAAyD,IAAQ,OAAwB,gBAAuB,4BAA2B,iBAAsB,EAAE,qBAAqB,eAAiB,KAAS,YAAY,WAAW,KAAK,MAAM,qCAAuC,oCAAoC,eAAe,iBAAiB,CAAS,CAAP,EAAO,KAAc,qDAAqD,aAAa,oBAAoB,gBAAgB,4CAA4C,gCAAgC,KAAK,IAAI,QAAuU,QAAY,EAAwB,qOC0WxjaA,qCAAAA,kDA/VN,gBACc,gBACJ,YACW,WAYO,WACA,SACV,eACK,eAGJ,WACG,OAGvBC,EAAYC,CAAAA,YAAAA,CAAAA,IAAAA,IAAAA,IAAAA,KAAAA,KAAAA,KAAAA,KAAAA,KAAAA,CAAAA,WAAAA,CAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,IAAAA,IAAAA,IAAAA,CAAAA,KAAAA,gBAAAA,OAAAA,UAAAA,oBAAAA,CAAAA,EAAAA,YAAAA,CAAAA,CAAAA,CAA6B,CAyB/C,SAASC,EACPC,CAA2B,CAC3BC,CAA6B,CAC7BC,CAAqD,CACrDC,CAA2E,CAC3EC,CAAqC,CACrCC,CAAoB,CACpBC,CAA8B,EAE9B,IAAMC,EAAMP,MAAAA,EAAAA,KAAAA,EAAAA,EAAKO,GAAG,CACfP,GAAOA,CAAG,CAAC,kBAAkB,GAAKO,IAGvCP,CAH4C,CAGxC,kBAAkB,CAAGO,EAEzBC,CADU,WAAYR,EAAMA,EAAIS,MAAM,GAAKC,QAAQC,OAAO,IACxDC,KAAK,CAAC,WAAO,GAAGC,IAAI,CAAC,WACrB,GAAKb,EAAIc,aAAa,EAAKd,EAAD,WAAgB,EAAE,GAQxB,SAAS,CAAzBC,GACFG,GAAgB,GAEdF,MAAAA,EAAAA,KAAAA,EAAAA,EAAWa,OAAO,CAAE,CAItB,IAAMC,EAAQ,IAAIC,MAAM,QACxBC,OAAOC,cAAc,CAACH,EAAO,SAAU,CAAEI,SAAU,GAAOC,MAAOrB,CAAI,GACrE,IAAIsB,GAAY,EACZC,GAAU,EACdrB,EAAUa,OAAO,CAAC,WACbC,GAAK,CACRQ,CADQ,WACKR,EACbS,cAAezB,EACf0B,OAAQ1B,EACR2B,mBAAoB,kBAAML,GAC1BM,qBAAsB,kBAAML,GAC5BM,QAAS,WAAO,EAChBC,eAAgB,WACdR,GAAY,EACZN,EAAMc,cAAc,EACtB,EACAC,gBAAiB,WACfR,GAAU,EACVP,EAAMe,eAAe,EACvB,IAEJ,EACI5B,MAAAA,EAAAA,KAAAA,EAAAA,EAAsBY,OAAAA,EAAS,CACjCZ,EAAqBY,OAAO,CAACf,GAkDjC,GACF,CAEA,SAASgC,EACPC,CAAsB,SAEtB,EAAYC,EAARC,CAAW,CAIN,CAAEF,CAJO,aAIPA,CAAc,EAIlB,CAAEG,cAAeH,CAAc,CACxC,CAEA,IAAMI,EAAeC,CAAAA,EAAAA,EAAAA,QAAfD,EAAeC,EACnB,OADID,EACJ,EAwBEE,CAAAA,MAvBA,EAsBC,gDAhBCC,EAgBD,MAhBS,IAgBT,KAfCC,SAAS,GAeV,8CAXCC,OAAO,CACPrC,EAUD,SAVY,IAUZ,4BAPCF,oBAAoB,GAOrB,EANCC,eAAe,CACfuC,EAKD,YALe,IAKf,uCADIC,EACJ,OArBCrC,GAAG,GACHsC,MAAM,GACNC,KAAK,GACLC,MAAM,GACNC,KAAK,0BAGLC,KAAK,GACLhB,aAAa,GACbhC,WAAW,2BAGXiD,IAAI,GACJhD,SAAS,6DAITI,UAAU,GACV6C,MAAM,GACNC,OAAO,EACP,GAIIC,EAASC,CAAAA,EAAAA,EAAAA,WAAAA,EACb,SAACtD,CAAAA,EACMA,IAGDoD,CAHM,EAQRpD,GAAIO,GALO,CAKDP,EAAIO,GAAAA,EAYZP,EAAIuD,QAAQ,EAAE,EAEdvD,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGN,EACA,CACEC,EACAN,EACAC,EACAC,EACAC,EACAgD,EACA/C,EACAC,EACD,EAGGkD,EAAMC,GAAAA,EAAAA,YAAAA,EAAalB,EAAcc,GAEvC,MACE,UAACrD,MAAAA,EAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EACK4C,EACAZ,EADI,IAC0B,CAIlCU,QAASA,CAJyB,CAKlCM,MAAOA,EACPD,OAAQA,EACRP,SAAUA,EACVkB,YAAWR,EAAO,OAAS,IAC3BT,UAAWA,EACXQ,MAAOA,EAOPH,MAAOA,EACPD,OAAQA,EACRtC,IAAKA,EACLiD,IAAKA,EACLL,OAAQ,SAACnC,CAAAA,EAEPjB,EADYiB,EAAMS,UAEhBzB,GAF6B,CAG7BC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,EACA8C,QAAS,SAACpC,CAAAA,EAER2B,EAAe,IACK,SAAS,CAAzB1C,GAEFG,EAAgB,IAEdgD,GACFA,EAAQpC,EAEZ,EAHe,EAMrB,GAGF,SAAS2C,EAAa,CAMrB,EANqB,QACpBC,WAAW,KACXC,aAAa,CAKPC,EAAO,KACXC,GAAI,QACJC,YAAaH,EAAchB,MAAM,CACjCoB,WAAYJ,EAAcf,KAAK,CAC/BoB,YAAaL,EAAcK,WAAW,CACtCC,eAAgBN,EAAcM,cAAc,EACzCnC,EAAgB6B,EAAc5B,aAAa,CAAC,SAGjD,GAAmBmC,EAAAA,OAAAA,CAASC,OAAO,EAAE,EAEnCD,OAAQ,CAACC,OAAO,CACdR,EAActD,GAAG,CACjB,GAGK,MAIP,UAAC+D,EAAAA,GAAAA,IAAI,WACH,UAACC,OAAAA,EAAAA,CAAAA,CAAAA,CAOCC,IAAI,UAMJC,KAAMZ,EAAchB,MAAM,CAAG6B,OAAYb,EAActD,GAAG,EACtDuD,GAZF,CAYM,SAXND,EAActD,GAAG,CACjBsD,EAAchB,MAAM,CACpBgB,EAAcf,KAAK,GAa7B,CAOO,IAAMlD,EAAQ0C,CAAAA,EAAAA,EAAAA,CAAR1C,SAAQ0C,EAAR1C,SACV+E,CAAAA,CAAOpC,CAAAA,EACN,IAAMqC,EAAcC,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,aAAa,EAItCC,EAAgBF,CAAAA,EAAAA,EAAAA,UAAAA,EAAWG,EAAAA,kBAAkB,EAC7CC,EAASC,CAAAA,EAAAA,EAAAA,OAAAA,EAAQ,WACrB,IAGkBC,EAHZA,EAAItF,GAAakF,GAAiBK,EAAAA,kBAAkB,CACpDC,EAAW,IAAIF,EAAEG,WAAW,aAAKH,EAAElB,UAAU,GAAEsB,IAAI,CAAC,SAACC,CAAAA,CAAGC,CAAAA,SAAMD,EAAIC,IAClEH,EAAcH,EAAEG,WAAW,CAACC,IAAI,CAAC,SAACC,CAAAA,CAAGC,CAAAA,SAAMD,EAAIC,IAC/CC,EAAAA,MAAAA,CAAAA,EAAYP,EAAEO,SAAAA,EAAS,OAAXP,EAAaI,IAAI,CAAC,SAACC,CAAAA,CAAGC,CAAAA,SAAMD,EAAIC,IAClD,OAAO,WAAKN,CAAC,YAAEE,cAAUC,YAAaI,GACxC,EAAG,CAACX,EAAc,EAElB,EAAM,EAAE5B,MAAM,KAAEwC,iBAAiB,CAC3BzF,EAAY0F,CAAAA,EAAAA,EAAAA,MAAAA,EAAOzC,GAEzB0C,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,WACR3F,EAAUa,OAAO,CAAGoC,CACtB,EAAG,CAACA,EAAO,EAEX,IAAMhD,EAAuByF,GAAAA,EAAAA,MAAAA,EAAOD,GAEpCE,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,WACR1F,EAAqBY,OAAO,CAAG4E,CACjC,EAAG,CAACA,EAAkB,EAEtB,MAAM,IAAkCG,CAAAA,EAAAA,EAAAA,QAAAA,GAAS,MAA1CC,EAAAA,CAAAA,CAAAA,EAAAA,CAAc3F,EAAmB0F,CAAAA,CAAAA,EAAAA,CACxC,EAAM,IAAgCA,CAAAA,EAAAA,EAAAA,QAAAA,GAAS,MAAxCE,EAAAA,CAAAA,CAAAA,EAAAA,CAAarD,EAAkBmD,CAAAA,CAAAA,EAAAA,CAEtC,EAAM,CAA0CG,EAAAA,EAAAA,CAFb,UAEaA,EAAYtB,EAAO,CACjEuB,cAAAA,EAAAA,OAAa,CACbC,EADAD,MACSjB,eACTc,cACAC,CACF,GALenC,EAAa,EAApBc,KAAAA,CAAsByB,EAAkBH,CAApB,CAAoBA,GAAL,CAAKA,CAOhD,MACE,iCAEI,UAAC5D,EAAAA,EAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EACKwB,GAAa,CACjBxD,SADiB,GACJgG,EAAQhG,WAAW,CAChCJ,YAAaoG,EAAQpG,WAAW,CAChCiD,KAAMmD,EAAQnD,IAAI,CAClBhD,UAAWA,EACXC,qBAAsBA,EACtBC,gBAAiBA,EACjBuC,eAAgBA,EAChBrC,WAAYqE,EAAM7B,KAAK,CACvBU,IAAKjB,KAGR8D,EAAQC,QAAQ,CACf,UAAC3C,EAAAA,CACCC,YApDY,CAoDCA,EACbC,cAAeA,IAEf,OAGV,mdC3VD,QAsEA,SArED,OAqEC,EArEuB0C,SA1BH,SAALC,KAAK,IAALA,+BApDgB,mBACX,QAgCrB,SAASC,EAAiBC,CAAgD,EACxE,MAAO,CAAEC,QAAS,CAACD,MAAAA,EAAAA,KAAAA,EAAAA,EAA4BC,OAAAA,GAAWD,CAAI,CAChE,CAiBO,SAASF,EACdI,CAAkC,CAClCC,CAAkC,EAQhC,OALF,OAAOA,EAAgBC,OAAO,CAC9B,OAAOD,EAAgBE,OAAO,CAIrBH,EAAoBC,EAQ/B,CAQe,SAASN,EACtBS,CAA6C,CAC7CC,CAA2B,EAE3B,IAAIC,EAAaC,EAAAA,OAAQ,CAErBN,EAAsC,CAExCnE,QAAS,CAJMyE,QAIN,UAAgC,EAA7BC,KAAK,CAAwB,EAAtBC,SAAS,CAAa,EAAXC,SAAS,CAgB9B,IACT,CACF,EAMIN,aAA0BtG,QAC5BmG,CADqC,CACrBU,MAAM,CAAG,kBAAMP,GAEI,YAAY,OAA/BA,EAChBH,EAAgBU,MAAM,CAAGP,EAEpB,wBAAI,GAAOA,CAAAA,EAAAA,CAAAA,GAAmB,UAAU,CAC7CH,EAAkB,OAAKA,EAAoBG,EAAc,EAM3D,IAAMQ,EAAWX,CAFjBA,EAJwC,EAItB,KAAKA,EAAoBI,EAAO,EAEjBM,MAAM,GAFD,IAkBtC,CATIV,EAAgBY,iBAAiB,EAAE,CACrCZ,EAAkB,OACbA,EACAA,EAAgBY,WADD,MACkB,EAEtC,OAAOZ,EAAgBY,iBAAiB,EAItC,aAA4C,KAArCZ,EAAgBa,GAAG,EAAmBb,EAAgBa,GAAG,EAAE,EAOpD,WAAKb,GAAe,CAAEU,OAtBzB,CAsBiCA,GAAV,cArBxB,MAAZC,EACIA,IAAW3G,IAAI,CAAC4F,GAChB/F,QAAQC,OAAO,CAAC8F,EAAc,kBAAM,aAaxC,OAAOI,EAAgBC,OAAO,CAC9B,OAAOD,EAAgBE,OAAO,CAEvBP,EAAMU,EAAYL,GAI7B,qcC2FgBZ,qCAAAA,OA9OS,eACO,UACG,OAiGnC,SAAS0B,EACPpH,CAAoC,EAEpC,YAA0CmE,IAAlCnE,EAAsBoG,OAAO,CAwBvC,SAASiB,EAAOC,CAAU,SACxB,KAAiB,IAANA,EACFA,EAEQ,KAHa,KAG1B,OAAOA,EACFC,OAAOC,QAAQ,CAACF,GAAKA,EAAIG,IAE9B,iBAAOH,GAAkB,WAAWI,IAAI,CAACJ,GACpCK,CADwC,QAC/BL,EAAG,IAEdG,GACT,CAqGO,SAAS/B,EACd,CAyBa,CACbkC,CAKC,EA/BD,IAhIsB5H,EA+OlB6H,CA/O4C,CAgP5CC,EAhHJ,gDAGqB,6BACH,gCAGhBC,OAAO,KACPtF,KAAK,CACLD,EATF,IASQ,IATR,qBAUS,GAAK,MACZE,KAAK,gEAILhD,EAAAA,KAAAA,IAAAA,EAAc,OAAO,GACrBsI,EAAW,cACXtG,EAAa,oBACbO,QAAAA,CACAgG,EAAM,2BAENC,cAAc,CAGX7F,CAFH8F,EAAY,GAGD,OAHC,gBAGD,OAxBXnI,GAAG,GACHuC,KAAK,GACLzC,cACAiG,WACA5D,OAAO,GACPD,SAAS,8BAITS,eAEAyF,WAAW,GACXxF,MAAM,GACNwC,iBAAiB,mEAMjBiD,SAAS,mCAGTC,QAAQ,EACR,IAiBF,EAAM,EAAE1C,OAAO,KAAEH,WAAW,KAAED,YAAY,CAAEG,EAAkBiC,EAAAA,SAAL,EAAE,EAAGA,CAE1DhD,EAAIgB,GAAWf,EAAAA,kBAAkB,CACrC,GAAI,aAAcD,EAChBF,CADmB,CACVE,MACJ,CACL,IALEF,EAOgBE,EAFZE,EAAW,IAAIF,EAAEG,WAAW,aAAKH,EAAElB,UAAU,GAAEsB,IAAI,CAAC,SAACC,CAAAA,CAAGC,CAAAA,SAAMD,EAAIC,IAClEH,EAAcH,EAAEG,WAAW,CAACC,IAAI,CAAC,SAACC,CAAAA,CAAGC,CAAAA,SAAMD,EAAIC,IAC/CC,EAAAA,OAAYP,EAAAA,EAAEO,SAAAA,EAAS,OAAXP,EAAaI,IAAI,CAAC,SAACC,CAAAA,CAAGC,CAAAA,SAAMD,EAAIC,IAClDR,EAAS,WAAKE,CAAC,YAAEE,cAAUC,YAAaI,GAC1C,CAEA,GAAI,KAAyB,IAAlBQ,EACT,MAAM,CADkC,KAEtC,yIAGJ,IAAIqB,EAAgC3E,EAAK2E,MAAM,EAAIrB,CAGnD,QAAOtD,EAAK2E,MAAM,CAClB,OAAQ3E,EAAaC,MAAM,CAI3B,IAAMiG,EAAkB,uBAAwBvB,EAEhD,GAAIuB,GACF,GAAsB,UAAU,CADb,EACRvB,MAAM,CACf,MAAM,yBACehH,EAAlB,IAAsB,gCACpB,iEAEP,KACK,CAIL,IAAMwI,EAAoBxB,EAC1BA,EAAS,SAACyB,CAAAA,EAER,OADmB,SACZD,CADejF,CAAM,IAAGkF,CAAH,CAAGA,UACNlF,EAC3B,CACF,CAEA,GAAI0E,EAAQ,CACK,QAAQ,CAAnBA,IACFtF,GAAO,GAUT,IAAM+F,EARoE,CACxEC,UAAW,CAAEC,SAAU,OAAQpG,OAAQ,MAAO,EAC9CqG,WAAY,CAAEpG,MAAO,OAAQD,OAAQ,MAAO,CAC9C,CAKiC,CAACyF,EAAO,CACrCS,IACFhG,EAAQ,OADO,EACQgG,EAAW,CAAhB,CAEpB,IAAMI,EARoD,CACxDD,WAAY,QACZlG,KAAM,OACR,CAKiC,CAACsF,EAAO,CACrCa,GAAe,CAACvG,IAClBA,EAAQuG,CADiB,CAG7B,CAEA,IAAIC,EAAY,GACZC,GAAW3B,EAAO5E,GAClBwG,GAAY5B,EAAO7E,GAGvB,GA/OE,CA+OE0G,CA/OAlJ,CA+OeA,IA/OfA,CAAAA,KAAAA,IAAAA,EAAAA,YACF,GAAOA,CAAAA,EAAAA,CAAAA,GAAQ,WACdoH,CAAAA,CAAgBpH,QACfmJ,CARoChF,IAAhCnE,EAAwBA,GAAG,CAQbA,CA4OG,CACvB,IAAMoJ,GAAkBhC,EAAgBpH,GAAOA,EAAIoG,OAAO,CAAGpG,EAE7D,GAAI,CAACoJ,GAAgBpJ,GAAG,CACtB,CADwB,KAClB,MACH,8IAA6IqJ,KAAKC,SAAS,CAC1JF,KAIN,GAAI,CAACA,GAAgB5G,MAAM,EAAI,CAAC4G,GAAgB3G,KAAK,CACnD,CADqD,KAC/C,MACH,2JAA0J4G,KAAKC,SAAS,CACvKF,KAUN,GALAvB,EAAYuB,GAAgBvB,SAAS,CACrCC,EAAasB,GAAgBtB,UAAU,CACvCE,EAAcA,GAAeoB,GAAgBpB,WAAW,CACxDe,EAAYK,GAAgBpJ,GAAG,CAE3B,CAAC2C,GACH,GAAKqG,IAAaC,IAGX,GAAID,CAHM,GAGM,CAACC,GAAW,CACjC,IAAMM,GAAQP,GAAWI,GAAgB3G,KAAK,CAC9CwG,GAAYO,KAAKC,KAAK,CAACL,GAAgB5G,MAAM,CAAG+G,GAClD,MAAO,GAAI,CAACP,IAAYC,GAAW,CACjC,IAAMM,GAAQN,GAAYG,GAAgB5G,MAAM,CAChDwG,GAAWQ,KAAKC,KAAK,CAACL,GAAgB3G,KAAK,CAAG8G,GAChD,OAREP,GAAWI,GAAgB3G,KAAK,CAChCwG,GAAYG,GAAgB5G,MAAM,CASxC,CAGA,IAAIkH,GACF,CAAC3D,IAAa5D,QAAAA,IAAsB,KAAmB,IAAZA,CAAY,EAAU,CAC/D,CAACnC,CAJLA,EAAqB,UAAf,OAAOA,EAAmBA,EAAM+I,CAAAA,GAI1B/I,EAAI2J,UAAU,CAAC,UAAY3J,EAAI2J,UAAU,CAAC,WAAU,CAE9D7J,GAAc,EACd4J,IAAS,GAEPhF,EAAO5E,WAAW,EAAE,CACtBA,GAAc,GAGdyI,GACA,CAAC7D,EAAOkF,mBAAmB,EAC3B5J,EAAI6J,KAAK,CAAC,IAAK,EAAE,CAAC,EAAE,CAACC,QAAQ,CAAC,SAI9BhK,IAAc,GAGhB,IAAMiK,GAAa1C,EAAOU,GAyMpBiC,GAAWrJ,OAAOsJ,MAAM,CAC5BtH,EACI,CACEuH,SAAU,WACV1H,OAAQ,OACRC,MAAO,OACP0H,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,OAAQ,YACRjC,iBACAH,CACF,EACA,CAAC,EACLzC,EAAc,CAAC,EAAI,CAAE8E,MAAO,aAAc,EAC1C7H,GAGI8H,GACJ,GAAiC,UAAhB9K,EAWb,KAVgB,SAAhBA,EACG,yCAAwC+K,CAAAA,EAAAA,EAAAA,eAAAA,EAAgB,CACvDzB,SAAAA,aACAC,GACApB,UAAAA,aACAC,EACAE,YAAaA,GAAe,GAC5BK,UAAW2B,GAAS3B,SAAS,GAC5B,KACF,QAAO3I,EAAY,KAAI,GAGT8K,GACnB,CACEE,eAAgBV,CALiC,EAKxB3B,SAAS,EAAI,QACtCsC,mBAAoBX,GAAS9B,cAAc,EAAI,UAC/C0C,iBAAkB,4BAClBJ,EACF,EACA,CAAC,EAeClH,GAndR,SAASuH,CAQS,EARQ,QACxBnG,MAAM,GADkB,EAExB1E,GAAG,KACHF,WAAW,KACX2C,KAAK,KACLsF,OAAO,KACPxF,KAAK,KACLyE,MAAM,CAEN,GAAIlH,EACF,MAAO,KADQ,EACDwC,YAAQ6B,EAAW5B,WAAO4B,CAAU,EAGpD,MAxEF,SACE,CAAsC,CACtC1B,CAAyB,CACzBF,CAAyB,EAFzB,QAAEwC,WAAW,GAAb,EAAeD,QAAQ,CAIvB,GAAIvC,EAAO,CAIT,IAAK,IAFCuI,EAAkB,qBAClBC,EAAe,EAAE,CACNC,EAAQF,EAAgBG,IAAI,CAAC1I,GAASyI,EACrDD,EAAaG,EAD+C,EAC3C,CAACvD,SAASqD,CAAK,CAAC,EAAE,GAErC,GAAID,EAAaI,MAAM,CAAE,CACvB,IAJOH,IAIDI,EAAAA,IAAAA,CAAAA,EAAAA,IAAAA,EAAqBC,GAAG,OAAR7B,EAAQ,IAAIuB,IAClC,MAAO,CACLO,OAAQxG,EAASyG,MAAM,CAAC,SAACC,CAAAA,SAAMA,GAAKzG,CAAW,CAAC,EAAE,CAAGqG,IACrDK,KAAM,GACR,CACF,CACA,MAAO,CAAEH,OAAQxG,EAAU2G,KAAM,GAAI,CACvC,OACqB,UAAU,OAApBhJ,EACF,CAAE6I,OAAQvG,EAAa0G,KAAM,GAAI,EAkBnC,QAfQ,CAeNH,CAfM,EACV,IAAII,IACL,CAQCjJ,EAAe,EAARA,EAA0B,CAACkJ,GAAG,CACpC,MAD6B,GAC5BC,CAAAA,SAAM9G,EAAS+G,IAAI,CAAC,SAAC5L,CAAAA,SAAMA,GAAK2L,KAAM9G,CAAQ,CAACA,EAASqG,MAAM,CAAG,EAAE,KAIzDM,KAAM,GAAI,CAC7B,EA+BqC/G,EAAQjC,EAAOF,GAAAA,EAAAA,EAA1C+I,MAAM,GAAWQ,EAATL,IAAI,CACdM,EAAOT,EAAOH,MAAM,CAAG,EAE7B,MAAO,CACL5I,MAAQA,GAASkJ,QAAyBlJ,EAAV,QAChCD,OAAQgJ,EACLK,GAAG,CACF,SAACC,CAAAA,CAAGI,CAAAA,SACChF,EAAO,QAAEtC,MAAQ1E,UAAK+H,EAAStF,MAAOmJ,CAAE,GAAG,KACnC,CAATH,KAAAA,EAAeG,EAAII,EAAAA,CAAAA,CAAI,CACtBP,IAENQ,IAAI,CAAC,MAQRjM,IAAKgH,EAAO,CAAEtC,OAAAA,EAAQ1E,IAAAA,UAAK+H,EAAStF,MAAO6I,CAAM,CAACS,EAAK,EACzD,CACF,EAgbyC,QACrCrH,EACA1E,IAAAA,cACAF,EACA2C,MAAOuG,GACPjB,QAASgC,SACTxH,SACAyE,CACF,GA4BA,MAAO,OAdiB,CAcf5C,CAde,SACnB/B,GAAI,SACEqH,GAAS,OAASvH,EAC3BT,cAAAA,EACAe,MAAOuG,GACPxG,OAAQyG,YAnbRhH,CAobAA,IApbAA,IAAAA,EAAW,OAAO,aAqblBC,EACAQ,MAAO,OAAKsH,GAAakC,IACzB3J,CADoB,KACbe,GAAcf,GADoB,EACf,CAC1BD,OAAQgB,GAAchB,MAAM,CAC5BtC,IAAKoI,GAAe9E,GAActD,GAAG,QAE1B,CACG6F,YADD/F,WAAaiG,cAAUrG,OAAaiD,CAAK,CACnC,CACvB,6BC3rBO,SAAS8H,EAAgB,CAc/B,EAd+B,QAC9BzB,QAAQ,KACRC,SAAS,KACTpB,SAAS,KACTC,UAAU,KACVE,WAAW,GALmB,EAM9BK,SAAS,CAUH8D,EAAWtE,EAAwB,GAAZA,EAAiBmB,EACxCoD,EAAYtE,EAA0B,GAAbA,EAAkBmB,EAE3CoD,EACJF,GAAYC,EAAa,gBAAeD,EAAS,IAAGC,EAAU,IAAK,GASrE,MAAQ,6CAA4CC,UAAQ,8FAA2FC,MAAI,oQAAiQA,MAAI,qEARpYD,EACxB,OACc,YAAdhE,EACE,IAKufkE,OAJze,YACZ,iBACA,QAEygB,sCAAqCvE,EAAY,iBACpkB,4FA9BgByC,qCAAAA,gCCChB,SAAS9E,EAAc,CAKM,EALN,IAmFnBjB,EAnFmB,IACrBA,MAAM,KACN1E,GAAG,KACHyC,KAAK,CA8EC+J,EAjFe,EAIrBzE,OAAO,EA8ELA,CACgB,OAAhBrD,EAAAA,EAAOS,SAAAA,EAAS,OAAhBT,EAAkB+H,MAAM,CAAC,SAACC,CAAAA,CAAMC,CAAAA,SAC9BnD,KAAKoD,GAAG,CAACD,MAAME,KAAkBD,GAAG,CAACF,MAAoBC,CAAbE,CAAmBH,IAAAA,EAtFnD,GAwFdG,OAEQnI,EAAOoI,IAAI,CAAC,QAAOC,mBAAmB/M,GAAK,MAAKyC,EAAM,MAAK+J,GACnExM,CAAAA,CAAI2J,UAAU,CAAC,wBAEX,GAER,CAFS,IAFmE,GACnE,CAAqC,2EAS9C,0CAFAhE,EAAcqH,kBAAkB,EAAG,MAEnC,EAAerH,2HCjGFsH,qCAAAA,KAAN,IAAMA,EAAkBC,MAAAA,OAJb,QAIaA,OAAK,CAACC,aAAa,CAAmB,wNCuSrE,6DArRkB,YACc,OAM1BC,EAA0B,EAAE,CAC5BC,EAA4B,EAAE,CAChCC,EAAc,GAElB,SAASC,EAAKvG,CAAW,EACvB,IAAIwG,EAAUxG,IAEVyG,EAAa,CACftL,SAAS,EACTuL,OAAQ,KACR7G,MAAO,IACT,EAcA,OAZA4G,EAAMD,OAAO,CAAGA,EACblN,IAAI,CAAC,SAACoN,CAAAA,EAGL,OAFAD,EAAMtL,OAAO,CAAG,GAChBsL,EAAMC,MAAM,CAAGA,EACRA,CACT,GACCrN,KAAK,CAAC,SAACsN,CAAAA,EAGN,MAFAF,EAAMtL,OAAO,CAAG,GAChBsL,EAAM5G,KAAK,CAAG8G,EACRA,CACR,GAEKF,CACT,CAyGA,4BAQcG,CAAW,CAAErK,CAAS,CAAE,aAClC,IAAI,CAACsK,OAAO,CAAGD,EACf,IAAI,CAACE,KAAK,CAAGvK,EACb,IAAI,CAACwK,UAAU,CAAG,IAAIrC,IACtB,IAAI,CAACsC,MAAM,CAAG,KACd,IAAI,CAACC,QAAQ,CAAG,KAEhB,IAAI,CAACC,KAAK,+CAGZV,EACE,OAAO,CADC,GACG,CAACW,IAAI,CAACX,OAAO,IAG1BU,IAAAA,GAAQ,iCACN,IAAI,CAACE,cAAc,GACnB,IAAI,CAACD,IAAI,CAAG,IAAI,CAACN,OAAO,CAAC,IAAI,CAACC,KAAK,CAAC9G,MAAM,EAE1C,IAAI,CAACY,MAAM,CAAG,CACZb,WAAW,EACXsH,UAAU,CACZ,EAEA,IAAcC,EAAG,KAATH,IAAAA,CAAkB5K,EAAS,EAAL,EAAE,CAAbuK,KAAAA,CAEfQ,EAAInM,OAAO,EAAE,CACW,UAAtB,OAAOoB,EAAKgL,KAAK,GACfhL,GAAkB,GAAbgL,KAAK,CACZ,IAAI,CAAC3G,MAAM,CAACb,SAAS,CAAG,GAExB,IAAI,CAACiH,MAAM,CAAGQ,WAAW,WACvB,EAAKC,EAAD,KAAQ,CAAC,CACX1H,WAAW,CACb,EACF,EAAGxD,EAAKgL,KAAK,GAIW,UAAxB,OAAOhL,EAAKmL,OAAO,GACrB,IAAI,CAACT,QAAQ,CAAGO,WAAW,WACzB,EAAKC,EAAD,KAAQ,CAAC,CAAEJ,UAAU,CAAK,EAChC,EAAG9K,EAAKmL,QAAO,GAInB,IAAI,CAACP,IAAI,CAACX,OAAO,CACdlN,IAAI,CAAC,WACJ,EAAKmO,EAAD,KAAQ,CAAC,CAAC,GACd,EAAKL,EAAD,YAAe,EACrB,GACC/N,KAAK,CAAC,SAACsO,CAAAA,EACN,EAAKF,EAAD,KAAQ,CAAC,CAAC,GACd,EAAKL,EAAD,YAAe,EACrB,GACF,IAAI,CAACK,OAAO,CAAC,CAAC,EAChB,iCAEQG,CAAY,EAAE,IAChB,CAAChH,MAAM,CAAG,eACT,IAAI,CAACA,MAAM,GACdf,MAAO,IAAI,CAACsH,IAAI,CAACtH,KAAK,CACtB6G,OAAQ,IAAI,CAACS,IAAI,CAACT,MAAM,CACxBvL,QAAS,IAAI,CAACgM,IAAI,CAAChM,OAAO,GACvByM,GAEL,IAFY,CAEPb,UAAU,CAACc,OAAO,CAAC,SAACC,CAAAA,SAAkBA,KAC7C,wCAEAV,EACEW,aAAa,EADE,EACE,CAACf,MAAM,EACxBe,aAAa,IAAI,CAACd,QAAQ,CAC5B,yCAEAe,EACE,OAAO,IAAI,CAACpH,IADI,EACE,mCAGpBqH,CAAuB,EAAE,WAEvB,OADA,IAAI,CAAClB,UAAU,CAACmB,GAAG,CAACJ,GACb,WACL,EAAKf,EAAD,QAAW,CAACoB,MAAM,CAACL,EACzB,CACF,KA1FIM,KA6FN,SAASxI,EAASrD,CAAS,EACzB,OArMF,SAAS8L,CAAmC,CAAE3I,CAAY,EACxD,IAAInD,EAAO5C,OAAOsJ,MAAM,CACtB,CACEjD,OAAQ,KACR7E,QAAS,KACToM,MAAO,IACPG,QAAS,KACTnI,QAAS,KACTC,QAAS,IACX,EACAE,GAIE4I,EAAoB,KACxB,SAASC,IACP,GAAI,CAACD,EAAc,CAEjB,IAAME,EAAM,IAAIJ,EAAqBxB,EAAQrK,GAC7C+L,EAAe,CACbN,gBAAiBQ,EAAIR,eAAe,CAACS,IAAI,CAACD,GAC1CP,UAAWO,EAAIP,SAAS,CAACQ,IAAI,CAACD,GAC9BtB,MAAOsB,EAAItB,KAAK,CAACuB,IAAI,CAACD,GACtBhC,QAASgC,EAAIhC,OAAO,CAACiC,IAAI,CAACD,EAC5B,CACF,CACA,OAAOF,EAAa9B,OAAO,EAC7B,CAQA,GAAI,CAACF,EAA8C,CAEjD,IAAMoC,EACJnM,EAAKgD,IAHW,GAGJ,CACRhD,EAAKgD,CAJcoJ,MAAW,GAK9BpM,CAF+C,CAE1CiD,IAF+C,GAExC,CACdkJ,GACFrC,EAAmBnC,IAAI,CAAC,CADX,QACY0E,CAAAA,6BACvB,QAAuBF,EAAlB,EAAkBA,CAAAA,CAAAA,OAAAA,QAAAA,CAAAA,GAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,CAAAA,EAAW,KAAvBG,EAAAA,EAAAA,KAAAA,CACT,GAAID,EAAIE,QAAQ,CAACD,GACf,OAAON,CADmB,EAG9B,oFACF,EAEJ,CAaA,SAASQ,EAAkB3L,CAAU,CAAEnB,CAAQ,EAV7CsM,OAEgBrC,EAAAA,IAAAA,GAAK,CAAC5I,UAAU,CAAC2I,EAAAA,eAAe,IACjC+C,MAAMC,OAAO,CAAC1M,EAAKiD,OAAO,GAAG,EACrCA,OAAO,CAACqI,OAAO,CAAC,SAACqB,CAAAA,EACpBC,EAAQD,EACV,GAOF,IAXMC,EAWA1C,EAASP,EAAAA,IAAAA,GAAK,CAASkD,oBAAoB,CAC/Cd,EAAaL,SAAS,CACtBK,EAAaN,eAAe,CAC5BM,EAAaN,eAAe,EAW9B,OARA9B,EAAAA,IAAAA,GAAK,CAACmD,mBAAmB,CACvBpN,EACA,IAAO,cACLiL,MAAOoB,EAAapB,KAAK,GAE3B,EAAE,EAGGhB,EAAAA,IAAAA,GAAK,CAACvI,OAAO,CAAC,wBACnB,EAAUxC,OAAO,EAAIsL,EAAM5G,KAAK,CACvBqG,CADyB,CACzBA,IAAAA,GAAK,CAACoD,aAAa,CAAC/M,EAAKpB,OAAO,CAAE,CACvC2E,UAAW2G,EAAMtL,OAAO,CACxB4E,UAAW0G,EAAM1G,SAAS,CAC1BsH,SAAUZ,EAAMY,QAAQ,CACxBxH,MAAO4G,EAAM5G,KAAK,CAClBqH,MAAOoB,EAAapB,KAAK,GAElBT,EAAMC,MAAM,CACdR,CADgB,CAChBA,IAAAA,GAAK,CAACoD,aAAa,CAzHzB7H,CADQA,EA0H0BgF,CA1HlB,CA0HwBC,MAAM,GAzHvCjF,EAAIrC,CAAAA,MAAO,CAAGqC,EAAIrC,OAAO,CAAGqC,EAyHcrE,GAE3C,IAEX,EAAG,CAACA,EAAOqJ,EAAM,CACnB,CAKA,OAHAsC,EAAkBjM,OAAO,CAAG,kBAAMyL,KAClCQ,EAAkBQ,WAAW,CAAG,oBAEzBrD,EAAAA,IAAAA,GAAK,CAACnL,UAAU,CAACgO,EAC1B,EAgGiCxC,EAAMhK,EACvC,CAEA,SAASiN,EAAkBC,CAAiB,CAAEb,CAAS,EAGrD,IAFA,IAAIc,EAAW,EAAE,CAEVD,EAAatF,MAAM,EAAE,CAC1B,IAAIoE,EAAOkB,EAAaE,GAAG,GAC3BD,EAASxF,IAAI,CAACqE,EAAKK,GACrB,CAEA,OAAOzP,QAAQyQ,GAAG,CAACF,GAAUpQ,IAAI,CAAC,WAChC,GAAImQ,EAAatF,MAAM,CACrB,CADuB,MAChBqF,EAAkBC,EAAcb,EAE3C,EACF,CAEAhJ,EAASiK,UAAU,CAAG,WACpB,OAAO,IAAI1Q,QAAQ,SAAC2Q,CAAAA,CAAqBC,CAAAA,EACvCP,EAAkBpD,GAAkB9M,IAAI,CAACwQ,EAAqBC,EAChE,EACF,EAEAnK,EAASoK,YAAY,CAAG,SAACpB,CAAAA,EACvB,OADuBA,KAAAA,IAAAA,IAAAA,EAA2B,IAC3C,IAAIzP,QAAc,SAAC8Q,CAAAA,EACxB,IAAM3C,EAAM,WAEV,OADAhB,GAAc,EACP2D,GACT,EAEAT,EAAkBnD,EAAoBuC,GAAKtP,IAAI,CAACgO,EAAKA,EACvD,EACF,EASEqB,OAAOuB,mBAAmB,CAAGtK,EAASoK,YAAY,KAGpD,EAAepK,mBC7Sf,kBAAqD,kBCArD,kBAAgD,qDMIhD,oCLDO,oBAIA,wCCLA,GACP,YACA,aACA,UACA,kBACA,iBACA,UACA,UACA,aCTO,EAAkB,OAAY,GAAG,aAGxC,OACA,OAHA,SAIA,cAHA,gBAKA,CAAC,EACM,EAAiB,OAAY,GAC7B,EAAmB,OAAY,GAC/B,EAAoB,OAAmB,EAC9C,SACA,gCACA,CAAC,ECbM,EAA8B,mBAAa,SCOlD,KACA,EAA6B,gBAAU,eAEvC,IADA,EACA,EAAkB,cAAQ,GAC1B,OACA,OACA,EAAiB,YAAM,GACvB,EAAiB,YAAM,KACvB,EAA+B,YAAM,OAErC,EADmB,cAAQ,GAAG,CAC9B,IACA,aACA,aACA,gBACA,kBACA,gBACA,oBAEA,eAEA,cAGA,GADA,qBACA,SACA,cACA,cACA,uBACA,WACA,iBACA,OAEA,cAEA,YACA,gBACA,gBACA,iBACA,iBACA,mBAEA,EADmB,cAAQ,GAAG,CAC9B,IACA,EAAqB,iBAAW,aAChC,4BACA,eAEA,IADA,EACA,4CACA,YACA,mBACA,gBAEA,CACA,cACA,aAEA,aACA,GACA,CAAG,MACH,EAAuB,iBAAW,YAClC,aACA,GACA,aAEA,GACA,CAAG,MACH,EAAoB,iBAAW,aAC/B,gBACA,MACA,kDACA,8BACA,MACA,iCACA,gBACA,EACA,kCACA,iBACA,CAAW,EAEX,UAEA,CACA,CACA,CAAG,MACH,EAAgB,iBAAW,aAC3B,WACM,EAAW,YAEjB,CAAG,KACH,EAAe,EAAU,UACzB,EAAuB,iBAAW,aAClC,gBACA,YACA,KAEA,CAAG,KAWH,EAAkB,OAAQ,QAAgB,CAAY,EAAc,iBAAsC,EAAW,MAxErH,GAwEqH,EAxErH,SAAsD,GAyEtD,SACA,gBACA,EAAkB,OAAY,QAC9B,GAAwB,aAAO,YAC/B,OACA,WACA,SACA,WACA,iBAEA,CAAG,oBACH,OAAsB,eAAmB,CAAC,UAAQ,UAEhD,eAAmB,QACrB,kBACA,sBACA,gBACA,MAAW,CACX,CAAG,IAAqC,KADlB,UACqC,QAC3D,oBACA,sBACA,gBACA,MAAW,CACX,CAAG,SADmB,GACkB,eAAmB,IAC3D,KACA,QAAa,EACb,WAD0B,SAE1B,EACA,gBApHA,cAqHA,WAnHA,cAoHA,UAlHA,cAmHA,YACA,SACA,eACA,iBACA,cACA,eACA,eACA,CAAG,EAAgB,eAAmB,CAjHtC,mBAiHkD,OAAQ,EAC1D,KACA,CAAG,IACH,YACA,SACA,SACA,CAAG,EAAgB,eAAmB,CAAC,EAAU,UACjD,QACA,CAAG,QAA+C,eAAmB,QACrE,sBACA,gBACA,MAAW,CACX,CAAG,EACH,CAAC,EACD,IAHsB,OAGtB,CAoBE,EApBoB,MAAqC,GAAG,CAoB7D,CAAC,gBEtLK,cAEP,QADA,kBACA,IAAoB,WAAc,IAClC,UAEA,QACA,EACO,cAA6B,+BAC7B,cAA8B,gCCVrC,cAGA,kCACA,SAEA,4CACA,2BAGA,qFACA,EACA,cAEA,yEAEA,kBACA,cAEA,cAEA,yDASO,gBACP,IAJA,EAIA,WACA,cACA,SAEA,OARA,EAQA,iBAPA,CAOA,GAPA,EAOA,IAPA,GAOA,IAPA,CALgC,yBAKhC,IAOA,KAEA,OADA,WACA,CACA,EAIO,gBACP,IAJA,EAIA,WACA,cACA,SAEA,OARA,EAQA,iBAPA,CAOA,IAPA,GAOA,IAPA,IAOA,IAPA,IAOA,KAEA,OADA,WACA,CACA,EACO,cAEP,kBAGO,cAA2C,2BAC3C,cACP,6BACA,EAIO,cAEP,+BADA,eAAsC,kBAAkB,GAExD,EACO,cAAgC,MAAQ,gEACxC,cAAoC,aACpC,cAA+B,WCrE/B,gBACP,6BACA,yBACA,MACA,kBACA,MACA,MACA,SAEA,MACA,SAEA,CACA,WACA,EAYO,kBACP,OAAW,EAAO,GAClB,EADkB,CAClB,eACA,QAbA,YAIA,CASA,EATA,yBACA,EAGA,WAMA,OACA,OACA,QACA,kCAA0E,kBAC1E,CACA,CAAK,EACL,mBAAkC,wBAA+C,EACjF,OACA,EEpCA,EAAqB,SAAS,8KAC9B,sCACA,gBACA,OAAW,EAAO,iDAClB,6CACA,CAAK,IACL,EACA,gBACA,aAEA,yFACA,8BAEA,GACA,EACO,gBACP,8BAEA,IADA,EACA,SACA,0CAA2G,cAAmD,GAC9J,gBAEA,EAEA,aACc,EAAO,qDAA8E,aAAyB,EAC5H,GACA,CAAK,IACL,ECtBO,gBACP,OAAW,EAAO,GAClB,EADkB,IAClB,aAAkC,OAAO,EAAe,KAA0B,EAClF,mBAAkC,MJkDlC,KIlDuD,IJ4CJ,MI5CI,KJ4CJ,SAMnD,eIlDuD,EJkDvD,kBIlDuD,CAAS,CAChE,EACO,gBAEP,OADA,aAA4B,WACjB,EAAO,sBAAiC,OAAO,EAAwB,KAAgB,CAClG,EAUO,cAX2E,CAW3E,GACP,OAAW,EAAe,EAAiB,EAAa,SAA9B,EAA8B,EACxD,EAYO,gBACP,OAAW,EAAe,EAAiB,EAAa,SACxD,EAYO,uBACP,aACA,kBAGA,+CACA,8CAGe,EAAO,6BACtB,MACA,mCACA,mEACA,KACA,MAGA,CACA,aACA,CAAS,CAET,EC5EO,cACP,IACA,UACA,CACA,SACA,MACA,CACA,ECCO,cAEP,GADA,aAAiC,YACjC,oBAGA,sBACA,oBACA,gBACA,gCAAwD,EAAS,WAAe,gCAA8C,EAC9H,4BACA,EACA,ECPO,cACP,YAAiC,aACjC,MAAwB,EAAgB,SACxC,KADwC,EAKtB,8BAAwC,WAAW,kCAAgC,OAAO,EAAQ,KAAwB,CAAxB,ECVpH,cAGA,QAFA,UACA,WACA,IAAoB,IAAO,KAC3B,cAA4B,IAAO,MACnC,yCAEA,2CACA,SAEA,uCACA,QAGA,CAEA,8BAA8C,gBAA+B,CAC7E,EAMA,cACA,qCACA,EAMO,eAEP,OADgB,EAAO,GACvB,EADuB,IACvB,+BACA,qBAA6C,GAI7C,OAHA,CADwD,CACxD,eACA,EAA2B,EAAO,iCAAuD,EAAW,kCAA2C,EAAc,oBAC7J,KACA,CACA,CAAK,IACL,ECrCO,wBAEP,aAAoC,EAAgB,EAAiB,EAAQ,YAAT,IAAS,IAC7E,yCAGW,GAAmB,wBAb9B,EAcA,OAAe,EAAQ,OAdvB,EAcuB,EAbvB,EAAmB,EAAO,+CAA4D,OAFjC,IAEiC,EAA2C,EAcjI,CAAK,CACL,ECrBO,iBACP,IAIA,aACA,WAEA,sCACA,wBAEA,ECJO,wBACP,EAAsB,YANtB,EACA,OAAgB,GAChB,WAD8B,KAC9B,GAAgC,gBAKhC,EALgC,KAA+B,EAC/D,mBAAgC,iBAAoB,MAIpD,CAGA,EAKO,eAEP,cAGA,OAFA,sBAAoC,sBAAiD,EAErF,qBAA0C,gBAA6B,CACvE,ECtBO,sBACP,iBACe,GAAW,SAE1B,KAEO,iBACP,iBAAyB,GAAW,KACpC,ECNO,CDK6B,ECL7B,YAUA,uBACP,eACA,OACA,SACA,EAAoB,EAAO,GAE3B,EAF2B,EAE3B,sBAGA,iCACA,mBACA,oBAEA,iBAEA,OACA,EAEA,GAGA,UACA,UAEA,UACA,eACA,eACA,EAAyB,GAAY,GACrC,MADqC,CACrC,sBACA,mBACA,uBAAgE,qBAA4B,EAC5F,6BACA,mBAOA,aAIA,aAHA,SASA,MAA0B,GAAa,QACvC,EADuC,GACD,iBAEtC,0BACA,SAGA,0BACA,SAGA,eA3BA,WAEA,IAEA,KAuBA,EACA,SAGA,QACA,SAGA,OACA,SAGA,YACA,cACA,EAEA,UAIA,EC7EO,mBAKP,MAAwB,EAJxB,iBAI2C,CAF3C,OADA,OAEK,EACsC,gBAjB3C,GAEA,IADA,EACA,EAAwC,OAAxC,GAA8B,EAAU,mCACxC,OAEA,aAEA,yBAEA,eACA,WAQA,YACe,GAAc,GAElB,GAAe,EAAmB,GAFhB,ECpB7B,IDsByB,QAAoB,CCtB7C,IAMA,OALA,aAA8B,MAC9B,UACA,cACA,sCAEA,CACA,EAOO,iBAIP,QAHA,QACA,QAEA,IAAoB,WAAqB,MACzC,WACA,mBACA,QAEA,CACA,QACA,EACO,mBACP,MAAyB,EAAO,GAChC,EAAsB,EAAO,GAC7B,EAD6B,CAC7B,IACA,KAgBA,OAfA,sCACA,gBACA,sCACA,cACA,IAEA,EADA,IAAkC,EAAQ,KAC1C,CAD0C,CAI1C,QAGA,CAAS,CACT,CAAK,EAEL,CACA,EAMO,iBACP,8BAAiD,gBXPjD,EDZW,EADX,KACkB,OCYS,IWO4D,EZpBvF,YAAyD,KCaP,KDbiB,qBAEnE,gBAA+B,cAA+B,EAC9D,qBAAwC,mBAA2B,KYiBoB,IAA2B,IAClH,EClDA,iBACA,cAIA,OAFA,sBAAyC,uBAAwC,EAEjF,kBAA0C,gBAAyB,SAAS,EAC5E,EAWO,KAZ8E,OAY9E,KACP,MAAwB,EAAiB,EAAO,qBAAkC,EAAQ,kBAC1F,EAAkB,GAAmB,UAAiB,GACtD,EAAuB,CADc,EACI,GADwB,EACxB,KACzC,KADyC,CACzC,IACA,EAAuB,EAAiB,KACxC,uBAEA,OAAe,EADf,OAEA,CAAK,CADqB,CAE1B,SAGA,MAAqB,EAAiB,uBAEtC,OADA,OAEK,EACL,UAEA,oBAEA,OADA,OAEK,EACL,uBAEA,OADA,YACA,CACA,CAAK,kBAEL,OADA,MAEA,CAAK,EACL,EAAgB,GAAQ,WACxB,OAAkB,GAAS,CAC3B,KAD2B,CAGnB,GAAa,IAA8B,GAAuB,GAArD,IACT,GAAa,IAAgC,GAAuB,GADN,UAE1E,EACA,CAAqB,IAF2D,CAE3D,QAGrB,mEAGA,QACA,WACA,EAEA,KACA,ECvEA,KACA,MAaO,mBACP,aAA8B,MAC9B,MAAoB,GAAW,KAE/B,GAF+B,CAE/B,IAGA,GAEA,SAEA,mKAEA,MACA,sBACA,KACA,CAAa,IACb,MACA,CACA,KACQ,GAAO,uBACf,IACA,CACA,ECtCA,eACA,MACA,YAGA,+BACA,kBAA6B,gBAE7B,4BACA,kBAAyB,uCACzB,CACO,mBACP,MACA,YAIA,IAFA,SACA,IACA,sBACA,QACA,cACA,2BACA,kCACA,8BACA,CAAS,EACT,kBAEA,OACA,cACA,QACA,8BAEA,EACA,eAEA,KAKA,QANA,UAIA,4BACA,UACA,IAAsC,EAAtC,EAAsC,OAAqB,KAC3D,MADA,CACA,IACA,mDAEA,qBAeA,IAdA,qDACA,cACA,yBACA,kDACA,EAA6B,EAAgB,OAC7C,EAEA,KAH6C,EAG7C,uBAEA,mDAEA,iBAEA,EACA,IACA,YAA4D,EAA5D,EAA4D,OAA0B,KACtF,MADA,CACA,IACA,qCACA,cAGA,uBAEA,YAEA,iBAGA,CAGA,EAQO,eACP,YACA,kBACA,YACA,CACA,EC9EO,eACP,MAAkB,GAAmB,UAAiB,GAEtD,EAAqB,CAFgB,CAEA,EAAa,CAD3B,CAD0C,EACxB,OACS,YAClD,EAAwB,EAAa,MACrC,KADqC,EACrC,kBACA,aACA,OACA,OACA,MAHA,QAIA,yBACA,MAAmB,EAAO,EAC1B,CAAS,CACJ,CAFqB,ECZnB,mBACP,UAEA,OADA,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,YAAR,EACE,EAAO,YACnC,CAD2B,KAC3B,CACA,WACA,mBAEA,EAQA,mBACA,YAA8B,OAC9B,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,uDACA,EAIA,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,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,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,CAAS,CAGT,CACO,gBAEP,OADA,aAAiC,KACjC,MACA,CAEO,cACP,aAA8B,MAC9B,cAEA,OADA,UAAqB,QAAQ,EAAG,gBAAyB,IACzD,CACA,gCC5EA,yCAAuE,MAAkC,EAAI,EAC7G,mBAEA,GADA,OACA,4BACA,aAEA,CACA,sOCKA,gBACA,MAAyD,OAAkB,IAC3E,WACA,EAAkB,YAAgB,CAClC,QACA,IACA,qBACA,OACA,cACA,WACA,eACA,KACA,CAAM,EACN,SAAoC,OAAoB,EACxD,OACA,cACA,UACA,CAAK,EACL,MAA2B,SAAG,CAC9B,EACA,CACA,QACA,WACA,UAAmB,OAAK,GACxB,OACA,aAAsB,aAAiB,mBACvC,SAAkC,SAAG,CAC3B,IAAS,KACnB,CACA,kBACA,4BACA,KACA,KACA,EAEA,EAEA,GAEA,gBACA,2BACA,EAAyB,YAAgB,CACzC,QACA,uBAAY,QAAsC,EAClD,SACA,MAA2B,SAAG,CACxB,IAAS,QACf,CACA,cACA,4BACA,2BACA,uBACA,qCACA,oBACA,KACA,MACA,QAAiB,OAAoB,0BACrC,EAEA,GAEA,gBACA,2BACA,EAAyB,YAAgB,CACzC,QACA,eAAY,QAA8B,EAC1C,4BACA,MAA2B,SAAG,CAAC,GAAQ,EAAI,qCAAkD,EAAS,GAAqB,SAAG,IAA2B,qBAA6C,EAAG,CACzM,GAEA,gBACA,MAA6B,YAAgB,SAC7C,uBAAU,6BAAyD,EACnE,SACA,MAAoC,UAAc,IAClD,EAAc,QAAY,OAC1B,EAAuB,OAAe,MACtC,EAAoB,QAAY,IAChC,YACA,EAAmB,QAAY,IAC/B,YACA,YACA,EAAuC,QAAY,IACnD,EAA4B,QAAY,SAwBxC,OAvBE,WAAe,MACjB,8CACA,iCACA,CAAG,KACD,OAAe,MACjB,gBACA,MACA,sBACA,8CACA,qCAEA,gCACA,6BACA,+BACA,oBACA,kBACA,YACA,wDACA,+CAEA,IACA,CACA,CAAG,aACsB,SAAG,CACxB,IAAS,KACb,CACA,uBACA,qCACA,eACA,UACA,KACA,MACA,OACA,0CAA4D,EAAO,WACnE,yCAA0D,EAAM,WAChE,WACO,CACP,aACA,EAEA,CAAC,EACD,cACA,wBACA,gBC7HA,cACA,gEACA,QAAyD,OAAgB,IACzE,MAAqD,OAAkB,IACvE,EACE,EACF,EACA,EAA0B,IAC1B,EAAgB,UAHQ,EAGQ,CAChC,GAFgD,KAGhD,SAAY,QAA0B,EAGtC,MAA2B,SAAG,aAAwB,iDAA+E,SAAG,IADxI,IACkK,OAAqC,EAAoB,SAAG,IAF9N,IAEsP,OAAmC,EAAG,CAC5R,GAEA,gBACA,cACA,QACA,EACA,CAAI,iBAEJ,EAA0B,YAAgB,CAC1C,QACA,IACA,QACA,eACA,qBACA,CAAO,CACP,iBACA,KACA,CAAM,EACN,MAA8B,OAAoB,EAClD,OACA,cACA,UACA,CAAK,EACL,MAA2B,SAAG,CAC9B,EACA,CACA,yBACA,eACA,aACA,YAAqB,aAAiB,qBACtC,SAAkC,SAAG,IAAiC,gDAAsE,SAAG,IAAkB,WAA4C,EAAG,CAChN,EAEA,GAEA,EAA4B,YAAgB,SAC5C,IACA,QACA,eACA,qBACA,CAAK,CACL,KACA,CAAI,EACJ,SAAiC,OAAoB,EACrD,OACA,cACA,UACA,CAAG,EACH,EAAyB,aAAiB,CAC1C,uBACA,KAEA,EAA0B,aAAiB,CAC3C,iCACA,KAEA,MAAyB,SAAG,CAC5B,EACA,CACA,yBACA,QACA,aACA,cACA,SAAgC,SAAG,IAAiC,iDAA4E,SAAG,IAAkB,WAA8C,EAAG,CACtN,EAEA,CAAC,EACD,WACA,EAAoB,YAAgB,CACpC,QACA,qBAAY,kDAA+E,EAC3F,EAAyB,QAAY,OACrC,EAAyB,OAAe,MACxC,OAEA,UADsB,QAAY,IAElC,EAA0B,OAAoB,iBAC9C,6BACA,eACA,0CACA,oCACA,WACA,iBACA,mBACA,QAEA,MACA,OACA,QACA,GACA,GALA,CAKA,CAEA,EACA,OACA,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,EACA,CACA,QACA,WACA,YACA,cACA,SAAkC,SAAG,SAAoB,iBAAmD,SAAG,CACrG,IAAS,KACnB,CACA,KACA,qBACA,MACA,oBACA,EACA,CAAW,CACX,EAEA,GAEA,kBACA,WACA,EAAoB,YAAgB,CACpC,QACA,qBAAY,gBAAiD,EAC7D,SACA,SACA,OACA,EAAsB,OAAK,GAC3B,6BACA,yBACA,MAA2B,SAAG,CAC9B,EACA,CACA,QACA,OACA,WACA,YACA,SAAkC,SAAG,CDhErC,ECkEA,CACA,iCACA,aAA0B,GAAQ,GAClC,KACA,EAFkC,CAElC,EACA,MACA,WACA,OACA,iBACA,EACA,gBAEA,gBAEA,CACA,EAEA,EAEA,EAEA,iBACA,wBACA,EAAsB,YAAgB,CACtC,QACA,IAAY,yBAAmC,EAC/C,SACA,SACA,MAA2B,SAAG,CACxB,IAAS,IACf,CACA,iCACA,aAAsB,GAAQ,QAC9B,EAD8B,cAC9B,qBACA,KACA,KACA,EAEA,GAEA,gBACA,IAAI,EAAY,mBAChB,EAAuB,YAAgB,CACvC,QACA,qBAAY,QAAoC,EAChD,SACA,IAAgD,EAAY,GAC5D,IAA8D,EAAY,GAC1E,GAF4D,CAE5D,GACA,KAF0E,CAE/C,SAAG,aAAwB,iBAAmD,SAAG,CDlH5G,ECoHA,CACA,+CACA,iCACA,eACA,KAC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sB,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,uBAEA,EAEA,GAoFA,aACA,yBACA,yBACA,CACA,2BAA+D,EAAU,EACzE,6BACA,qBAAwC,kCAA0C,EAClF,2BAAwD,QAAY,EACpE,EACI,QAA2B,MAE/B,kBAEA,CA/FA,cA1GA,mBA4G6B,YAAgB,SAC7C,MAAkB,YAAgB,IAClC,EAAc,QAAY,OAC1B,EAAuB,OAAe,MAUtC,OATE,WAAe,MACjB,gBACA,KAEA,OADA,kBACA,KACA,oBACA,CAEA,CAAG,eACsB,SAAG,CAAC,IAAS,MAAQ,WAA6B,CAC3E,CAAC,EACD,YAhBA,uPChHA,sCAGM,EAAG,SACH,EAAG,QADA,CAET,UADS,EACT,CACA,aACA,OACA,IACA,GACA,CAAC,EACD,GACA,aACA,aACA,aACA,YACA,EACA,GACA,YACA,WACA,EAIA,SAAS,EAAQ,KACjB,mBADiB,MACjB,QACA,CACA,SAAS,EAAO,GAChB,oBADgB,EAChB,CAEA,SAAS,EAAY,GACrB,uBAEA,EAHqB,OAGrB,KACA,qBACA,CACA,cACA,8BACA,CACA,SAAS,EAAW,GACpB,wBADoB,OACpB,CAAoC,EAAO,WAC3C,CAqBA,SAAS,EAA6B,GACtC,sCACA,CA6BA,GA/BsC,MA+BtC,KACA,kDACA,CAUA,SAAS,EAAgB,GACzB,yBATA,CACA,GAOyB,CAPzB,EACA,QACA,SACA,OACA,GAIA,CAHA,EAGA,CACA,MACA,QACA,SACA,MACA,CACA,CACA,SAAS,EAAgB,GACzB,IACA,IACA,IACA,QACA,SACA,CAAI,EACJ,OACA,QACA,SACA,MACA,OACA,UACA,WACA,IACA,GACA,CACA,CCpIA,kBACA,IAYA,EAZA,CACA,YACA,WACA,CAAI,EACJ,EAAmB,EAAW,GAC9B,EDuCA,ICvCwC,IACxC,EAAsB,EAAa,EADX,CAExB,EAAe,EAAO,GACtB,CAFmC,CAEnC,QACA,UAFsB,GAEtB,aACA,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,MAEA,CACA,OAAU,EAAY,IACtB,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,KAEA,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,CAAI,EAAU,KACd,EAAwB,EAAgB,GAExC,MADA,MAFc,OAEd,UADwC,IACxC,WACA,GACA,EAA6B,EAAgB,yBAC7C,OAD6C,CAC7C,4JACA,WACA,eACA,UACA,CAAG,GACH,kBACA,IACA,IACA,uBACA,0BACI,YACJ,uEACA,mGACA,IACA,GACA,EAAI,EAIwB,EAAgB,uHAC5C,WACA,OACA,eACA,UACA,CAAG,KACH,OACA,4BACA,wCACA,gCACA,oCAEA,CAyTA,gBACA,OACA,mBACA,sBACA,yBACA,oBAEA,CACA,cACA,OAAS,EAAK,gBACd,CAiMA,sBACA,IACA,YACA,WACA,WACA,CAAI,EACJ,mDACA,EAAe,EAAO,GACtB,EAAoB,EAAY,GAChC,EAAgC,MAAX,EAAW,GAFV,EAGtB,UAFgC,IAEhC,QADgC,CAChC,SACA,YACA,EAAmB,EAAQ,KAG3B,CACA,WACA,OAL2B,GAK3B,EACA,gBACA,CAAI,oBACJ,WACA,YACA,kBACA,EAAI,CACJ,uBACA,yBACA,+BAKA,OAHA,uBACA,qBAEA,GACA,MACA,KACA,EAAI,CACJ,MACA,KACA,CACA,CC/vBA,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,CAIA,cACA,0CACA,IACA,mBACA,CAAM,SACN,QACA,CACA,CAAG,CACH,CACA,cACA,UACA,cAIA,yZACA,CAaA,mBACA,yCACA,8CACA,CACA,cACA,gDACA,CACA,cACA,+BACA,CACA,qBACA,KACA,CACA,wBACA,uBAGA,CACA,qBACA,mBACA,CACA,CACA,eACA,iBACA,SAEA,MAEA,gBAEA,cAEA,cAEA,KACA,oBACA,CAWA,mBACA,KACA,aACA,OAEA,YACA,OAEA,eAlBA,KACA,mBACA,KACA,4CAEA,WACA,EAEA,IACA,EASA,GACA,gDACA,OACA,MACA,YACA,+DACA,CACA,6BACA,CACA,eACA,oEACA,CClJA,eACA,MAAc,EAAgB,GAG9B,WAH8B,EAG9B,YACA,0BACA,EAAoB,EAAa,GACjC,QADiC,SACjC,GACA,qBACA,EAAyB,EAAK,QAA2B,EAAK,OAK9D,OAJA,IACA,IACA,KAEA,CACA,QACA,SACA,GACA,CACA,CAEA,eACA,SAAmB,sBAGnB,eACA,YACA,IAAO,EAAa,GACpB,OAAW,CADS,CACG,GAEvB,OAFuB,CAEvB,wBACA,CACA,QACA,SACA,IACA,CAAI,MACJ,KAAe,EAAK,oBACpB,KAAe,EAAK,sBAUpB,OANA,uBACA,MAEA,uBACA,MAEA,CACA,IACA,GACA,CACA,CAEA,OAA+B,EAAY,GAC3C,OAD2C,EAC3C,MACA,MAAc,EAAS,UAChB,KAAQ,iBAGf,CACA,8BACA,8BAJA,EAMA,CAWA,yBAVA,CAWA,aACA,OAEA,YACA,OAEA,gCACA,QACA,EAAc,EAAY,GAC1B,IACA,EACU,CAHgB,CAGP,IACnB,GADmB,GACnB,IAGA,SAGA,OA5BA,UADA,EA6BA,IA3BA,OA2BA,GAzBA,SAAmE,EAyBnE,EAzB4E,GAG5E,EAH4E,CAyB5E,MAA2H,EAAY,GACvI,OADuI,EACvI,UACA,kBACA,cACA,eACA,MACA,MAAgB,EAAS,GACzB,IADyB,CACa,EAAS,GAAiB,EAAS,EAA1B,CAA0B,EACzE,EADyE,EAEzE,EAAwB,GAAe,GACvC,SADuC,EACvC,QACA,YACA,4BACA,EAAkB,EAAgB,GAClC,WADkC,CAClC,0CACA,mDACA,OACA,OACA,OACA,OACA,KACA,KAEA,EAAsB,GADtB,EAAmB,EAAS,GAE5B,CACA,CACA,EAJ4B,CACS,IAG5B,EAAgB,CACzB,QACA,SACA,IACA,GACA,CAAG,CACH,CAIA,IAVyB,KAUzB,QACA,MAAqB,EAAa,qBAClC,EAGA,SAFA,GAAiC,EAAkB,UAGnD,CAEA,KALmD,IAKnD,UACA,YACA,OAEA,gCAKA,OACA,EALA,yBAEA,SAIA,EAHA,kBAKA,CA6GA,mBACA,MACA,kBACA,WA7CA,KACA,MAAc,EAAS,GACvB,EAAe,EADQ,GAEvB,aADiC,KACjC,CACA,gBACA,iBACA,IACA,IACA,MACA,UACA,WACA,MAAgC,IAChC,IADwC,CACxC,kBACA,eACA,cAEA,CACA,OACA,QACA,SACA,IACA,GACA,CACA,EAsBA,UACI,kBACJ,WAlEA,GACA,MAAe,EAAkB,GACjC,EAAiB,EAAa,GAC9B,MAFiC,EACH,SAC9B,MACA,EAAgB,EAAG,yDACnB,EAAiB,EAAG,6DACpB,sBACA,eAIA,MAHsB,QAAhB,EAAgB,eACtB,GAAS,EAAG,gCAEZ,CACA,QACA,SACA,IACA,GACA,CACA,EAiD2B,EAAkB,SACzC,GAAS,EAAS,EADuB,CAE7C,IADsB,OAtBtB,KACA,2BACA,oBACA,sBACA,EAAgB,EAAa,SAAgC,EAAhC,GAC7B,OADyE,QACzE,KAIA,OACA,QACA,OALA,mBAMA,EALA,MAMA,EALA,KAMA,CACA,EAQA,SACI,CACJ,YACA,GACA,UACA,UACA,cACA,gBAEA,CACA,OAAS,EAAgB,EACzB,CAqHA,eACA,MA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DACA,sBACA,8DACA,WAGA,oDACA,iCAMA,mBACA,EAAuB,EAAG,EAjB1B,eAiB0B,IAC1B,EAAuB,EAAG,EAjB1B,iBAiB0B,MAK1B,WACA,aAZA,UAaA,IAHA,IAGwB,CAAL,CAAK,MAMxB,UAAiE,MAAZ,EAAY,+BATjE,EASiE,cACjE,MAVA,EAUA,EAVA,EAUA,MACA,OACA,WACA,MACA,MACA,mBACA,OACA,iBACA,CAAS,CACF,CACP,OACA,CACA,EACA,CAAC,CEqbK,GAAe,UAIrB,cACA,GACA,CANqB,QAMrB,GACA,MAEA,GACA,cACA,IACA,EACA,OAAS,EAAiB,KAC1B,KACA,GAF0B,MAE1B,CACA,CAAG,CACH,kBCvuBA,gCAA8C,iBAAe,CAAG,WAAS,CAIzE,qBAUA,EACA,EACA,EAXA,SACA,SAEA,sBACA,SAEA,qDACA,SAKA,6BACA,qBAEA,GADA,eACA,kBACA,QAAuB,EAAU,MACjC,kBACA,SAGA,QACA,CAGA,GADA,GADA,mBACA,UACA,sBACA,SAEA,QAAqB,EAAU,MAC/B,QAAa,6BACb,SAGA,QAAqB,EAAU,CAAV,KAAU,CAC/B,WACA,gCAGA,eACA,QAEA,CACA,QACA,CACA,iBACA,CAEA,qBACA,2BACA,EAEA,sCACA,mBACA,CAEA,iBACA,YACA,wBACA,CAEA,eACA,MAAc,QAAY,IAI1B,OAHA,QACA,WACA,CAAG,EACH,CACA,CAoKA,UAIA,EACA,aACA,UACA,MACA,IACA,UACA,UACA,CAAQ,mCACR,GAVA,IAAa,qBAUb,EAVa,WAWb,gBACiB,GAAO,CACxB,iBADwB,CAExB,SACA,CAAW,QAEX,GAEA,EACe,GAAO,CACtB,UACA,OAFsB,CAEtB,CACA,CAAS,QAET,EACA,CACA,GAUM,GAAM,SACZ,GH+eA,YAIA,CGpfY,MHifZ,GGhfa,EHgfb,OACA,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,EG/gBa,GACb,cACA,CAAC,CAOK,GAAK,SACX,GH4gBA,YAIA,OAHA,EG7gBY,GH6gBZ,OACA,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,EAAU,KAClB,GACA,IACA,GACA,EACA,OALkB,CAKlB,OACA,EAAwB,EAAY,EAAO,IAC3C,EAAuB,EAAe,GACtC,OACA,KAH2C,CAG3C,CACA,MACA,2BACA,2BACA,SACA,SACA,IAA6B,SAC7B,CACA,EAFwB,CAExB,GACA,CAH6B,GAG7B,uBACA,2BACA,SACA,SACA,EDv0BS,ECu0BqB,EDv0BV,ECu0BU,KAC9B,CACA,GAFyB,CAEzB,IAF8B,CDv0BlB,CCy0BZ,EACA,CD10BuB,EC00BvB,EACA,MACA,KACA,CAAO,EACP,OACA,KACA,MACA,QACA,QACA,SACA,MACA,KACA,CACA,CACA,CACA,CACA,CACA,EGnlBY,GACZ,cACA,CAAC,CAKK,GAAU,SAChB,GAAK,SH+kBL,GAIA,KGplBgB,EHilBhB,OGhlBiB,EHglBjB,GACA,OAEA,CACA,UACA,MACA,IACA,IACA,IACA,YACA,QACA,iBACA,CAAQ,EACR,CACA,WACA,cACA,eACA,CAAQ,EAAU,KAClB,GACA,IACA,GACA,EACA,EAAwB,EAAW,GALjB,EAMK,EAAe,GACtC,OACA,GAFsC,CAEtC,GACA,EAAwB,CAJW,CAIH,KAChC,mBADgC,EAChC,CACA,WACA,WACA,EAAQ,CACR,WACA,YACA,MAEA,MACA,+BACA,0CACA,2CACA,IACA,IACU,KACV,KAEA,CACA,MACA,QACA,+BACA,0BAAsD,EAAO,IAC7D,0FACA,2FACA,KACA,IACU,KACV,KAEA,CACA,OACA,MACA,KACA,CACA,CACA,CACA,EG/oBiB,GACjB,cACA,CAAC,CAQK,GAAI,SACV,GAAK,SHgGL,EGjGU,CHqGV,OAHA,CGjGW,IHiGX,OACA,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,CAAQ,EAAU,KAMlB,wCACA,SAEA,MAAmB,EAAO,GAC1B,EAA8B,EAAW,GACzC,EAA8B,EAAO,OACrC,EAH0B,MAG1B,KAFyC,EAEzC,CADqC,CACrC,kCACA,aAAsG,EAAoB,IAAsB,SD7XhJ,GACA,EC4X0H,ED5X1H,KC4XqK,ED3XrK,OAAU,EAA6B,KAAgC,EAA6B,GACpG,EC0XqK,IACrK,YACA,QACA,SD9XuC,CC8XJ,MD9XiE,GAsBpG,SACA,MAAoB,CCuWwC,CDvW5B,GAChC,WAnBA,OACA,OAiBgC,OAjBhC,SACA,mBAGA,UACA,UACA,aACA,kBACA,YACA,YACA,YACA,SATA,iBACA,gBASA,SACA,SAEA,EAGyB,EAAO,kBAOhC,KAPgC,EAChC,IACA,oBACA,GACA,kBAAkC,GAA6B,GAG/D,CACA,EC8V4D,UAE5D,eACA,aDrW+D,ECsW/D,KACA,4CAIA,GAHA,GACA,aAEA,GACA,MDvZA,SAAS,CAAiB,MAC1B,YACA,OAEA,MAAoB,EAAY,CAJN,EAK1B,EAPA,EAAyB,EAOzB,IACA,OACA,gBAToC,CASpC,yDAIA,OAHA,8BACA,SAEA,QACA,EC2YuC,OACvC,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,EAAW,aACvD,cAGA,OACA,CACA,QACA,CAAiB,+GACjB,GACA,MAEA,KACA,CACA,uBACA,GAEA,CAEA,SACA,OACA,OACA,WACA,CACA,CAEA,CACA,QACA,CACA,CACA,EGtNW,GACX,cACC,EAQK,GAAI,SACV,GHioBA,WGloBU,CHsoBV,OAHA,CGloBW,IHkoBX,OACA,OAEA,CACA,YACA,UACA,gBACA,QAmBA,EACA,EAnBA,IACA,YACA,QACA,WACA,WACA,CAAQ,EACR,CACA,cAAwB,CACxB,KACA,CAAQ,EAAU,KAClB,eACA,EAAmB,EAFD,GAGlB,EAAwB,EAAY,GACpC,EAAiC,MAAX,EAAW,GACjC,CACA,QACA,GAJoC,IAIpC,EACA,CAAQ,KAJyB,KAIzB,CAGR,yBACA,IACA,wFAEA,IACA,4BAEA,uBACA,mBACA,EAAsC,EAAG,UACzC,EAAqC,EAAG,KADC,CACD,IACxC,SADwC,UACxC,OACA,IACA,IAOA,GANA,+CACA,MAEA,+CACA,MAEA,OACA,MAAqB,EAAG,UACxB,EAAqB,EAAG,KADA,EACA,IACxB,EAAqB,EAAG,IADA,CACA,IACxB,EAAqB,EAAG,MADA,EACA,IACxB,EACA,KAFwB,CAExB,kBAAiF,EAAG,iBAEpF,EAFoF,EAEpF,oBAAmF,EAAG,gBAEtF,CACA,EAHsF,IAGtF,GACA,KACA,iBACA,iBACA,CAAO,EACP,+CACA,0BACA,CACA,OACA,QACA,CACA,EAEA,EACA,CACA,CACA,EG7sBW,GACX,cACA,CAAC,CAkBK,GAAI,SACV,GHwMA,WGzMU,CH6MV,OAHA,CGzMW,IHyMX,OACA,OAEA,CACA,YACA,UACA,YACA,IACA,QACA,CAAQ,EACR,CACA,6BACA,KACA,CAAQ,EAAU,KAClB,UACA,SAFkB,aAGlB,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,EG3PW,GACX,cACA,CAAC,CAkBK,GAAK,SACX,SACA,MAFW,EAEX,KACA,CAAC,kBCxWD,GAAY,YAAgB,SAC5B,aAAU,8BAAkD,EAC5D,MAAyB,UAAG,CACxB,IAAS,KACb,CACA,KACA,MACA,QACA,SACA,oBACA,2BACA,qBAA2D,UAAG,YAAc,wBAA0B,CACtG,EAEA,CAAC,EACD,eAhBA,oCEqBA,YACA,QAA+C,OAAkB,KACjE,eACA,OACA,kBAAU,cAA0B,EACpC,MAA8B,UAAc,OAC5C,MAAyB,UAAG,KAAmB,6CAAmE,CAClH,EACA,kBACA,sBACA,GAAmB,YAAgB,CACnC,QACA,kBAAY,qBAA4C,EACxD,WACA,EAAgB,QAAY,OAC5B,EAAyB,OAAe,MAIxC,OAHI,WAAe,MACnB,uCACA,CAAK,EACL,OAA+C,UAAG,CAAC,IAAS,MAAQ,WAAmC,CACvG,GAEA,kBACA,uBACA,eACA,GAAoB,YAAgB,CACpC,QACA,IACA,gBACA,gBACA,eACA,iBACA,gBACA,iBACA,qBACA,uBACA,qBACA,mBACA,sBACA,qCACA,WACA,KACA,CAAM,EACN,WACA,MAAkC,UAAc,OAChD,EAAyB,OAAe,YACxC,MAA8B,UAAc,OAC5C,EDrEA,OCqE6B,EDrE7B,GACA,SAA0B,UAAc,SA+BxC,MA9BE,QAAe,MACjB,MACA,GAAgB,0CAA0D,EAC1E,iCAQA,EACA,EARA,sBAGA,UAFA,OAKA,WAGA,wBACA,sBACA,0BACA,eACA,aACA,EAAU,IACV,gBACA,iBAEA,SAAkB,WAAe,CACjC,CAAO,EAEP,OADA,aAAwC,iBAAmB,EAC3D,kBACA,CACA,CADM,CACN,OAEA,CAAG,MACH,CACA,ECoC6B,GAC7B,cACA,eAEA,wBAAiG,oCACjG,yBACA,aACA,GACA,UACA,sBAEA,aACA,EACA,MAAY,gEHFZ,WGEyF,CHDzF,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,SACA,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,QACA,QACA,QACA,EAAiB,aAAiB,MAClC,0BACA,OAEA,OACA,YACA,WACA,YACA,CACA,YACA,uBAEI,GAAe,gCACnB,OACA,KAKA,4BAEA,+BACA,YACQ,YAAkB,MAC1B,IACA,CAAS,EAET,CAAK,CACL,CAAG,cACH,QACA,iCACA,0BACA,OACA,KACA,eACA,EAAO,EAEP,CAAG,MACH,MAAuB,QAAY,KACnC,QACA,aACA,KACA,YACA,GACG,IACH,QAGA,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,yBACA,4BACA,EACA,CACA,KACA,wCACA,yBACA,sBACA,CAAS,EAGT,CACA,WACA,OACA,KACA,CACA,CAAG,2BACH,OAAS,SAAa,OACtB,KACA,SACA,OACA,WACA,gBACA,EAAG,aACH,EGpJyF,CAEzF,iBACA,UAbA,0BAcA,6BACwB,CJ2exB,SI3ekC,CJ2elC,YA0CA,CAzCA,aACA,OAEA,IACA,oBACA,oBACA,kDACA,sDACA,oBACA,CAAI,EACJ,QACA,aAA0E,GAAoB,SAAwB,GAAoB,KAA5C,CAA4C,CAC1I,UAD0I,IAE1I,kCACA,UACA,CAAK,EACL,iCACA,CAAG,EACH,WAlHA,cACA,IACA,EADA,OAEA,EAAe,EAAkB,GACjC,aACA,MACA,gBACA,4BACA,MACA,CA2EA,OA1EA,gBACA,YACA,OAEA,YACA,MAEA,IACA,gCACA,CACA,OACA,MACA,QACA,SACA,CAAM,EAIN,GAHA,GACA,IAEA,OACA,OAEA,MAAqB,EAAK,KACH,EAAK,qBAI5B,GACA,WAFA,mBAFwB,EAAK,sBAE7B,OADsB,EAAK,QAI3B,UAAiB,EAAG,EAAI,EAAG,QAC3B,EACA,KACA,IAH2B,KAG3B,KACA,6BACA,UACA,MACA,WAEA,EAOA,QAJA,kBACA,UACA,CAAW,KAIX,CACA,wCAQA,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,0BACA,GACA,SAEA,IACA,YACA,aACA,IAEA,IACA,0BACA,IACA,IACA,KACA,MACA,cACA,qCACA,oCACA,CAAK,EACL,aACA,4BACA,OACA,GACA,uBAEA,EACA,KIhjBkC,GAClC,2BACA,CAAS,EAGT,UACA,mBACO,CACP,YACQ,GAAM,CAAG,wBAAH,GAAG,EAAgE,EACjF,GAA2B,GAAK,CAChC,YACA,aACA,sBAA0C,KAAU,OACpD,KACS,EACT,GAA2B,GAAI,CAAG,KAA0B,CAHR,CAI5C,GAAI,CACZ,KACA,QAAoB,SAFR,CAEQ,4CAAkD,IACtE,IAAoB,kBAA2C,YAC/D,mBACA,kDAA0E,EAAe,KACzF,mDAA2E,EAAgB,KAC3F,+CAAuE,EAAY,KACnF,gDAAwE,EAAa,IACrF,CACA,CAAS,EACT,GAAiB,GAAe,CAAG,oBAAuC,EAC1E,CADgC,EAChC,YAA0B,gBAAyB,EACnD,GAA4B,GAAI,CAAG,sBAAH,KAAG,KAAuD,EAC1F,CACK,EACL,YACA,EAAyB,QAAc,IACnC,QAAe,MACnB,GACA,KAEA,CAAK,QACL,iBACA,aACA,4BACA,MAA8C,UAAc,GAI5D,MAHI,QAAe,MACnB,uCACA,CAAK,MACsB,UAAG,CAC9B,MACA,CACA,kBACA,uCACA,OACA,KACA,8CAEA,uBACA,SACA,mCACA,qBACA,qBACA,WAIA,6BACA,oBACA,oBACA,CACA,CAAS,CACT,UACA,SAAkC,UAAG,CACrC,GACA,CACA,QACA,aACA,gBACA,SACA,SACA,kBACA,SAAsC,UAAG,CAC3B,IAAS,KACvB,CACA,cACA,eACA,KACA,MACA,OACA,WAGA,yBACA,CACA,EAEA,EAEA,EAEA,GAEA,kBACA,qBACA,IACA,aACA,aACA,aACA,YACA,EACA,GAAkB,YAAgB,eAClC,IAAU,sBAA+B,EACzC,WACA,mBACA,MAIoB,UAAG,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,UAAG,CFjNrC,GEmNA,CACA,KACA,MACA,OACA,WAEA,eACA,CACA,EAEA,EAGA,CAAC,EAED,eACA,eACA,CAHA,kBAIA,YACA,uBACA,UACA,MACA,cAAY,4BAAmC,EAC/C,4BAEA,mBACA,EAFA,EAEA,gBACA,YACA,GAA2B,mCAAyC,IACpE,sBACA,sBACA,KACA,KAcA,MAbA,cACA,SAA4C,EAAa,IACzD,KAAa,GAAa,KACpB,WACN,EAbA,EAaA,KAA4C,EAAa,IACzD,KAAa,oBAAoC,KAC3C,aACN,KAAa,GAAa,IAC1B,SAA4C,EAAa,KACnD,aACN,KAAa,mBAAmC,IAChD,EApBA,EAoBA,KAA4C,EAAa,KAEzD,CAAa,QAAQ,OACrB,EACA,CAAC,CACD,eACA,+BACA,wCC7QA,mCACA,IAAsB,0BACtB,sBACA,WAAyD,OAAgB,KACzE,QAAmE,OAAkB,CACrF,GACA,MAEA,eACA,GAAuB,YAAgB,CACvC,OAC2B,UAAG,cAAwB,yCAAgE,UAAG,UAAoB,yCAAgE,UAAG,KAAyB,WAA6B,EAAG,EAAG,GAG5Q,kBACA,OAA2B,YAAgB,SAC3C,IACA,0BACA,cACA,UACA,MACA,mBACA,0BACA,2BACA,eACA,+BACA,KACA,CAAI,EACJ,EAAc,QAAY,OAC1B,EAAuB,OAAe,MACtC,EAAoB,QAAY,IAChC,WAAyD,OAAoB,EAC7E,OACA,cACA,UACA,CAAG,EACH,MAAkD,UAAc,KAChE,EAA2B,QAAc,IACzC,QACA,EAA0B,QAAY,KACtC,MAAwD,UAAc,IAQtE,OAPE,WAAe,MACjB,gBACA,KAEA,OADA,yBACA,+BAEA,CAAG,MACsB,UAAG,CAC5B,GACA,CACA,QACA,cACA,MACA,OACA,mBACA,YAAmB,aAAiB,CACpC,QACA,KAEA,eAAsB,aAAiB,eACvC,mBAA0B,aAAiB,CAC3C,cACA,IAEA,sBAA6B,aAAiB,CAC9C,cACA,IAEA,SAAgC,UAAG,CAC3B,IAAS,KACjB,CACA,uBACA,qBACA,KACA,MACA,OAAmB,0BAAiC,CACpD,YAAuB,OAAoB,oBAC3C,YACA,CAAW,EACX,QAAmB,OAAoB,eACvC,iBACA,sCACA,6BAEA,GADA,iCACA,qBACA,iCAOA,GAJA,CAFA,oBACA,uBACA,UACA,SAEA,sBACA,EACA,CACA,CACA,YACA,CAAW,EACX,OAAkB,OAAoB,oBACtC,EAEA,EAEA,CAAC,EACD,0BACA,GAA2B,YAAgB,CAC3C,QACA,IACA,0BACA,eACA,YACA,YACA,KACA,CAAM,EACN,EAAmB,OAAK,GACxB,OACA,WACA,yBACA,QACA,oBAAY,2BAA4C,EAOxD,OANI,WAAe,MACnB,KAEA,OADA,IACA,OAEA,CAAK,UACsB,UAAG,CAC9B,YACA,CACA,QACA,KACA,YACA,SACA,SAAkC,UAAG,CAC3B,IAAS,MACnB,CACA,gBACA,iCACA,KACA,MACA,YAAyB,OAAoB,mBAC7C,EACA,iBADA,kBAEA,CAAa,EACb,QAAqB,OAAoB,iCACzC,UAAuB,OAAoB,iBAC3C,8BACA,mBACA,MACA,CACA,qCACA,eAoCA,WAJA,EAKA,OALA,EAKA,MAJA,QAIA,EAJA,EACA,6DAIA,+DACA,wDACA,YACA,EAzCA,uBACA,eACA,qDACA,mBAEA,MADA,2BACA,sBACA,+BACA,2BACA,wBACA,iCACA,SAwCA,cACA,sCACA,EA1CA,mBACA,CACA,qBACA,CACA,CAAa,CACb,EAEA,EAEA,GAEA,kBACA,QACA,iBACA,eACA,kBACA,iBACA,eACA,aACA,gBACA,UACA,EAWA,oBACA,6BACA,eACA,WACA,uBAAsB,EAAe,EACrC,4BAFA,MAIA,wCC7LA,iBAEA,gCACA,IAFA,+BAEA,IACA,IACA,yBACA,uBACA,EACA,IACA,kBACA,oBAEA,UACA,CAAK,GAAY,GAAe,GAAqB,CAAI,KAA1C,CAA0C,CAAgB,IAA3C,CAC9B,QAA2C,EADU,CACV,IAAkB,KAC3D,GACA,GACA,GACF,EACA,GAAqB,KACrB,CAJmB,EAIY,IALR,CAMvB,IAFsC,EAFT,CAI7B,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CA,CAAK,CACL,SACA,cACA,CACA,CAAG,UACD,WAAe,MACjB,MACA,kBACA,uBACA,eACA,cACA,YAEA,aAAiD,UAAc,CAE/D,CAAO,eACP,uBACA,6BACA,GACA,eACA,aAAiD,UAAc,CAE/D,CAAO,CAWP,uCACA,wCACA,2BAbO,cACP,wCACA,SA8JA,GACA,eACA,2BACA,SAGA,QACA,EArKA,MACA,YACA,YAIA,KACA,GAMA,OADA,gBAA2D,wBAAgC,EAC3F,KACA,0CACA,2CACA,cACA,CACA,CACA,CAAG,iBACD,WAAe,MACjB,MACA,SACA,6BAEA,IADA,cACA,CACA,2BACA,wBACA,mBACA,qBACA,SAiDA,UAAkC,MAAiB,EAAI,EACvD,6BACA,eAEA,GADA,KAAuB,SAAQ,EAC/B,iCAEA,EAvDA,KA8HA,2BA9HA,CAAsE,UAAc,EACpF,4BACA,KAGA,CACA,WACA,2BACA,gBACA,2BACA,wBACA,mBACA,oBACA,oBAA+D,UAAc,EAE7E,2BACA,WACA,CAAS,GACT,CACA,CACA,CAAG,YACH,MAAwB,aAAiB,CACzC,IACA,WACA,SADA,OAEA,uDACA,yBACA,SACA,sBACA,MA2BA,YACA,WAGA,OAFA,OACA,iBAEA,EAhCA,EACA,MAIA,kBAGY,oBACZ,mBACA,QAAoC,UAAc,IAJlD,mBACA,QAAqC,UAAc,GAJnD,yBAUA,CACA,CAAK,CACL,gBAEA,MAAyB,SAAG,CAAC,IAAS,MAAQ,mCAA0E,CACxH,CAAC,EAeD,cACA,SACA,uDACA,eACA,oDACA,+CACA,8DAEA,CAAG,EACH,yCACA,QACA,CACA,gBACA,eACA,aAGA,GAA0B,OAAM,EAChC,sDACA,QACA,qBADA,CAEA,iDACA,kBAEA,QACA,EAXA,GAA6B,OAAiB,UAE9C,CAaA,qBAA0B,MAAiB,EAAI,EAC/C,mBAJA,EAKA,6BACA,SAAoB,iBAAqB,EACzC,OANA,CADA,EAOA,aANA,gCAMA,GACA,UACA,CACA,CAlDA,cAxHA,aA2KA,iBAEA,SACA,OACA,OACA,WACA,OACA,WAEA,WACA,UACA,CAAK,CACL,UACA,SACA,cACA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,aAAiB,CACpC,IACA,MAEA,kCACA,WACA,EAAQ,IACR,IAEA,CAAK,CACL,WAEA,gECvBA,uBAAuD,iBAAqB,MAC5E,gCCHA,aAUA,MATA,8BACA,YAAwB,mBAAsB,KAC9C,mBACA,qEACA,CAEA,QACA,GAEA,qBACA,gDCXA,cACA,oDAEA,QACA,2HCCA,gBAAqC,GAAY,CACjD,IACA,UACA,GACA,cACA,KACA,QACA,UACA,mBACA,mBACA,SACA,CACA,cACA,mCACA,gCACA,CACA,cACA,mBACA,+CACS,QAAmB,kBAC5B,mCACA,8BACA,iBACA,cACO,EAEP,0CAAgE,QAAO,kBAA8B,QAAO,2BAC5G,aACM,mCACN,gCAEA,CACA,gBACA,qBACA,6BAEA,CACA,oBACA,UACA,UACA,CACA,mBACA,eAEA,QACA,8BACA,eACA,UACA,SACA,CACA,YAKA,OAJA,UACA,8BACA,+DACA,0BACA,kBACA,CACA,KACA,sBAAkD,OAAe,EACjE,UACA,KACA,+BACA,+BACA,2BACA,yBACA,mBACA,iBAEA,CACA,MACI,GAAa,YACjB,iCACA,wBACA,iBACA,sBACA,gCACA,sCACU,oBACV,+BACA,oBACA,OACA,QACA,EACA,GAGA,CACA,2BACA,UACA,CAAO,CACP,CAAK,CACL,CACA,wBC1FA,gBACA,MAAiB,QAAc,IAC/B,IAAqB,UAAc,CACnC,QAAc,EACd,EACA,IAGE,QAL4B,GAKb,MACjB,eACA,CAAG,QACH,MAAiB,sBAA0B,CACvC,aAAiB,CACrB,eAA4C,GAAa,gBACzD,KAEA,yBACA,0BAEA,EAAiB,aAAiB,CAClC,QACA,oBAAsD,GAAI,CAC1D,CAAK,CACL,KAEA,YAAsB,OAAgB,mCACtC,cAEA,OAAW,mCACX,4GCrBA,gBAAkC,GAAY,CAC9C,iBACA,QACA,eACA,UACA,aACA,mBACA,kBACA,CACA,IACA,UACA,UACA,QACA,KACA,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,gHAA2J,WAA3J,MAA6I,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,KAAI,EAElC,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,OAAY,GAAQ,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,oBACA,CAEA,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,6BAEA,QADA,EACA,KADA,EACA,EACA,MAFA,GAIA,MAEA,iBAEA,SAAmB,UAA2C,CAC9D,CACA,KACA,0DACA,eACA,OAEA,cACA,UACA,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,CAGvB,EAHuB,QAGvB,IAHuB,wDAGvB,EAHuB,eAGvB,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,yBC1ZA,MAAqC,eAAmB,CAdxD,WACA,SACA,OACA,gBACA,IACA,CAAK,CAC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CnB,aACA,KACA,YACA,GACK,IACL,mCACA,CAEA,4BAEA,cACA,8BACA,MACA,kBACA,QAEA,EACA,4BACA,UAEA,mBACA,EACA,EAEA,0BAEA,MACA,eACA,WACA,SAGA,QACA,EAkBA,cACA,UACA,SAAY,sDAAkE,MAC9E,EAAkB,QAAY,GAC9B,aACA,MAAqB,aAAiB,KACtC,0BACA,oDACA,gBACA,YACA,CAAoB,MACpB,iBACA,OACA,KACA,EACA,EACA,CACA,CAAK,UACL,GACA,WACA,0BACA,UACA,CAAK,EACL,SAAiC,UAAc,MAC/C,eACA,GAIA,OAHI,WAAe,MACnB,oBACA,CAAK,EACL,CACA,CA6JA,qBACA,CACA,QACA,OACA,iCAA4E,CAC5E,SACA,CAAS,EAET,GAEA,qBAEA,iDAEA,kBACA,SACA,gBACA,WACA,MACA,aACA,WACA,IACA,UACA,WACA,EACA,uBACA,EACA,eAEA,GADA,EAEA,CACA,OACA,OAEA,QACA,CAEA,gBACA,gCACA,aACA,MACA,OAAoB,QAAsB,EAC1C,iBACA,iCACA,MAEA,WACA,kBACA,KACA,CACA,MACA,MACA,MAEA,CACA,CACA,EAEA,WACA,uEACA,iEACA,gCACA,mCACA,CAAK,CACL,EAEA,WAAkD,mCAClD,aACA,GAAW,EAAK,GAAG,+BAA6D,GAChF,GAEA,eACA,aACA,gBACA,sCACA,mCAEA,gBACA,qBAGA,kCACA,6BACA,6BAEA,kBACA,EACA,uBACA,qBACA,mBAEA,oBACA,kBAEA,uDACA,WAWA,cATA,aADA,UACA,GACA,YACA,IACA,KACA,CACA,YACA,CAKA,QACA,CAEA,mDAEA,kBACA,UACA,gBACA,QACA,WACA,CAGA,eACA,kBAGA,SACA,cAEA,+BACA,GANA,GASA,gBACA,wBAYA,kBACA,GAVA,cACA,QACA,SACA,eACA,gBACA,IAEA,yBAIA,yBAEA,YACA,0BAWA,oBAIA,EAHA,oBACA,gBAVA,cACA,2BACA,IACA,UACA,qBAEA,QACA,EAGA,KACA,gBAEA,GACA,YAEA,YAAoB,uBAAoC,KACxD,IACA,EADA,KAEA,oBACA,aAIA,IAHA,KACA,MAEA,eACA,WACA,cACA,OACA,aACA,kBACA,6BACA,4BAEA,GACA,CACA,CACA,QACA,CAEA,gBACA,OACA,GAwCA,cACA,UACA,SAAY,sDAAqE,EACjF,MAAgC,UAAc,sBAC9C,EAAgB,QAAY,6BAC5B,EAAsB,QAAY,IAClC,EAAkB,QAAY,IAC9B,EAAsB,QAAY,IAClC,aACA,YACA,sBAQA,GACA,SARqB,aAAiB,UAAI,SAA+B,IACzE,sBACA,wBACA,KACA,kBACA,CACA,CAAK,KAGL,0BACK,EACL,MAAyB,aAAiB,KAC1C,aACA,wBACA,CAAK,QAqHL,OAjCI,WAAe,MACnB,wBACA,wCAA0E,EAC1E,WACA,+BACA,oBACA,2BACA,2BACA,EACA,2BACA,yBACA,wBACA,2BACqB,EAErB,CAAa,EAEb,wBACA,OACA,qBACS,EACT,gBACA,6CACA,kBACA,2CACA,CAAK,UACD,WAAe,MACnB,2CACA,KACA,kCACA,eACA,GACK,WACL,CACA,KAAc,aAAiB,CA1E/B,QACA,0BACA,SACA,iBACA,KACA,KACA,2BACA,OACA,MACA,CAAS,IACT,EAgE+B,SAC/B,KAAc,aAAiB,CAhE/B,QACA,0BACA,SACA,iBACA,KACA,KACA,2BACA,OACA,MACA,CAAS,IACT,EAsD+B,SAC/B,QAAiB,aAAiB,CA5GlC,QACA,cACA,0BACA,yBACA,gCACA,KACA,KACA,2BACA,SACA,CAAS,CACT,EAkGkC,SAClC,OAAgB,aAAiB,CAxHjC,QACA,cACA,0BACA,kCACA,gCACA,KACA,KACA,2BACA,SACA,CAAS,CACT,EA8GiC,SACjC,OAAgB,aAAiB,CAnGjC,IACA,8BACA,0BACA,KACA,KACA,2BACA,MACA,CAAS,CACT,EA2FiC,SACjC,OAAgB,aAAiB,CA3FjC,UACA,cACA,4BACA,yBACA,kCACA,KACA,KACA,2BACA,OACA,SACA,CAAS,CACT,EAgFiC,SACjC,OAAgB,aAAiB,CA1DjC,QACA,WACA,4BACA,wDACA,KACA,UACA,2BACA,OACA,MACA,CAAS,OACT,EAgDiC,SACjC,QAAiB,aAAiB,CAhDlC,IACA,aACA,oBACA,UACA,UACA,oCAAwF,OACxF,EA0CkC,SAClC,OAAgB,SAAa,oBAC7B,KACA,qBACA,EAAS,QACT,CACA,CAEA,aACA,SAiBA,OACA,gBACA,QACA,CAAS,CACT,KApBA,IACA,eACA,SAEA,EAiBA,UAhBA,IACA,UACA,CACA,iBACA,oBACA,CAAa,GAYb,YATA,KACA,KASA,CACA,CAEA,sBAEA,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,YACA,8BACA,sBACA,0BACA,kBACA,0BACA,CAAC,CAED,0BAEA,sBAEA,OACA,0BAEA,mBADA,wDAEA,EAEA,iCAEA,uBAEA,kBAEA,2BAEA,kBAA0C,EAC1C,uBACA,WACA,eACA,qBACA,mBACA,+BACA,eAEA,SACA,UAIA,QACA,CAwBA,eAvBA,kBACA,uBACA,WACA,eACA,qBACA,kBACA,MACA,SACA,yBACA,YACA,CAA4B,aAG5B,eAAkG,WAIlG,oBAIA,SACA,EACA,WAEA,QACA,SACA,UACA,EACA,IAAsB,qBACtB,WACA,qBACA,eACA,QACA,qCACA,gBACA,OAAqB,2BACrB,CACA,oCAEA,2CACA,+BACA,GACA,CAA4B,6BAC5B,GACA,EACA,CACA,SACA,EAEA,qBAAgC,6BAAwC,QACxE,EACA,EACA,aACA,IACA,GACA,QACA,YACA,EACA,KACA,EAEA,QACA,WACA,UACA,EACA,2BACA,0CACA,CACA,WACA,eAEA,MACA,GAEA,eACA,kBACA,gDACA,OAEA,MACA,QAEA,MACA,iBAEA,MACA,6BAA+C,QAAO,MAEtD,KACA,iBAEA,oCACA,CAEA,mBACA,SACA,gBACA,YACA,eACA,CACA,OACA,eACA,aACA,SACA,2BACA,CACA,EAEA,0BAEA,WACA,OACA,MACA,SACA,KACA,YACA,eACA,QACA,EAEA,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,oCAEA,YAA8C,gBAAoB,IAElE,8BACA,UACA,+BACA,UACA,OACA,OACA,mBACA,KACA,CAEA,CAEA,uBACA,EACA,CACA,QACA,UACA,EAEA,oBACA,QAAY,wHAAgH,KAC5H,SACA,SAEA,eACA,MACA,sBACA,qCACA,mBAEA,EACA,KACA,QACA,OAEA,wBACA,QACA,4BACA,qBACA,wCACA,WACA,OACA,WACA,UACA,MACA,cAEA,EACA,MACA,EAfA,QAeA,WACA,WACA,mBACA,oBACA,UAAgB,aAAiB,MACjC,CAAgB,qBAChB,MACA,OACA,MACA,gBACA,UACA,MACA,oBAEA,IAEA,OADA,KACA,CAGA,CACA,2BACA,EACA,EACA,YACA,QACA,kBASA,CACA,iCACA,YACA,wBAEA,YACA,uBAEA,KAjBA,CACA,0BACA,YACA,cAEA,YACA,aAEA,CAUA,YACA,uCACA,IAEA,OADA,gBACA,CAGA,CACA,qBACA,YACA,QACA,eACA,iBACA,eACA,iBACA,YACA,yBACA,IAEA,OADA,gBACA,CAGA,CACA,gBACA,IAAgB,mBAA+B,MAC/C,wBACA,MACA,eACA,UACA,MACA,mBAEA,IAEA,OADA,KACA,CAGA,CACA,MACA,SAEA,SADA,WACA,GACA,OACA,MACA,KACA,4BAEA,IAEA,OADA,aACA,CAGA,MACA,SACA,SACA,gBACA,aACA,MAEA,4BACA,IACA,GACA,KACA,mBAEA,aACA,GACA,SAGA,CACA,WACA,MACA,MACA,MAEA,IACA,QAGA,EAGA,OADA,MACA,CACA,EAEA,QACA,gBACA,0BACA,mBACA,EA01BA,gBAA2B,EAC3B,MAAyB,QAAY,GACrC,MAAyC,UAAc,EACvD,WACA,gBACA,cAAuB,CACvB,eACA,cACA,gBAAyB,CACzB,gBACA,sBACA,WACA,SAAkB,CACb,CACL,WACA,6BAGA,WACA,GA52BA,aAAqC,EACrC,IAgCA,EAhCA,GACA,MACA,MAEA,GACA,WACA,gBACA,cAAuB,CACvB,eACA,cACA,gBAAyB,CACzB,gBACA,sBACA,WACA,SACA,EACA,KACA,yBACA,qBACA,GACA,KACA,GACA,UACA,SACA,QACA,EACA,GACA,cACA,gBACA,cACA,aACA,EAEA,IACA,KACA,GACA,WACA,eACA,iBACA,gBACA,WACA,SACA,EACA,GACA,UACA,UACA,SACA,EACA,aACA,uBACA,yBACA,SACA,gBACA,wBACA,EACA,YACA,SAYA,OAXA,YACA,aACA,sBACA,cACA,mBACA,YACA,cACA,SACA,CAAiB,IAGjB,CACA,EAmCA,UACA,gBACA,cACA,gBACS,CACT,EACA,cACA,aACA,MACA,0BACA,OACA,qBACA,EACA,oBACA,OACA,YACA,CACA,EACA,gBACA,SACA,GACA,MACA,EACA,uBACA,cACA,gBACA,wBACA,gBAEA,2BACA,wBAEA,CADA,aAEA,mBACA,sBACA,4BACA,EACA,GACA,sBACA,CAUA,OATA,QACA,uBACA,gCACA,EACA,GACA,iBACA,OAEA,sBACA,MACA,EACA,mBACA,oBACA,2BAYA,GAXA,gBACA,kBACA,eAGA,gBACA,OACA,EACA,gBACA,eAEA,gBACA,OACA,GACA,OACA,KACA,cAA0C,GAAU,EAAI,CACxD,gBACA,MACA,EACA,GACA,KACA,MAEA,eACA,CACA,OACA,gBACA,+BACA,cACA,eACA,CAAa,EACb,KAEA,EACA,sBACA,kBAAoC,KAAgB,wEACpD,GACA,YACA,IAAgB,UAAS,UACzB,KACA,gBACA,YACA,GACA,gBACA,aACA,MAGA,WAEA,QACA,EACA,eACA,QACA,CAAK,IACL,gBACA,WACA,MACA,IAAwB,WAAoC,EAC5D,MACA,4DACA,eACA,WACA,GACA,MAGA,GACA,WACA,6BACA,mBAEA,CACA,GACA,cACA,CACA,CACA,gBAaA,yBACA,aACA,YACA,OACA,WACA,EACA,KACA,EACA,KACA,CAA4B,OAC5B,GAEA,iBACA,EAEA,WAAoD,IACpD,aACA,IACA,MACA,WACA,IACA,YACA,eACA,EACA,mBACA,GACA,EACA,UACA,8DAEA,OACA,SACA,gBACA,+BACA,4BACA,yBACA,cACA,WACA,wBAGA,yCAGA,UACA,gBAGA,cACA,YACA,cACA,MACA,CAAyB,GAIzB,CACA,gCACA,sCACA,sBACA,EACA,YACA,gBACA,WACA,KAAiC,EAAK,GAAG,EAAS,EAClD,QACA,kBACA,OACA,YACA,KAEA,SADA,QAEA,CACA,EACA,WAA+C,IAC/C,aACA,iBACA,OACA,SACA,GACA,cACA,OACA,QACA,CAAa,EACb,4BACA,gBACA,sBACA,cACA,OACA,0BACA,cACA,CAAiB,IAIjB,eAEA,SADA,SAGA,uBAA0D,EAC1D,cACA,MACA,CAAS,CACT,EACA,YACA,eACA,SACA,SACA,UACA,EACA,EACA,aACA,SACA,KACA,wCACA,aACA,aACA,gBACA,YACA,6CACA,WACA,SACA,GACA,4BACA,SAEA,eACA,iBAEA,kBACA,WAMA,GALA,GACA,cACA,OACA,YACiB,EACjB,EACA,UACA,mBAA2C,UAAuB,EAAe,EAOjF,GALA,sBAA8D,EAC9D,cACA,cACA,eACA,CAAa,EACb,YACA,WAAwB,GAAS,aACjC,mBACA,oBACA,UACA,SACA,MACA,MAEA,wDACA,aAEA,YACA,aACA,UACA,CACA,EACA,cAA6C,QAC7C,EACA,EACA,WAIA,GAHA,cACA,eACA,CAAS,EACT,YACA,wBACA,OACA,IACA,mBACA,CACA,MACA,EAKA,CAJA,sCACA,aACA,wBAA4E,OAAqB,EACjG,CAAa,qBACb,gBAGA,eAcA,OAZA,cACA,UACA,yBACA,GACA,MAAoB,EAAM,CAC1B,uBAAsC,GAAU,EAAI,CACpD,gBACA,eACA,CAAS,EACT,eACA,IACA,kCACA,CACA,EACA,OACA,OACA,KACA,eAAoD,EAEpD,YACA,EACA,KACA,OACA,gBACA,EACA,YACA,6BACA,kCACA,sCACA,wBACA,EAAK,CA2BL,UAA0C,IAC1C,4BACA,kBACA,kBACA,SACA,cACA,OACA,QAEA,2BACA,gCACA,oCACA,oBACA,oBACA,QAGA,eAA+B,EAC/B,cACA,KACA,eAAwC,CAAI,aAA5C,EAAkE,CAA1B,EAExC,kBACA,EACA,UAAwC,IACxC,aACA,iBAgBA,OAfA,OACA,IACA,iBAAqD,UAAO,GAAQ,CACpE,OACA,SACA,KACa,CACJ,EACT,eACA,EACA,GACA,iBACA,OACA,iBACA,gBACA,CACA,MAAsC,qBAA6B,EAAI,CACvE,+BACA,CACA,sBACA,cACA,cACA,0BACA,0BACA,qBACA,EACA,EAAoB,CACpB,OACA,WACA,SACA,QACA,MACA,QACA,SACA,kBACA,oBACA,kDAGA,QACA,gBACA,GACA,iBACA,gBAGA,OACA,IACA,QACA,KACA,CACA,SACA,aACA,KACA,sBACA,GAAiD,EACjD,GACA,CACA,KAA2C,mBAA2B,EAEtE,CAAoC,MAAe,CAC1B,CACJ,EACrB,iBACA,KAGA,CADA,WAAiD,EACjD,IACA,gBAEA,0CACA,2BACA,gBAEA,CAAa,CAEb,EAqKA,OACA,SACA,YACA,cACA,iBACA,iBACA,YACA,YACA,eACA,iBAnhBA,KACA,wBACA,YACA,IACA,WACA,2BACA,gBACA,KACA,CACA,iBACA,EA0gBA,kBA5rBA,yBACA,SAEA,GADA,YACA,0BACA,6BACA,YACA,CACA,aACA,GACA,8BACA,oCACA,oBACA,cACA,CACA,oBACA,GACA,qCACA,2CACA,0BACA,CACA,eACA,wBAEA,cACA,eACA,0BACA,gBACA,iBACA,CAAa,CACb,MAEA,QAEA,EA4pBA,eA5fA,uDA6fA,YACA,kBACA,cACA,QACA,CAAa,CACb,kBACA,QACA,CAAa,CACb,kBACA,QACA,CAAa,CACb,uBACA,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,UACA,YACA,aAzNA,iBACA,IACA,qCACA,wBAEA,SACA,OACA,cACA,eACA,CAAS,EACT,IACA,eACA,WAAwB,YAAiB,SACzC,YACA,GACA,MAEA,WAEA,aACA,cACA,SAA8B,CAC9B,eACA,CAAiB,EACjB,eAGA,GACA,SAAsC,YAAsB,IAE5D,oBACA,8BAEA,CACA,SAEA,MADA,KACA,CACA,QACA,CACA,iBACA,cACA,eACA,gBACA,kCACA,4BACA,gBACa,CACb,CACA,EA0KA,MAvUA,YACA,mBACA,wBACA,CAAS,EACT,UAoUA,WACA,aACA,MAnJA,OAAoD,IACpD,WACA,OACA,WACA,EACA,EAIA,GAHA,qBACA,MAEA,eACA,qBACA,qBACA,mBACA,cACA,gBAGA,CACA,WACA,sBACA,aACA,YACA,+BACA,aACA,SACA,IACA,OACA,0BACA,KACA,CACA,UACA,CACA,CAEA,IACA,CACA,qBACA,oBACA,KACA,GACA,EACA,cACA,QACA,CAAa,EACb,cACA,QACA,CAAa,CACb,CACA,GACA,cACA,gBACA,cACA,cACA,YACA,QACA,EACA,QACA,4BACA,6BACA,cACA,8BACA,cACA,EACA,uCACA,UACA,wBACA,UACA,iCACA,cAEA,2CACA,cACA,uBACA,QACA,EAAwB,CACxB,4BACA,gBACA,EAAoB,CACpB,oBACA,SACA,EAAoB,CACpB,gBACA,qBACA,CAAS,CACT,EAgEA,WA7KA,OAA0C,IAC1C,SACA,kBACA,aAGA,oBACA,uBAEA,eACA,qBAEA,cACA,mBACA,yBACA,YACA,KAEA,eACA,cACA,gBAEA,cAAmC,KAAe,EAElD,EAsJA,YAjWA,IACA,EACA,+BACA,WAAqC,CACrC,cACA,gBACS,CACT,EA2VA,cACA,SA3VA,UACA,cAA0C,MAAQ,SAAU,KAC5D,cACA,KACA,KACA,CAAS,EACT,cACA,OACA,gBACA,UACA,CAAS,EACT,uCACA,EAgVA,SAnEA,OAAwC,IACxC,gBACA,yBACA,mCACA,EAgEA,gBACA,CACA,EAkDA,GACA,WACA,EAEA,wBACA,EAAqB,aAAiB,KACtC,4BACA,cACA,gBACA,MAEA,GAA8B,gBAAuB,EAErD,CAAK,MAiBL,OAhBA,GACA,0BACA,UACA,CAAK,EACD,WAAe,MACnB,sBACA,4CACA,wBAEA,sBACA,uBACA,yBAA2C,GAE3C,oBACA,CAAK,EACL,2CACA,SACA","sources":["webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/can-use-dom/dist/reach-utils-can-use-dom.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/use-isomorphic-layout-effect/dist/reach-utils-use-isomorphic-layout-effect.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/context/dist/reach-utils-context.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/type-check/dist/reach-utils-type-check.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/make-id/dist/reach-utils-make-id.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/noop/dist/reach-utils-noop.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/dev-utils/dist/reach-utils-dev-utils.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/compose-refs/dist/reach-utils-compose-refs.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/use-update-effect/dist/reach-utils-use-update-effect.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/use-stateful-ref-value/dist/reach-utils-use-stateful-ref-value.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/compose-event-handlers/dist/reach-utils-compose-event-handlers.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/use-force-update/dist/reach-utils-use-force-update.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+descendants@0.16.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/descendants/dist/reach-descendants.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+auto-id@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/auto-id/dist/reach-auto-id.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+portal@0.16.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/portal/dist/reach-portal.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+observe-rect@1.2.0/node_modules/@reach/observe-rect/dist/observe-rect.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+rect@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/rect/dist/reach-rect.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+utils@0.16.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/utils/owner-document/dist/reach-utils-owner-document.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+popover@0.16.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/popover/dist/reach-popover.esm.js","webpack://_N_E/../../node_modules/.pnpm/@reach+combobox@0.16.5_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@reach/combobox/dist/reach-combobox.esm.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/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/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/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/_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/_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/_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/_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/_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/_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/_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/_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/_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/_createAssigner.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/_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/_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/_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/_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/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/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/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/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/../../src/client/image-component.tsx","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-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/../../node_modules/.pnpm/next@15.1.6_@babel+core@7.26.0_babel-plugin-macros@3.1.0_react-dom@18.3.1_react@18.3.1__react@18.3.1_sass@1.84.0/node_modules/next/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.84.0/node_modules/next/script.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.5_@types+react@18.2.25_react@18.3.1/node_modules/react-focus-lock/dist/es2015/FocusGuard.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.5_@types+react@18.2.25_react@18.3.1/node_modules/react-focus-lock/dist/es2015/medium.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.5_@types+react@18.2.25_react@18.3.1/node_modules/react-focus-lock/dist/es2015/scope.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.5_@types+react@18.2.25_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.5_@types+react@18.2.25_react@18.3.1/node_modules/react-focus-lock/dist/es2015/util.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.5_@types+react@18.2.25_react@18.3.1/node_modules/react-focus-lock/dist/es2015/Trap.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.5_@types+react@18.2.25_react@18.3.1/node_modules/react-focus-lock/dist/es2015/Combination.js","webpack://_N_E/../../node_modules/.pnpm/react-focus-lock@2.13.5_@types+react@18.2.25_react@18.3.1/node_modules/react-focus-lock/dist/es2015/index.js","webpack://_N_E/../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_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.2.25_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/Combination.js","webpack://_N_E/../../node_modules/.pnpm/tabbable@4.0.0/node_modules/tabbable/index.js","webpack://_N_E/../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.2.25_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.2.25_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.2.25_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.2.25_react@18.3.1/node_modules/use-sidecar/dist/es2015/medium.js","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-collapsible@1.1.3_@types+react-dom@18.2.10_@types+react@18.2.25_react-d_25377155234ce44fda490ff86d83bf73/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.2.10_@types+react@18.2.25_react-dom_376a817bb9b412f1fba9f62cf13bee53/node_modules/@radix-ui/react-accordion/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-collection@1.1.2_@types+react-dom@18.2.10_@types+react@18.2.25_react-do_4ea78dd6d69157d8ae4af95de3feafd3/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.2.25_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.2.25_react@18.3.1/node_modules/@radix-ui/react-context/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.6_@types+react-dom@18.2.10_@types+react@18.2.25_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/../../node_modules/.pnpm/@radix-ui+react-direction@1.1.0_@types+react@18.2.25_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.2.25_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.2.10_@types+react@18.2.25_r_c7bddeda11ccfc493b1833b70d9ef6f6/node_modules/@radix-ui/react-dismissable-layer/dist/index.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/@floating-ui+core@1.6.9/node_modules/@floating-ui/core/dist/floating-ui.core.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+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/@radix-ui+react-arrow@1.1.2_@types+react-dom@18.2.10_@types+react@18.2.25_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-use-size@1.1.0_@types+react@18.2.25_react@18.3.1/node_modules/@radix-ui/react-use-size/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-popper@1.2.2_@types+react-dom@18.2.10_@types+react@18.2.25_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.2.10_@types+react@18.2.25_react-_048153e19bc80db79c0bc1a2ebcafa44/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.2.10_@types+react@18.2.25_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.2.10_@types+react@18.2.25_react_89a904a8f316ab0ac252dd9cd2e81016/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","webpack://_N_E/../../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.1_@types+react@18.2.25_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_62e0388087b5c527c3aae7d2b9d85e6b/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.2.25_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.2.10_@types+react@18.2.25_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.2.10_@types+react@18.2.25_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.2.10_@types+react@18.2.25_react-dom_aea48f9671c6340752c7bc808e2b3005/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.2.25_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.2.25_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.2.25_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.2.25_react@18.3.1/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","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/../../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/../../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+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/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/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/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/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/addMonths.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/differenceInDays.js","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/endOfMonth.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/getDay.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDaysInMonth.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/isFirstDayOfMonth.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/isSameMonth.js","webpack://_N_E/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameYear.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/../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parseISO.js","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/startOfWeek.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/subMonths.js","webpack://_N_E/../../node_modules/.pnpm/react-hook-form@7.33.0_react@18.3.1/node_modules/react-hook-form/dist/index.esm.mjs"],"sourcesContent":["function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\n\nexport { canUseDOM };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { canUseDOM } from '../../can-use-dom/dist/reach-utils-can-use-dom.esm.js';\n\n/**\n * React currently throws a warning when using useLayoutEffect on the server. To\n * get around it, we can conditionally useEffect on the server (no-op) and\n * useLayoutEffect in the browser. We occasionally need useLayoutEffect to\n * ensure we don't get a render flash for certain operations, but we may also\n * need affected components to render on the server. One example is when setting\n * a component's descendants to retrieve their index values.\n *\n * Important to note that using this hook as an escape hatch will break the\n * eslint dependency warnings unless you rename the import to `useLayoutEffect`.\n * Use sparingly only when the effect won't effect the rendered HTML to avoid\n * any server/client mismatch.\n *\n * If a useLayoutEffect is needed and the result would create a mismatch, it's\n * likely that the component in question shouldn't be rendered on the server at\n * all, so a better approach would be to lazily render those in a parent\n * component after client-side hydration.\n *\n * https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.js\n *\n * @param effect\n * @param deps\n */\n\nvar useIsomorphicLayoutEffect = /*#__PURE__*/canUseDOM() ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { createContext } from 'react';\n\nfunction createNamedContext(name, defaultValue) {\n var Ctx = /*#__PURE__*/createContext(defaultValue);\n\n if (process.env.NODE_ENV !== \"production\") {\n Ctx.displayName = name;\n }\n\n return Ctx;\n}\n\nexport { createNamedContext };\n","/**\n * Checks whether or not a value is a boolean.\n *\n * @param value\n */\nfunction isBoolean(value) {\n return typeof value === \"boolean\";\n}\n/**\n * Checks whether or not a value is a function.\n *\n * @param value\n */\n\nfunction isFunction(value) {\n // eslint-disable-next-line eqeqeq\n return !!(value && {}.toString.call(value) == \"[object Function]\");\n}\n/**\n * Checks whether or not a value is a number.\n *\n * @param value\n */\n\nfunction isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}\n/**\n * Checks whether or not a value is a string.\n *\n * @param value\n */\n\nfunction isString(value) {\n return typeof value === \"string\";\n}\n\nexport { isBoolean, isFunction, isNumber, isString };\n","/**\n * Joins strings to format IDs for compound components.\n *\n * @param args\n */\nfunction makeId() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args.filter(function (val) {\n return val != null;\n }).join(\"--\");\n}\n\nexport { makeId };\n","function noop() {}\n\nexport { noop };\n","import { useRef, useEffect } from 'react';\n\n/* eslint-disable react-hooks/rules-of-hooks */\nvar checkedPkgs = {};\n/**\n * Just a lil state logger\n *\n * @param state\n * @param DEBUG\n */\n\nfunction useStateLogger(state, DEBUG) {\n if (DEBUG === void 0) {\n DEBUG = false;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n var debugRef = useRef(DEBUG);\n useEffect(function () {\n debugRef.current = DEBUG;\n }, [DEBUG]);\n useEffect(function () {\n if (debugRef.current) {\n console.group(\"State Updated\");\n console.log(\"%c\" + state, \"font-weight: normal; font-size: 120%; font-style: italic;\");\n console.groupEnd();\n }\n }, [state]);\n }\n}\n/**\n * When in dev mode, checks that styles for a given `@reach` package are loaded.\n *\n * @param packageName Name of the package to check.\n * @example checkStyles(\"dialog\") will check for styles for @reach/dialog\n */\n\nfunction checkStyles(packageName) {\n if (process.env.NODE_ENV !== \"production\") {\n // In CJS files, process.env.NODE_ENV is stripped from our build, but we\n // need it to prevent style checks from clogging up user logs while testing.\n // This is a workaround until we can tweak the build a bit to accommodate.\n var _ref = typeof process !== \"undefined\" ? process.env : {\n NODE_ENV: \"development\"\n },\n environment = _ref.NODE_ENV; // only check once per package\n\n\n if (checkedPkgs[packageName]) return;\n checkedPkgs[packageName] = true;\n\n if (environment === \"development\" && parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--reach-\" + packageName), 10) !== 1) {\n console.warn(\"@reach/\" + packageName + \" styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:\\n \\n import \\\"@reach/\" + packageName + \"/styles.css\\\";\\n \\n Otherwise you'll need to include them some other way:\\n \\n <link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"node_modules/@reach/\" + packageName + \"/styles.css\\\" />\\n \\n For more information visit https://ui.reach.tech/styling.\\n \");\n }\n }\n}\n/**\n * When in dev mode, checks that styles for a given `@reach` package are loaded.\n *\n * @param packageName Name of the package to check.\n * @example useCheckStyles(\"dialog\") will check for styles for @reach/dialog\n */\n\nfunction useCheckStyles(packageName) {\n if (process.env.NODE_ENV !== \"production\") {\n var name = useRef(packageName);\n useEffect(function () {\n return void (name.current = packageName);\n }, [packageName]);\n useEffect(function () {\n return checkStyles(name.current);\n }, []);\n }\n}\n/**\n * Logs a warning in dev mode when a component switches from controlled to\n * uncontrolled, or vice versa\n *\n * A single prop should typically be used to determine whether or not a\n * component is controlled or not.\n *\n * @param controlledValue\n * @param controlledPropName\n * @param componentName\n */\n\nfunction useControlledSwitchWarning(controlledValue, controlledPropName, componentName) {\n if (process.env.NODE_ENV !== \"production\") {\n var controlledRef = useRef(controlledValue != null);\n var nameCache = useRef({\n componentName: componentName,\n controlledPropName: controlledPropName\n });\n useEffect(function () {\n nameCache.current = {\n componentName: componentName,\n controlledPropName: controlledPropName\n };\n }, [componentName, controlledPropName]);\n useEffect(function () {\n var wasControlled = controlledRef.current;\n var _nameCache$current = nameCache.current,\n componentName = _nameCache$current.componentName,\n controlledPropName = _nameCache$current.controlledPropName;\n var isControlled = controlledValue != null;\n\n if (wasControlled !== isControlled) {\n console.error(\"A component is changing an \" + (wasControlled ? \"\" : \"un\") + \"controlled `\" + controlledPropName + \"` state of \" + componentName + \" to be \" + (wasControlled ? \"un\" : \"\") + \"controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled \" + componentName + \" element for the lifetime of the component.\\n More info: https://fb.me/react-controlled-components\");\n }\n }, [controlledValue]);\n }\n}\n\nexport { checkStyles, useCheckStyles, useControlledSwitchWarning, useStateLogger };\n","import { useCallback } from 'react';\nimport { isFunction } from '../../type-check/dist/reach-utils-type-check.esm.js';\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n}\n\n/**\n * Passes or assigns an arbitrary value to a ref function or object.\n *\n * @param ref\n * @param value\n */\nfunction assignRef(ref, value) {\n if (ref == null) return;\n\n if (isFunction(ref)) {\n ref(value);\n } else {\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(\"Cannot assign value \\\"\" + value + \"\\\" to ref \\\"\" + ref + \"\\\"\");\n }\n }\n}\n/**\n * Passes or assigns a value to multiple refs (typically a DOM node). Useful for\n * dealing with components that need an explicit ref for DOM calculations but\n * also forwards refs assigned by an app.\n *\n * @param refs Refs to fork\n */\n\nfunction useComposedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useCallback(function (node) {\n for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {\n var ref = _step.value;\n assignRef(ref, node);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, refs);\n}\n\nexport { assignRef, useComposedRefs };\n","import { useRef, useEffect } from 'react';\n\n/**\n * Call an effect after a component update, skipping the initial mount.\n *\n * @param effect Effect to call\n * @param deps Effect dependency list\n */\nfunction useUpdateEffect(effect, deps) {\n var mounted = useRef(false);\n useEffect(function () {\n if (mounted.current) {\n effect();\n } else {\n mounted.current = true;\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, deps);\n}\n\nexport { useUpdateEffect };\n","import { useState, useCallback } from 'react';\n\nfunction useStatefulRefValue(ref, initialState) {\n var _useState = useState(initialState),\n state = _useState[0],\n setState = _useState[1];\n\n var callbackRef = useCallback(function (refValue) {\n ref.current = refValue;\n setState(refValue); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return [state, callbackRef];\n}\n\nexport { useStatefulRefValue };\n","/**\n * Wraps a lib-defined event handler and a user-defined event handler, returning\n * a single handler that allows a user to prevent lib-defined handlers from\n * firing.\n *\n * @param theirHandler User-supplied event handler\n * @param ourHandler Library-supplied event handler\n */\nfunction composeEventHandlers(theirHandler, ourHandler) {\n return function (event) {\n theirHandler && theirHandler(event);\n\n if (!event.defaultPrevented) {\n return ourHandler(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import { useState, useCallback } from 'react';\n\n/**\n * Forces a re-render, similar to `forceUpdate` in class components.\n */\n\nfunction useForceUpdate() {\n var _useState = useState(Object.create(null)),\n dispatch = _useState[1];\n\n return useCallback(function () {\n dispatch(Object.create(null));\n }, []);\n}\n\nexport { useForceUpdate };\n","import { useContext, useState, useCallback, createElement, useMemo } from 'react';\nimport { useForceUpdate } from '@reach/utils/use-force-update';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { createNamedContext } from '@reach/utils/context';\nimport { noop } from '@reach/utils/noop';\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 _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 _excluded = [\"element\", \"index\"];\n\nfunction createDescendantContext(name, initialValue) {\n if (initialValue === void 0) {\n initialValue = {};\n }\n\n var descendants = [];\n return createNamedContext(name, _extends({\n descendants: descendants,\n registerDescendant: noop,\n unregisterDescendant: noop\n }, initialValue));\n}\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node and (optionally) a key. The key is useful\n * if multiple descendants have identical text values and we need to\n * differentiate siblings for some reason.\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation. However, in the few cases where\n * this is not the case, we can require an explicit index from the app.\n */\n\n\nfunction useDescendant(descendant, context, indexProp) {\n var forceUpdate = useForceUpdate();\n\n var _React$useContext = useContext(context),\n registerDescendant = _React$useContext.registerDescendant,\n unregisterDescendant = _React$useContext.unregisterDescendant,\n descendants = _React$useContext.descendants; // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants so that\n // everything is up-to-date before the user interacts with a collection.\n\n\n var index = indexProp != null ? indexProp : descendants.findIndex(function (item) {\n return item.element === descendant.element;\n }); // Prevent any flashing\n\n useIsomorphicLayoutEffect(function () {\n if (!descendant.element) forceUpdate();\n registerDescendant(_extends({}, descendant, {\n index: index\n }));\n return function () {\n unregisterDescendant(descendant.element);\n };\n }, [descendant, forceUpdate, index, registerDescendant, unregisterDescendant].concat(Object.values(descendant)));\n return index;\n}\n\nfunction useDescendantsInit() {\n return useState([]);\n}\n\nfunction useDescendants(ctx) {\n return useContext(ctx).descendants;\n}\n\nfunction DescendantProvider(_ref) {\n var Ctx = _ref.context,\n children = _ref.children,\n items = _ref.items,\n set = _ref.set;\n var registerDescendant = useCallback(function (_ref2) {\n var element = _ref2.element,\n explicitIndex = _ref2.index,\n rest = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (!element) {\n return;\n }\n\n set(function (items) {\n var newItems;\n\n if (explicitIndex != null) {\n return [].concat(items, [_extends({}, rest, {\n element: element,\n index: explicitIndex\n })]).sort(function (a, b) {\n return a.index - b.index;\n });\n } else if (items.length === 0) {\n // If there are no items, register at index 0 and bail.\n newItems = [_extends({}, rest, {\n element: element,\n index: 0\n })];\n } else if (items.find(function (item) {\n return item.element === element;\n })) {\n // If the element is already registered, just use the same array\n newItems = items;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n var index = items.findIndex(function (item) {\n if (!item.element || !element) {\n return false;\n } // Does this element's DOM node appear before another item in the\n // array in our DOM tree? If so, return true to grab the index at\n // this point in the array so we know where to insert the new\n // element.\n\n\n return Boolean(item.element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING);\n });\n\n var newItem = _extends({}, rest, {\n element: element,\n index: index\n }); // If an index is not found we will push the element to the end.\n\n\n if (index === -1) {\n newItems = [].concat(items, [newItem]);\n } else {\n newItems = [].concat(items.slice(0, index), [newItem], items.slice(index));\n }\n }\n\n return newItems.map(function (item, index) {\n return _extends({}, item, {\n index: index\n });\n });\n });\n }, // set is a state setter initialized by the useDescendantsInit hook.\n // We can safely ignore the lint warning here because it will not change\n // between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n var unregisterDescendant = useCallback(function (element) {\n if (!element) {\n return;\n }\n\n set(function (items) {\n return items.filter(function (item) {\n return element !== item.element;\n });\n });\n }, // set is a state setter initialized by the useDescendantsInit hook.\n // We can safely ignore the lint warning here because it will not change\n // between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n return /*#__PURE__*/createElement(Ctx.Provider, {\n value: useMemo(function () {\n return {\n descendants: items,\n registerDescendant: registerDescendant,\n unregisterDescendant: unregisterDescendant\n };\n }, [items, registerDescendant, unregisterDescendant])\n }, children);\n}\n/**\n * Testing this as an abstraction for compound components that use keyboard\n * navigation. Hoping this will help us prevent bugs and mismatched behavior\n * across various components, but it may also prove to be too messy of an\n * abstraction in the end.\n *\n * Currently used in:\n * - Tabs\n * - Accordion\n *\n * @param context\n * @param options\n */\n\n\nfunction useDescendantKeyDown(context, options) {\n var _React$useContext2 = useContext(context),\n descendants = _React$useContext2.descendants;\n\n var callback = options.callback,\n currentIndex = options.currentIndex,\n filter = options.filter,\n _options$key = options.key,\n key = _options$key === void 0 ? \"index\" : _options$key,\n _options$orientation = options.orientation,\n orientation = _options$orientation === void 0 ? \"vertical\" : _options$orientation,\n _options$rotate = options.rotate,\n rotate = _options$rotate === void 0 ? true : _options$rotate,\n _options$rtl = options.rtl,\n rtl = _options$rtl === void 0 ? false : _options$rtl;\n return function handleKeyDown(event) {\n if (![\"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\", \"PageUp\", \"PageDown\", \"Home\", \"End\"].includes(event.key)) {\n return;\n }\n\n var index = currentIndex != null ? currentIndex : -1; // If we use a filter function, we need to re-index our descendants array\n // so that filtered descendent elements aren't selected.\n\n var selectableDescendants = filter ? descendants.filter(filter) : descendants; // We need some options for any of this to work!\n\n if (!selectableDescendants.length) {\n return;\n }\n\n var selectableIndex = selectableDescendants.findIndex(function (descendant) {\n return descendant.index === currentIndex;\n });\n\n function getNextOption() {\n var atBottom = index === getLastOption().index;\n return atBottom ? rotate ? getFirstOption() : selectableDescendants[selectableIndex] : selectableDescendants[(selectableIndex + 1) % selectableDescendants.length];\n }\n\n function getPreviousOption() {\n var atTop = index === getFirstOption().index;\n return atTop ? rotate ? getLastOption() : selectableDescendants[selectableIndex] : selectableDescendants[(selectableIndex - 1 + selectableDescendants.length) % selectableDescendants.length];\n }\n\n function getFirstOption() {\n return selectableDescendants[0];\n }\n\n function getLastOption() {\n return selectableDescendants[selectableDescendants.length - 1];\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n if (orientation === \"vertical\" || orientation === \"both\") {\n event.preventDefault();\n var next = getNextOption();\n callback(key === \"option\" ? next : next[key]);\n }\n\n break;\n\n case \"ArrowUp\":\n if (orientation === \"vertical\" || orientation === \"both\") {\n event.preventDefault();\n var prev = getPreviousOption();\n callback(key === \"option\" ? prev : prev[key]);\n }\n\n break;\n\n case \"ArrowLeft\":\n if (orientation === \"horizontal\" || orientation === \"both\") {\n event.preventDefault();\n var nextOrPrev = (rtl ? getNextOption : getPreviousOption)();\n callback(key === \"option\" ? nextOrPrev : nextOrPrev[key]);\n }\n\n break;\n\n case \"ArrowRight\":\n if (orientation === \"horizontal\" || orientation === \"both\") {\n event.preventDefault();\n var prevOrNext = (rtl ? getPreviousOption : getNextOption)();\n callback(key === \"option\" ? prevOrNext : prevOrNext[key]);\n }\n\n break;\n\n case \"PageUp\":\n event.preventDefault();\n var prevOrFirst = (event.ctrlKey ? getPreviousOption : getFirstOption)();\n callback(key === \"option\" ? prevOrFirst : prevOrFirst[key]);\n break;\n\n case \"Home\":\n event.preventDefault();\n var first = getFirstOption();\n callback(key === \"option\" ? first : first[key]);\n break;\n\n case \"PageDown\":\n event.preventDefault();\n var nextOrLast = (event.ctrlKey ? getNextOption : getLastOption)();\n callback(key === \"option\" ? nextOrLast : nextOrLast[key]);\n break;\n\n case \"End\":\n event.preventDefault();\n var last = getLastOption();\n callback(key === \"option\" ? last : last[key]);\n break;\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport { DescendantProvider, createDescendantContext, useDescendant, useDescendantKeyDown, useDescendants, useDescendantsInit };\n","import { useState, useEffect } from 'react';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\n\n/*\n * Welcome to @reach/auto-id!\n\n * Let's see if we can make sense of why this hook exists and its\n * implementation.\n *\n * Some background:\n * 1. Accessibility APIs rely heavily on element IDs\n * 2. Requiring developers to put IDs on every element in Reach UI is both\n * cumbersome and error-prone\n * 3. With a component model, we can generate IDs for them!\n *\n * Solution 1: Generate random IDs.\n *\n * This works great as long as you don't server render your app. When React (in\n * the client) tries to reuse the markup from the server, the IDs won't match\n * and React will then recreate the entire DOM tree.\n *\n * Solution 2: Increment an integer\n *\n * This sounds great. Since we're rendering the exact same tree on the server\n * and client, we can increment a counter and get a deterministic result between\n * client and server. Also, JS integers can go up to nine-quadrillion. I'm\n * pretty sure the tab will be closed before an app never needs\n * 10 quadrillion IDs!\n *\n * Problem solved, right?\n *\n * Ah, but there's a catch! React's concurrent rendering makes this approach\n * non-deterministic. While the client and server will end up with the same\n * elements in the end, depending on suspense boundaries (and possibly some user\n * input during the initial render) the incrementing integers won't always match\n * up.\n *\n * Solution 3: Don't use IDs at all on the server; patch after first render.\n *\n * What we've done here is solution 2 with some tricks. With this approach, the\n * ID returned is an empty string on the first render. This way the server and\n * client have the same markup no matter how wild the concurrent rendering may\n * have gotten.\n *\n * After the render, we patch up the components with an incremented ID. This\n * causes a double render on any components with `useId`. Shouldn't be a problem\n * since the components using this hook should be small, and we're only updating\n * the ID attribute on the DOM, nothing big is happening.\n *\n * It doesn't have to be an incremented number, though--we could do generate\n * random strings instead, but incrementing a number is probably the cheapest\n * thing we can do.\n *\n * Additionally, we only do this patchup on the very first client render ever.\n * Any calls to `useId` that happen dynamically in the client will be\n * populated immediately with a value. So, we only get the double render after\n * server hydration and never again, SO BACK OFF ALRIGHT?\n */\nvar serverHandoffComplete = false;\nvar id = 0;\n\nvar genId = function genId() {\n return ++id;\n};\n/**\n * useId\n *\n * Autogenerate IDs to facilitate WAI-ARIA and server rendering.\n *\n * Note: The returned ID will initially be `null` and will update after a\n * component mounts. Users may need to supply their own ID if they need\n * consistent values for SSR.\n *\n * @see Docs https://reach.tech/auto-id\n */\n\n\nfunction useId(idFromProps) {\n /*\n * If this instance isn't part of the initial render, we don't have to do the\n * double render/patch-up dance. We can just generate the ID and return it.\n */\n var initialId = idFromProps || (serverHandoffComplete ? genId() : null);\n\n var _React$useState = useState(initialId),\n id = _React$useState[0],\n setId = _React$useState[1];\n\n useIsomorphicLayoutEffect(function () {\n if (id === null) {\n /*\n * Patch the ID after render. We do this in `useLayoutEffect` to avoid any\n * rendering flicker, though it'll make the first render slower (unlikely\n * to matter, but you're welcome to measure your app and let us know if\n * it's a problem).\n */\n setId(genId());\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, []);\n useEffect(function () {\n if (serverHandoffComplete === false) {\n /*\n * Flag all future uses of `useId` to skip the update dance. This is in\n * `useEffect` because it goes after `useLayoutEffect`, ensuring we don't\n * accidentally bail out of the patch-up dance prematurely.\n */\n serverHandoffComplete = true;\n }\n }, []);\n return id != null ? String(id) : undefined;\n}\n\nexport { useId };\n","import { useRef, useEffect, createElement } from 'react';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { useForceUpdate } from '@reach/utils/use-force-update';\nimport { createPortal } from 'react-dom';\nimport warning from 'tiny-warning';\n\n/**\n * Welcome to @reach/portal!\n *\n * Creates and appends a DOM node to the end of `document.body` and renders a\n * React tree into it. Useful for rendering a natural React element hierarchy\n * with a different DOM hierarchy to prevent parent styles from clipping or\n * hiding content (for popovers, dropdowns, and modals).\n *\n * @see Docs https://reach.tech/portal\n * @see Source https://github.com/reach/reach-ui/tree/main/packages/portal\n * @see React https://reactjs.org/docs/portals.html\n */\n/**\n * Portal\n *\n * @see Docs https://reach.tech/portal#portal\n */\n\nvar Portal = function Portal(_ref) {\n var children = _ref.children,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? \"reach-portal\" : _ref$type,\n containerRef = _ref.containerRef;\n var mountNode = useRef(null);\n var portalNode = useRef(null);\n var forceUpdate = useForceUpdate();\n\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(function () {\n if (containerRef != null) {\n process.env.NODE_ENV !== \"production\" ? warning(typeof containerRef === \"object\" && \"current\" in containerRef, \"@reach/portal: Invalid value passed to the `containerRef` of a \" + \"`Portal`. The portal will be appended to the document body, but if \" + \"you want to attach it to another DOM node you must pass a valid \" + \"React ref object to `containerRef`.\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(containerRef ? containerRef.current != null : true, \"@reach/portal: A ref was passed to the `containerRef` prop of a \" + \"`Portal`, but no DOM node was attached to it. Be sure to pass the \" + \"ref to a DOM component.\\n\\nIf you are forwarding the ref from \" + \"another component, be sure to use the React.forwardRef API. \" + \"See https://reactjs.org/docs/forwarding-refs.html.\") : void 0;\n }\n }, [containerRef]);\n }\n\n useIsomorphicLayoutEffect(function () {\n // This ref may be null when a hot-loader replaces components on the page\n if (!mountNode.current) return; // It's possible that the content of the portal has, itself, been portaled.\n // In that case, it's important to append to the correct document element.\n\n var ownerDocument = mountNode.current.ownerDocument;\n var body = (containerRef == null ? void 0 : containerRef.current) || ownerDocument.body;\n portalNode.current = ownerDocument == null ? void 0 : ownerDocument.createElement(type);\n body.appendChild(portalNode.current);\n forceUpdate();\n return function () {\n if (portalNode.current && body) {\n body.removeChild(portalNode.current);\n }\n };\n }, [type, forceUpdate, containerRef]);\n return portalNode.current ? /*#__PURE__*/createPortal(children, portalNode.current) : /*#__PURE__*/createElement(\"span\", {\n ref: mountNode\n });\n};\n/**\n * @see Docs https://reach.tech/portal#portal-props\n */\n\n\nif (process.env.NODE_ENV !== \"production\") {\n Portal.displayName = \"Portal\";\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default Portal;\nexport { Portal };\n","var props = [\"bottom\", \"height\", \"left\", \"right\", \"top\", \"width\"];\n\nvar rectChanged = function rectChanged(a, b) {\n if (a === void 0) {\n a = {};\n }\n\n if (b === void 0) {\n b = {};\n }\n\n return props.some(function (prop) {\n return a[prop] !== b[prop];\n });\n};\n\nvar observedNodes = /*#__PURE__*/new Map();\nvar rafId;\n\nvar run = function run() {\n var changedStates = [];\n observedNodes.forEach(function (state, node) {\n var newRect = node.getBoundingClientRect();\n\n if (rectChanged(newRect, state.rect)) {\n state.rect = newRect;\n changedStates.push(state);\n }\n });\n changedStates.forEach(function (state) {\n state.callbacks.forEach(function (cb) {\n return cb(state.rect);\n });\n });\n rafId = window.requestAnimationFrame(run);\n};\n\nfunction observeRect(node, cb) {\n return {\n observe: function observe() {\n var wasEmpty = observedNodes.size === 0;\n\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\n if (wasEmpty) run();\n },\n unobserve: function unobserve() {\n var state = observedNodes.get(node);\n\n if (state) {\n // Remove the callback\n var index = state.callbacks.indexOf(cb);\n if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference\n\n if (!state.callbacks.length) observedNodes[\"delete\"](node); // Stop the loop\n\n if (!observedNodes.size) cancelAnimationFrame(rafId);\n }\n }\n };\n}\n\nexport default observeRect;\n//# sourceMappingURL=observe-rect.esm.js.map\n","import { useRef, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport observeRect from '@reach/observe-rect';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { isBoolean, isFunction } from '@reach/utils/type-check';\nimport warning from 'tiny-warning';\n\n/**\n * Welcome to @reach/rect!\n *\n * Measures DOM elements (aka. bounding client rect).\n *\n * @see getBoundingClientRect https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n * @see Docs https://reach.tech/rect\n * @see Source https://github.com/reach/reach-ui/tree/main/packages/rect\n */\n\n/**\n * Rect\n *\n * @param props\n */\n\nvar Rect = function Rect(_ref) {\n var onChange = _ref.onChange,\n _ref$observe = _ref.observe,\n observe = _ref$observe === void 0 ? true : _ref$observe,\n children = _ref.children;\n var ref = useRef(null);\n var rect = useRect(ref, {\n observe: observe,\n onChange: onChange\n });\n return children({\n ref: ref,\n rect: rect\n });\n};\n/**\n * @see Docs https://reach.tech/rect#rect-props\n */\n\n\nif (process.env.NODE_ENV !== \"production\") {\n Rect.displayName = \"Rect\";\n Rect.propTypes = {\n children: PropTypes.func.isRequired,\n observe: PropTypes.bool,\n onChange: PropTypes.func\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * useRect\n *\n * @param nodeRef\n * @param observe\n * @param onChange\n */\nfunction useRect(nodeRef, observeOrOptions, deprecated_onChange) {\n var observe;\n var onChange;\n\n if (isBoolean(observeOrOptions)) {\n observe = observeOrOptions;\n } else {\n var _observeOrOptions$obs;\n\n observe = (_observeOrOptions$obs = observeOrOptions == null ? void 0 : observeOrOptions.observe) != null ? _observeOrOptions$obs : true;\n onChange = observeOrOptions == null ? void 0 : observeOrOptions.onChange;\n }\n\n if (isFunction(deprecated_onChange)) {\n onChange = deprecated_onChange;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(function () {\n process.env.NODE_ENV !== \"production\" ? warning(!isBoolean(observeOrOptions), \"Passing `observe` as the second argument to `useRect` is deprecated and will be removed in a future version of Reach UI. Instead, you can pass an object of options with an `observe` property as the second argument (`useRect(ref, { observe })`).\\n\" + \"See https://reach.tech/rect#userect-observe\") : void 0;\n }, [observeOrOptions]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n useEffect(function () {\n process.env.NODE_ENV !== \"production\" ? warning(!isFunction(deprecated_onChange), \"Passing `onChange` as the third argument to `useRect` is deprecated and will be removed in a future version of Reach UI. Instead, you can pass an object of options with an `onChange` property as the second argument (`useRect(ref, { onChange })`).\\n\" + \"See https://reach.tech/rect#userect-onchange\") : void 0;\n }, [deprecated_onChange]);\n }\n\n var _React$useState = useState(nodeRef.current),\n element = _React$useState[0],\n setElement = _React$useState[1];\n\n var initialRectIsSet = useRef(false);\n var initialRefIsSet = useRef(false);\n\n var _React$useState2 = useState(null),\n rect = _React$useState2[0],\n setRect = _React$useState2[1];\n\n var onChangeRef = useRef(onChange); // eslint-disable-next-line react-hooks/exhaustive-deps\n\n useIsomorphicLayoutEffect(function () {\n onChangeRef.current = onChange;\n\n if (nodeRef.current !== element) {\n setElement(nodeRef.current);\n }\n });\n useIsomorphicLayoutEffect(function () {\n if (element && !initialRectIsSet.current) {\n initialRectIsSet.current = true;\n setRect(element.getBoundingClientRect());\n }\n }, [element]);\n useIsomorphicLayoutEffect(function () {\n if (!observe) {\n return;\n }\n\n var elem = element; // 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\n if (!initialRefIsSet.current) {\n initialRefIsSet.current = true;\n elem = nodeRef.current;\n }\n\n if (!elem) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"You need to place the ref\");\n }\n\n return;\n }\n\n var observer = observeRect(elem, function (rect) {\n onChangeRef.current == null ? void 0 : onChangeRef.current(rect);\n setRect(rect);\n });\n observer.observe();\n return function () {\n observer.unobserve();\n };\n }, [observe, element, nodeRef]);\n return rect;\n}\n\nexport default Rect;\nexport { Rect, useRect };\n","import { canUseDOM } from '../../can-use-dom/dist/reach-utils-can-use-dom.esm.js';\n\n/**\n * Get an element's owner document. Useful when components are used in iframes\n * or other environments like dev tools.\n *\n * @param element\n */\n\nfunction getOwnerDocument(element) {\n return canUseDOM() ? element ? element.ownerDocument : document : null;\n}\n/**\n * TODO: Remove in 1.0\n */\n\nfunction getOwnerWindow(element) {\n var ownerDocument = getOwnerDocument(element);\n return ownerDocument ? ownerDocument.defaultView || window : null;\n}\n\nexport { getOwnerDocument, getOwnerWindow };\n","import { forwardRef, createElement, useRef, useEffect } from 'react';\nimport { Portal } from '@reach/portal';\nimport { useRect } from '@reach/rect';\nimport { getOwnerDocument } from '@reach/utils/owner-document';\nimport { useComposedRefs } from '@reach/utils/compose-refs';\nimport tabbable from 'tabbable';\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 _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 _excluded = [\"as\", \"targetRef\", \"position\", \"unstable_observableRefs\"];\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Popover\n */\nvar Popover = /*#__PURE__*/forwardRef(function Popover(props, ref) {\n return /*#__PURE__*/createElement(Portal, null, /*#__PURE__*/createElement(PopoverImpl, _extends({\n ref: ref\n }, props)));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Popover.displayName = \"Popover\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * PopoverImpl\n *\n * Popover is conditionally rendered so we can't start measuring until it shows\n * up, so useRect needs to live down here not up in Popover\n */\n\n\nvar PopoverImpl = /*#__PURE__*/forwardRef(function PopoverImpl(_ref, forwardedRef) {\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"div\" : _ref$as,\n targetRef = _ref.targetRef,\n _ref$position = _ref.position,\n position = _ref$position === void 0 ? positionDefault : _ref$position,\n _ref$unstable_observa = _ref.unstable_observableRefs,\n unstable_observableRefs = _ref$unstable_observa === void 0 ? [] : _ref$unstable_observa,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var popoverRef = useRef(null);\n var popoverRect = useRect(popoverRef, {\n observe: !props.hidden\n });\n var targetRect = useRect(targetRef, {\n observe: !props.hidden\n });\n var ref = useComposedRefs(popoverRef, forwardedRef);\n useSimulateTabNavigationForReactTree(targetRef, popoverRef);\n return /*#__PURE__*/createElement(Comp, _extends({\n \"data-reach-popover\": \"\",\n ref: ref\n }, props, {\n style: _extends({\n position: \"absolute\"\n }, getStyles.apply(void 0, [position, targetRect, popoverRect].concat(unstable_observableRefs)), props.style)\n }));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n PopoverImpl.displayName = \"PopoverImpl\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction getStyles(position, targetRect, popoverRect) {\n for (var _len = arguments.length, unstable_observableRefs = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n unstable_observableRefs[_key - 3] = arguments[_key];\n }\n\n return popoverRect ? position.apply(void 0, [targetRect, popoverRect].concat(unstable_observableRefs.map(function (ref) {\n return ref.current;\n }))) : {\n visibility: \"hidden\"\n };\n}\n\nfunction getTopPosition(targetRect, popoverRect, isDirectionUp) {\n return {\n top: isDirectionUp ? targetRect.top - popoverRect.height + window.pageYOffset + \"px\" : targetRect.top + targetRect.height + window.pageYOffset + \"px\"\n };\n}\n\nvar positionDefault = function positionDefault(targetRect, popoverRect) {\n if (!targetRect || !popoverRect) {\n return {};\n }\n\n var _getCollisions = getCollisions(targetRect, popoverRect),\n directionRight = _getCollisions.directionRight,\n directionUp = _getCollisions.directionUp;\n\n return _extends({\n left: directionRight ? targetRect.right - popoverRect.width + window.pageXOffset + \"px\" : targetRect.left + window.pageXOffset + \"px\"\n }, getTopPosition(targetRect, popoverRect, directionUp));\n};\n\nvar positionRight = function positionRight(targetRect, popoverRect) {\n if (!targetRect || !popoverRect) {\n return {};\n }\n\n var _getCollisions2 = getCollisions(targetRect, popoverRect),\n directionLeft = _getCollisions2.directionLeft,\n directionUp = _getCollisions2.directionUp;\n\n return _extends({\n left: directionLeft ? targetRect.left + window.pageXOffset + \"px\" : targetRect.right - popoverRect.width + window.pageXOffset + \"px\"\n }, getTopPosition(targetRect, popoverRect, directionUp));\n};\n\nvar positionMatchWidth = function positionMatchWidth(targetRect, popoverRect) {\n if (!targetRect || !popoverRect) {\n return {};\n }\n\n var _getCollisions3 = getCollisions(targetRect, popoverRect),\n directionUp = _getCollisions3.directionUp;\n\n return _extends({\n width: targetRect.width,\n left: targetRect.left\n }, getTopPosition(targetRect, popoverRect, directionUp));\n};\n\nfunction getCollisions(targetRect, popoverRect, offsetLeft, offsetBottom) {\n if (offsetLeft === void 0) {\n offsetLeft = 0;\n }\n\n if (offsetBottom === void 0) {\n offsetBottom = 0;\n }\n\n var 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 var directionRight = collisions.right && !collisions.left;\n var directionLeft = collisions.left && !collisions.right;\n var directionUp = collisions.bottom && !collisions.top;\n var directionDown = collisions.top && !collisions.bottom;\n return {\n directionRight: directionRight,\n directionLeft: directionLeft,\n directionUp: directionUp,\n directionDown: directionDown\n };\n} // Heads up, my jQuery past haunts this function. This hook scopes the tab\n// order to the React element tree, instead of the DOM tree. This way, when the\n// user navigates with tab from the targetRef, the tab order moves into the\n// popup, and then out of the popup back to the rest of the document.\n// (We call targetRef, triggerRef inside this function to avoid confusion with\n// event.target)\n\n\nfunction useSimulateTabNavigationForReactTree(triggerRef, popoverRef) {\n var ownerDocument = getOwnerDocument(triggerRef.current);\n\n function handleKeyDown(event) {\n if (event.key === \"Tab\" && popoverRef.current && tabbable(popoverRef.current).length === 0) {\n return;\n }\n\n if (event.key === \"Tab\" && event.shiftKey) {\n if (shiftTabbedFromElementAfterTrigger(event)) {\n focusLastTabbableInPopover(event);\n } else if (shiftTabbedOutOfPopover(event)) {\n focusTriggerRef(event);\n } else if (shiftTabbedToBrowserChrome(event)) {\n disableTabbablesInPopover();\n }\n } else if (event.key === \"Tab\") {\n if (tabbedFromTriggerToPopover()) {\n focusFirstPopoverTabbable(event);\n } else if (tabbedOutOfPopover()) {\n focusTabbableAfterTrigger(event);\n } else if (tabbedToBrowserChrome(event)) {\n disableTabbablesInPopover();\n }\n }\n }\n\n useEffect(function () {\n ownerDocument.addEventListener(\"keydown\", handleKeyDown);\n return function () {\n ownerDocument.removeEventListener(\"keydown\", handleKeyDown);\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function getElementAfterTrigger() {\n var elements = tabbable(ownerDocument);\n var targetIndex = elements && triggerRef.current ? elements.indexOf(triggerRef.current) : -1;\n var elementAfterTrigger = elements && elements[targetIndex + 1];\n return popoverRef.current && popoverRef.current.contains(elementAfterTrigger || null) ? false : elementAfterTrigger;\n }\n\n function tabbedFromTriggerToPopover() {\n return triggerRef.current ? triggerRef.current === ownerDocument.activeElement : false;\n }\n\n function focusFirstPopoverTabbable(event) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n\n if (elements && elements[0]) {\n event.preventDefault();\n elements[0].focus();\n }\n }\n\n function tabbedOutOfPopover() {\n var inPopover = popoverRef.current ? popoverRef.current.contains(ownerDocument.activeElement || null) : false;\n\n if (inPopover) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n return Boolean(elements && elements[elements.length - 1] === ownerDocument.activeElement);\n }\n\n return false;\n }\n\n function focusTabbableAfterTrigger(event) {\n var elementAfterTrigger = getElementAfterTrigger();\n\n if (elementAfterTrigger) {\n event.preventDefault();\n elementAfterTrigger.focus();\n }\n }\n\n function shiftTabbedFromElementAfterTrigger(event) {\n if (!event.shiftKey) return;\n var elementAfterTrigger = getElementAfterTrigger();\n return event.target === elementAfterTrigger;\n }\n\n function focusLastTabbableInPopover(event) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n var last = elements && elements[elements.length - 1];\n\n if (last) {\n event.preventDefault();\n last.focus();\n }\n }\n\n function shiftTabbedOutOfPopover(event) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n\n if (elements) {\n return elements.length === 0 ? false : event.target === elements[0];\n }\n\n return false;\n }\n\n function focusTriggerRef(event) {\n var _triggerRef$current;\n\n event.preventDefault();\n (_triggerRef$current = triggerRef.current) == null ? void 0 : _triggerRef$current.focus();\n }\n\n function tabbedToBrowserChrome(event) {\n var elements = popoverRef.current ? tabbable(ownerDocument).filter(function (element) {\n return !popoverRef.current.contains(element);\n }) : null;\n return elements ? event.target === elements[elements.length - 1] : false;\n }\n\n function shiftTabbedToBrowserChrome(event) {\n // we're assuming the popover will never contain the first tabbable\n // element, and it better not, because the trigger needs to be tabbable!\n return event.target === tabbable(ownerDocument)[0];\n }\n\n var restoreTabIndexTuplés = [];\n\n function disableTabbablesInPopover() {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n\n if (elements) {\n elements.forEach(function (element) {\n restoreTabIndexTuplés.push([element, element.tabIndex]);\n element.tabIndex = -1;\n });\n ownerDocument.addEventListener(\"focusin\", enableTabbablesInPopover);\n }\n }\n\n function enableTabbablesInPopover() {\n ownerDocument.removeEventListener(\"focusin\", enableTabbablesInPopover);\n restoreTabIndexTuplés.forEach(function (_ref2) {\n var element = _ref2[0],\n tabIndex = _ref2[1];\n element.tabIndex = tabIndex;\n });\n }\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default Popover;\nexport { Popover, getCollisions, positionDefault, positionMatchWidth, positionRight };\n","import { forwardRef, useRef, createElement, useContext, useEffect, useCallback, useMemo, Fragment, useState, useReducer } from 'react';\nimport PropTypes from 'prop-types';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { createNamedContext } from '@reach/utils/context';\nimport { isFunction } from '@reach/utils/type-check';\nimport { makeId } from '@reach/utils/make-id';\nimport { noop } from '@reach/utils/noop';\nimport { useCheckStyles } from '@reach/utils/dev-utils';\nimport { useComposedRefs } from '@reach/utils/compose-refs';\nimport { useUpdateEffect } from '@reach/utils/use-update-effect';\nimport { useStatefulRefValue } from '@reach/utils/use-stateful-ref-value';\nimport { composeEventHandlers } from '@reach/utils/compose-event-handlers';\nimport { createDescendantContext, useDescendantsInit, DescendantProvider, useDescendant, useDescendants } from '@reach/descendants';\nimport { useId } from '@reach/auto-id';\nimport { Popover, positionMatchWidth } from '@reach/popover';\nimport warning from 'tiny-warning';\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 _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\n// Forked from https://github.com/bvaughn/highlight-words-core\n\n/**\n * Creates an array of chunk objects representing both higlightable and non\n * highlightable pieces of text that match each search word.\n *\n * @return Array of \"chunk\" objects\n */\nfunction findAll(_ref) {\n var autoEscape = _ref.autoEscape,\n _ref$caseSensitive = _ref.caseSensitive,\n caseSensitive = _ref$caseSensitive === void 0 ? false : _ref$caseSensitive,\n _ref$findChunks = _ref.findChunks,\n findChunks = _ref$findChunks === void 0 ? defaultFindChunks : _ref$findChunks,\n sanitize = _ref.sanitize,\n searchWords = _ref.searchWords,\n textToHighlight = _ref.textToHighlight;\n return fillInChunks({\n chunksToHighlight: combineChunks({\n chunks: findChunks({\n autoEscape: autoEscape,\n caseSensitive: caseSensitive,\n sanitize: sanitize,\n searchWords: searchWords,\n textToHighlight: textToHighlight\n })\n }),\n totalLength: textToHighlight ? textToHighlight.length : 0\n });\n}\n/**\n * Takes an array of \"chunk\" objects and combines chunks that overlap into\n * single chunks.\n *\n * @return Array of \"chunk\" objects\n */\n\n\nfunction combineChunks(_ref2) {\n var chunks = _ref2.chunks;\n return chunks.sort(function (first, second) {\n return first.start - second.start;\n }).reduce(function (processedChunks, nextChunk) {\n // First chunk just goes straight in the array...\n if (processedChunks.length === 0) {\n return [nextChunk];\n } else {\n // ... subsequent chunks get checked to see if they overlap...\n var prevChunk = processedChunks.pop();\n\n if (nextChunk.start <= prevChunk.end) {\n // It may be the case that prevChunk completely surrounds nextChunk, so take the\n // largest of the end indeces.\n var endIndex = Math.max(prevChunk.end, nextChunk.end);\n processedChunks.push({\n highlight: false,\n start: prevChunk.start,\n end: endIndex\n });\n } else {\n processedChunks.push(prevChunk, nextChunk);\n }\n\n return processedChunks;\n }\n }, []);\n}\n/**\n * Examine text for any matches. If we find matches, add them to the returned\n * array as a \"chunk\" object.\n *\n * @return Array of \"chunk\" objects\n */\n\n\nfunction defaultFindChunks(_ref3) {\n var autoEscape = _ref3.autoEscape,\n caseSensitive = _ref3.caseSensitive,\n _ref3$sanitize = _ref3.sanitize,\n sanitize = _ref3$sanitize === void 0 ? defaultSanitize : _ref3$sanitize,\n searchWords = _ref3.searchWords,\n textToHighlight = _ref3.textToHighlight;\n textToHighlight = sanitize(textToHighlight || \"\");\n return searchWords.filter(function (searchWord) {\n return searchWord;\n }) // Remove empty words\n .reduce(function (chunks, searchWord) {\n searchWord = sanitize(searchWord);\n\n if (autoEscape) {\n searchWord = escapeRegExpFn(searchWord);\n }\n\n var regex = new RegExp(searchWord, caseSensitive ? \"g\" : \"gi\");\n var match;\n\n while (match = regex.exec(textToHighlight || \"\")) {\n var start = match.index;\n var end = regex.lastIndex; // We do not return zero-length matches\n\n if (end > start) {\n chunks.push({\n highlight: false,\n start: start,\n end: end\n });\n } // Prevent browsers like Firefox from getting stuck in an infinite loop\n // See http://www.regexguru.com/2008/04/watch-out-for-zero-length-matches/\n\n\n if (match.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n }\n\n return chunks;\n }, []);\n}\n/**\n * Given a set of chunks to highlight, create an additional set of chunks\n * to represent the bits of text between the highlighted text.\n *\n * @return Array of \"chunk\" objects\n */\n\n\nfunction fillInChunks(_ref4) {\n var chunksToHighlight = _ref4.chunksToHighlight,\n totalLength = _ref4.totalLength;\n var allChunks = [];\n\n if (chunksToHighlight.length === 0) {\n append(0, totalLength, false);\n } else {\n var lastIndex = 0;\n chunksToHighlight.forEach(function (chunk) {\n append(lastIndex, chunk.start, false);\n append(chunk.start, chunk.end, true);\n lastIndex = chunk.end;\n });\n append(lastIndex, totalLength, false);\n }\n\n return allChunks;\n\n function append(start, end, highlight) {\n if (end - start > 0) {\n allChunks.push({\n start: start,\n end: end,\n highlight: highlight\n });\n }\n }\n}\n\nfunction defaultSanitize(string) {\n return string;\n}\n\nfunction escapeRegExpFn(string) {\n return string.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, \"\\\\$&\");\n}\n\nvar HighlightWords = {\n combineChunks: combineChunks,\n fillInChunks: fillInChunks,\n findAll: findAll,\n findChunks: defaultFindChunks\n};\n\nvar _excluded = [\"onSelect\", \"openOnFocus\", \"children\", \"as\", \"aria-label\", \"aria-labelledby\"],\n _excluded2 = [\"as\", \"selectOnClick\", \"autocomplete\", \"onClick\", \"onChange\", \"onKeyDown\", \"onBlur\", \"onFocus\", \"value\"],\n _excluded3 = [\"as\", \"children\", \"portal\", \"onKeyDown\", \"onBlur\", \"position\"],\n _excluded4 = [\"persistSelection\", \"as\"],\n _excluded5 = [\"as\", \"children\", \"index\", \"value\", \"onClick\"],\n _excluded6 = [\"as\", \"onClick\", \"onKeyDown\"];\n\nvar _on, _on2, _on3, _on4, _states;\n// States\n// Nothing going on, waiting for the user to type or use the arrow keys\n\nvar IDLE = \"IDLE\"; // The component is suggesting options as the user types\n\nvar SUGGESTING = \"SUGGESTING\"; // The user is using the keyboard to navigate the list, not typing\n\nvar NAVIGATING = \"NAVIGATING\"; // The user is interacting with arbitrary elements inside the popup that\n// are not ComboboxInputs\n\nvar INTERACTING = \"INTERACTING\"; ////////////////////////////////////////////////////////////////////////////////\n// Events\n// User cleared the value w/ backspace, but input still has focus\n\nvar CLEAR = \"CLEAR\"; // User is typing\n\nvar CHANGE = \"CHANGE\"; // Initial input value change handler for syncing user state with state machine\n// Prevents initial change from sending the user to the NAVIGATING state\n// https://github.com/reach/reach-ui/issues/464\n\nvar INITIAL_CHANGE = \"INITIAL_CHANGE\"; // User is navigating w/ the keyboard\n\nvar NAVIGATE = \"NAVIGATE\"; // User can be navigating with keyboard and then click instead, we want the\n// value from the click, not the current nav item\n\nvar SELECT_WITH_KEYBOARD = \"SELECT_WITH_KEYBOARD\";\nvar SELECT_WITH_CLICK = \"SELECT_WITH_CLICK\"; // Pretty self-explanatory, user can hit escape or blur to close the popover\n\nvar ESCAPE = \"ESCAPE\";\nvar BLUR = \"BLUR\"; // The user left the input to interact with arbitrary elements inside the popup\n\nvar INTERACT = \"INTERACT\";\nvar FOCUS = \"FOCUS\";\nvar OPEN_WITH_BUTTON = \"OPEN_WITH_BUTTON\";\nvar OPEN_WITH_INPUT_CLICK = \"OPEN_WITH_INPUT_CLICK\";\nvar CLOSE_WITH_BUTTON = \"CLOSE_WITH_BUTTON\"; ////////////////////////////////////////////////////////////////////////////////\n\nvar stateChart = {\n initial: IDLE,\n states: (_states = {}, _states[IDLE] = {\n on: (_on = {}, _on[BLUR] = IDLE, _on[CLEAR] = IDLE, _on[CHANGE] = SUGGESTING, _on[INITIAL_CHANGE] = IDLE, _on[FOCUS] = SUGGESTING, _on[NAVIGATE] = NAVIGATING, _on[OPEN_WITH_BUTTON] = SUGGESTING, _on[OPEN_WITH_INPUT_CLICK] = SUGGESTING, _on)\n }, _states[SUGGESTING] = {\n on: (_on2 = {}, _on2[CHANGE] = SUGGESTING, _on2[FOCUS] = SUGGESTING, _on2[NAVIGATE] = NAVIGATING, _on2[CLEAR] = IDLE, _on2[ESCAPE] = IDLE, _on2[BLUR] = IDLE, _on2[SELECT_WITH_CLICK] = IDLE, _on2[INTERACT] = INTERACTING, _on2[CLOSE_WITH_BUTTON] = IDLE, _on2)\n }, _states[NAVIGATING] = {\n on: (_on3 = {}, _on3[CHANGE] = SUGGESTING, _on3[FOCUS] = SUGGESTING, _on3[CLEAR] = IDLE, _on3[BLUR] = IDLE, _on3[ESCAPE] = IDLE, _on3[NAVIGATE] = NAVIGATING, _on3[SELECT_WITH_CLICK] = IDLE, _on3[SELECT_WITH_KEYBOARD] = IDLE, _on3[CLOSE_WITH_BUTTON] = IDLE, _on3[INTERACT] = INTERACTING, _on3)\n }, _states[INTERACTING] = {\n on: (_on4 = {}, _on4[CLEAR] = IDLE, _on4[CHANGE] = SUGGESTING, _on4[FOCUS] = SUGGESTING, _on4[BLUR] = IDLE, _on4[ESCAPE] = IDLE, _on4[NAVIGATE] = NAVIGATING, _on4[CLOSE_WITH_BUTTON] = IDLE, _on4[SELECT_WITH_CLICK] = IDLE, _on4)\n }, _states)\n};\n\nvar reducer = function reducer(data, event) {\n var nextState = _extends({}, data, {\n lastEventType: event.type\n });\n\n switch (event.type) {\n case CHANGE:\n case INITIAL_CHANGE:\n return _extends({}, nextState, {\n navigationValue: null,\n value: event.value\n });\n\n case NAVIGATE:\n case OPEN_WITH_BUTTON:\n case OPEN_WITH_INPUT_CLICK:\n return _extends({}, nextState, {\n navigationValue: findNavigationValue(nextState, event)\n });\n\n case CLEAR:\n return _extends({}, nextState, {\n value: \"\",\n navigationValue: null\n });\n\n case BLUR:\n case ESCAPE:\n return _extends({}, nextState, {\n navigationValue: null\n });\n\n case SELECT_WITH_CLICK:\n return _extends({}, nextState, {\n // if controlled, \"set\" the input to what it already has, and let the\n // user do whatever they want\n value: event.isControlled ? data.value : event.value,\n navigationValue: null\n });\n\n case SELECT_WITH_KEYBOARD:\n return _extends({}, nextState, {\n // if controlled, \"set\" the input to what it already has, and let the\n // user do whatever they want\n value: event.isControlled ? data.value : data.navigationValue,\n navigationValue: null\n });\n\n case CLOSE_WITH_BUTTON:\n return _extends({}, nextState, {\n navigationValue: null\n });\n\n case INTERACT:\n return nextState;\n\n case FOCUS:\n return _extends({}, nextState, {\n navigationValue: findNavigationValue(nextState, event)\n });\n\n default:\n return nextState;\n }\n};\n\nfunction popoverIsExpanded(state) {\n return [SUGGESTING, NAVIGATING, INTERACTING].includes(state);\n}\n/**\n * When we open a list, set the navigation value to the value in the input, if\n * it's in the list, then it'll automatically be highlighted.\n *\n * @param stateData\n * @param event\n */\n\n\nfunction findNavigationValue(stateData, event) {\n // @ts-ignore\n if (event.value) {\n // @ts-ignore\n return event.value; // @ts-ignore\n } else if (event.persistSelection) {\n return stateData.value;\n } else {\n return null;\n }\n}\n\nvar ComboboxDescendantContext = /*#__PURE__*/createDescendantContext(\"ComboboxDescendantContext\");\nvar ComboboxContext = /*#__PURE__*/createNamedContext(\"ComboboxContext\", {}); // Allows us to put the option's value on context so that ComboboxOptionText\n// can work it's highlight text magic no matter what else is rendered around\n// it.\n\nvar OptionContext = /*#__PURE__*/createNamedContext(\"OptionContext\", {}); ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Combobox\n *\n * @see Docs https://reach.tech/combobox#combobox\n */\n\nvar Combobox = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _data$navigationValue;\n\n var onSelect = _ref.onSelect,\n _ref$openOnFocus = _ref.openOnFocus,\n openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,\n children = _ref.children,\n _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"div\" : _ref$as,\n ariaLabel = _ref[\"aria-label\"],\n ariaLabelledby = _ref[\"aria-labelledby\"],\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useDescendantsInit = useDescendantsInit(),\n options = _useDescendantsInit[0],\n setOptions = _useDescendantsInit[1]; // Need this to focus it\n\n\n var inputRef = useRef();\n var popoverRef = useRef();\n var buttonRef = useRef(); // When <ComboboxInput autocomplete={false} /> we don't want cycle back to\n // the user's value while navigating (because it's always the user's value),\n // but we need to know this in useKeyDown which is far away from the prop\n // here, so we do something sneaky and write it to this ref on context so we\n // can use it anywhere else 😛. Another new trick for me and I'm excited\n // about this one too!\n\n var autocompletePropRef = useRef(false);\n var persistSelectionRef = useRef(false);\n var defaultData = {\n // The value the user has typed. We derive this also when the developer is\n // controlling the value of ComboboxInput.\n value: \"\",\n // the value the user has navigated to with the keyboard\n navigationValue: null\n };\n\n var _useReducerMachine = useReducerMachine(stateChart, reducer, defaultData),\n state = _useReducerMachine[0],\n data = _useReducerMachine[1],\n transition = _useReducerMachine[2];\n\n useFocusManagement(data.lastEventType, inputRef);\n var id = useId(props.id);\n var listboxId = id ? makeId(\"listbox\", id) : \"listbox\";\n var isControlledRef = useRef(false);\n var isExpanded = popoverIsExpanded(state);\n var context = {\n ariaLabel: ariaLabel,\n ariaLabelledby: ariaLabelledby,\n autocompletePropRef: autocompletePropRef,\n buttonRef: buttonRef,\n comboboxId: id,\n data: data,\n inputRef: inputRef,\n isExpanded: isExpanded,\n listboxId: listboxId,\n onSelect: onSelect || noop,\n openOnFocus: openOnFocus,\n persistSelectionRef: persistSelectionRef,\n popoverRef: popoverRef,\n state: state,\n transition: transition,\n isControlledRef: isControlledRef\n };\n useCheckStyles(\"combobox\");\n return /*#__PURE__*/createElement(DescendantProvider, {\n context: ComboboxDescendantContext,\n items: options,\n set: setOptions\n }, /*#__PURE__*/createElement(ComboboxContext.Provider, {\n value: context\n }, /*#__PURE__*/createElement(Comp, _extends({}, props, {\n \"data-reach-combobox\": \"\",\n \"data-state\": getDataState(state),\n \"data-expanded\": isExpanded || undefined,\n ref: forwardedRef\n }), isFunction(children) ? children({\n id: id,\n isExpanded: isExpanded,\n navigationValue: (_data$navigationValue = data.navigationValue) != null ? _data$navigationValue : null,\n state: state\n }) : children)));\n});\n/**\n * @see Docs https://reach.tech/combobox#combobox-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n Combobox.displayName = \"Combobox\";\n Combobox.propTypes = {\n as: PropTypes.any,\n onSelect: PropTypes.func,\n openOnFocus: PropTypes.bool\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * ComboboxInput\n *\n * Wraps an `<input/>` with a couple extra props that work with the combobox.\n *\n * @see Docs https://reach.tech/combobox#comboboxinput\n */\n\n\nvar ComboboxInput = /*#__PURE__*/forwardRef(function (_ref2, forwardedRef) {\n var _ref2$as = _ref2.as,\n Comp = _ref2$as === void 0 ? \"input\" : _ref2$as,\n _ref2$selectOnClick = _ref2.selectOnClick,\n selectOnClick = _ref2$selectOnClick === void 0 ? false : _ref2$selectOnClick,\n _ref2$autocomplete = _ref2.autocomplete,\n autocomplete = _ref2$autocomplete === void 0 ? true : _ref2$autocomplete,\n onClick = _ref2.onClick,\n onChange = _ref2.onChange,\n onKeyDown = _ref2.onKeyDown,\n onBlur = _ref2.onBlur,\n onFocus = _ref2.onFocus,\n controlledValue = _ref2.value,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n // https://github.com/reach/reach-ui/issues/464\n var _React$useRef = useRef(controlledValue),\n initialControlledValue = _React$useRef.current;\n\n var controlledValueChangedRef = useRef(false);\n useUpdateEffect(function () {\n controlledValueChangedRef.current = true;\n }, [controlledValue]);\n\n var _React$useContext = useContext(ComboboxContext),\n _React$useContext$dat = _React$useContext.data,\n navigationValue = _React$useContext$dat.navigationValue,\n value = _React$useContext$dat.value,\n lastEventType = _React$useContext$dat.lastEventType,\n inputRef = _React$useContext.inputRef,\n state = _React$useContext.state,\n transition = _React$useContext.transition,\n listboxId = _React$useContext.listboxId,\n autocompletePropRef = _React$useContext.autocompletePropRef,\n openOnFocus = _React$useContext.openOnFocus,\n isExpanded = _React$useContext.isExpanded,\n ariaLabel = _React$useContext.ariaLabel,\n ariaLabelledby = _React$useContext.ariaLabelledby,\n persistSelectionRef = _React$useContext.persistSelectionRef,\n isControlledRef = _React$useContext.isControlledRef;\n\n var ref = useComposedRefs(inputRef, forwardedRef); // Because we close the List on blur, we need to track if the blur is\n // caused by clicking inside the list, and if so, don't close the List.\n\n var selectOnClickRef = useRef(false);\n var handleKeyDown = useKeyDown();\n var handleBlur = useBlur();\n var isControlled = typeof controlledValue !== \"undefined\";\n var wasInitiallyControlled = typeof initialControlledValue !== \"undefined\";\n\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? warning(!(!isControlled && wasInitiallyControlled), \"ComboboxInput is changing from controlled to uncontrolled. ComboboxInput should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled ComboboxInput for the lifetime of the component. Check the `value` prop being passed in.\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(isControlled && !wasInitiallyControlled), \"ComboboxInput is changing from uncontrolled to controlled. ComboboxInput should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled ComboboxInput for the lifetime of the component. Check the `value` prop being passed in.\") : void 0;\n }\n\n useEffect(function () {\n isControlledRef.current = isControlled; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isControlled]); // Layout effect should be SSR-safe here because we don't actually do\n // anything with this ref that involves rendering until after we've\n // let the client hydrate in nested components.\n\n useIsomorphicLayoutEffect(function () {\n autocompletePropRef.current = autocomplete;\n }, [autocomplete, autocompletePropRef]);\n var handleValueChange = useCallback(function (value) {\n if (value.trim() === \"\") {\n transition(CLEAR, {\n isControlled: isControlled\n });\n } else if (value === initialControlledValue && !controlledValueChangedRef.current) {\n transition(INITIAL_CHANGE, {\n value: value\n });\n } else {\n transition(CHANGE, {\n value: value\n });\n }\n }, [initialControlledValue, transition, isControlled]);\n useEffect(function () {\n // If they are controlling the value we still need to do our transitions,\n // so we have this derived state to emulate onChange of the input as we\n // receive new `value`s ...[*]\n if (isControlled && controlledValue !== value && ( // https://github.com/reach/reach-ui/issues/481\n controlledValue.trim() === \"\" ? (value || \"\").trim() !== \"\" : true)) {\n handleValueChange(controlledValue);\n }\n }, [controlledValue, handleValueChange, isControlled, value]); // [*]... and when controlled, we don't trigger handleValueChange as the\n // user types, instead the developer controls it with the normal input\n // onChange prop\n\n function handleChange(event) {\n var value = event.target.value;\n\n if (!isControlled) {\n handleValueChange(value);\n }\n }\n\n function handleFocus() {\n if (selectOnClick) {\n selectOnClickRef.current = true;\n } // If we select an option with click, useFocusManagement will focus the\n // input, in those cases we don't want to cause the menu to open back up,\n // so we guard behind these states.\n\n\n if (openOnFocus && lastEventType !== SELECT_WITH_CLICK) {\n transition(FOCUS, {\n persistSelection: persistSelectionRef.current\n });\n }\n }\n\n function handleClick() {\n if (selectOnClickRef.current) {\n var _inputRef$current;\n\n selectOnClickRef.current = false;\n (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.select();\n }\n\n if (openOnFocus && state === IDLE) {\n transition(OPEN_WITH_INPUT_CLICK);\n }\n }\n\n var inputValue = autocomplete && (state === NAVIGATING || state === INTERACTING) ? // When idle, we don't have a navigationValue on ArrowUp/Down\n navigationValue || controlledValue || value : controlledValue || value;\n return /*#__PURE__*/createElement(Comp, _extends({\n \"aria-activedescendant\": navigationValue ? String(makeHash(navigationValue)) : undefined,\n \"aria-autocomplete\": \"both\",\n \"aria-controls\": listboxId,\n \"aria-expanded\": isExpanded,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabel ? undefined : ariaLabelledby,\n role: \"combobox\"\n }, props, {\n \"data-reach-combobox-input\": \"\",\n \"data-state\": getDataState(state),\n ref: ref,\n onBlur: composeEventHandlers(onBlur, handleBlur),\n onChange: composeEventHandlers(onChange, handleChange),\n onClick: composeEventHandlers(onClick, handleClick),\n onFocus: composeEventHandlers(onFocus, handleFocus),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),\n value: inputValue || \"\"\n }));\n});\n/**\n * @see Docs https://reach.tech/combobox#comboboxinput-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n ComboboxInput.displayName = \"ComboboxInput\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * ComboboxPopover\n *\n * Contains the popup that renders the list. Because some UI needs to render\n * more than the list in the popup, you need to render one of these around the\n * list. For example, maybe you want to render the number of results suggested.\n *\n * @see Docs https://reach.tech/combobox#comboboxpopover\n */\n\n\nvar ComboboxPopover = /*#__PURE__*/forwardRef(function (_ref3, forwardedRef) {\n var _ref3$as = _ref3.as,\n Comp = _ref3$as === void 0 ? \"div\" : _ref3$as,\n children = _ref3.children,\n _ref3$portal = _ref3.portal,\n portal = _ref3$portal === void 0 ? true : _ref3$portal,\n onKeyDown = _ref3.onKeyDown,\n onBlur = _ref3.onBlur,\n _ref3$position = _ref3.position,\n position = _ref3$position === void 0 ? positionMatchWidth : _ref3$position,\n props = _objectWithoutPropertiesLoose(_ref3, _excluded3);\n\n var _React$useContext2 = useContext(ComboboxContext),\n popoverRef = _React$useContext2.popoverRef,\n inputRef = _React$useContext2.inputRef,\n isExpanded = _React$useContext2.isExpanded,\n state = _React$useContext2.state;\n\n var ref = useComposedRefs(popoverRef, forwardedRef);\n var handleKeyDown = useKeyDown();\n var handleBlur = useBlur();\n var sharedProps = {\n \"data-reach-combobox-popover\": \"\",\n \"data-state\": getDataState(state),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),\n onBlur: composeEventHandlers(onBlur, handleBlur),\n // Instead of conditionally rendering the popover we use the `hidden` prop\n // because we don't want to unmount on close (from escape or onSelect).\n // However, the developer can conditionally render the ComboboxPopover if\n // they do want to cause mount/unmount based on the app's own data (like\n // results.length or whatever).\n hidden: !isExpanded,\n tabIndex: -1,\n children: children\n };\n return portal ? /*#__PURE__*/createElement(Popover, _extends({\n as: Comp\n }, props, {\n ref: ref,\n \"data-expanded\": isExpanded || undefined,\n position: position,\n targetRef: inputRef\n }, sharedProps)) : /*#__PURE__*/createElement(Comp, _extends({\n ref: ref\n }, props, sharedProps));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n ComboboxPopover.displayName = \"ComboboxPopover\";\n}\n/**\n * @see Docs https://reach.tech/combobox#comboboxpopover-props\n */\n\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * ComboboxList\n *\n * Contains the `ComboboxOption` elements and sets up the proper aria attributes\n * for the list.\n *\n * @see Docs https://reach.tech/combobox#comboboxlist\n */\nvar ComboboxList = /*#__PURE__*/forwardRef(function (_ref4, forwardedRef) {\n var _ref4$persistSelectio = _ref4.persistSelection,\n persistSelection = _ref4$persistSelectio === void 0 ? false : _ref4$persistSelectio,\n _ref4$as = _ref4.as,\n Comp = _ref4$as === void 0 ? \"ul\" : _ref4$as,\n props = _objectWithoutPropertiesLoose(_ref4, _excluded4);\n\n var _React$useContext3 = useContext(ComboboxContext),\n persistSelectionRef = _React$useContext3.persistSelectionRef,\n listboxId = _React$useContext3.listboxId;\n\n if (persistSelection) {\n persistSelectionRef.current = true;\n }\n\n return /*#__PURE__*/createElement(Comp, _extends({\n role: \"listbox\"\n }, props, {\n ref: forwardedRef,\n \"data-reach-combobox-list\": \"\",\n id: listboxId\n }));\n});\n/**\n * @see Docs https://reach.tech/combobox#comboboxlist-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n ComboboxList.displayName = \"ComboboxList\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * ComboboxOption\n *\n * An option that is suggested to the user as they interact with the combobox.\n *\n * @see Docs https://reach.tech/combobox#comboboxoption\n */\n\n\nvar ComboboxOption = /*#__PURE__*/forwardRef(function (_ref5, forwardedRef) {\n var _ref5$as = _ref5.as,\n Comp = _ref5$as === void 0 ? \"li\" : _ref5$as,\n children = _ref5.children,\n indexProp = _ref5.index,\n value = _ref5.value,\n onClick = _ref5.onClick,\n props = _objectWithoutPropertiesLoose(_ref5, _excluded5);\n\n var _React$useContext4 = useContext(ComboboxContext),\n onSelect = _React$useContext4.onSelect,\n navigationValue = _React$useContext4.data.navigationValue,\n transition = _React$useContext4.transition,\n isControlledRef = _React$useContext4.isControlledRef;\n\n var ownRef = useRef(null);\n\n var _useStatefulRefValue = useStatefulRefValue(ownRef, null),\n element = _useStatefulRefValue[0],\n handleRefSet = _useStatefulRefValue[1];\n\n var descendant = useMemo(function () {\n return {\n element: element,\n value: value\n };\n }, [value, element]);\n var index = useDescendant(descendant, ComboboxDescendantContext, indexProp);\n var ref = useComposedRefs(forwardedRef, handleRefSet);\n var isActive = navigationValue === value;\n\n var handleClick = function handleClick() {\n onSelect && onSelect(value);\n transition(SELECT_WITH_CLICK, {\n value: value,\n isControlled: isControlledRef.current\n });\n };\n\n return /*#__PURE__*/createElement(OptionContext.Provider, {\n value: {\n value: value,\n index: index\n }\n }, /*#__PURE__*/createElement(Comp, _extends({\n \"aria-selected\": isActive,\n role: \"option\"\n }, props, {\n \"data-reach-combobox-option\": \"\",\n ref: ref,\n id: String(makeHash(value)),\n \"data-highlighted\": isActive ? \"\" : undefined // Without this the menu will close from `onBlur`, but with it the\n // element can be `document.activeElement` and then our focus checks in\n // onBlur will work as intended\n ,\n tabIndex: -1,\n onClick: composeEventHandlers(onClick, handleClick)\n }), children ? isFunction(children) ? children({\n value: value,\n index: index\n }) : children : /*#__PURE__*/createElement(ComboboxOptionText, null)));\n});\n/**\n * @see Docs https://reach.tech/combobox#comboboxoption-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n ComboboxOption.displayName = \"ComboboxOption\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * ComboboxOptionText\n *\n * Renders the value of a `ComboboxOption` as text but with spans wrapping the\n * matching and non-matching segments of text.\n *\n * We don't forwardRef or spread props because we render multiple spans or null,\n * should be fine 🤙\n *\n * @example\n * <ComboboxOption value=\"Seattle\">\n * 🌧 <ComboboxOptionText />\n * </ComboboxOption>\n *\n * @see Docs https://reach.tech/combobox#comboboxoptiontext\n */\n\n\nfunction ComboboxOptionText() {\n var _React$useContext5 = useContext(OptionContext),\n value = _React$useContext5.value;\n\n var _React$useContext6 = useContext(ComboboxContext),\n contextValue = _React$useContext6.data.value;\n\n var results = useMemo(function () {\n return HighlightWords.findAll({\n searchWords: escapeRegexp(contextValue || \"\").split(/\\s+/),\n textToHighlight: value\n });\n }, [contextValue, value]);\n return /*#__PURE__*/createElement(Fragment, null, results.length ? results.map(function (result, index) {\n var str = value.slice(result.start, result.end);\n return /*#__PURE__*/createElement(\"span\", {\n key: index,\n \"data-reach-combobox-option-text\": \"\",\n \"data-user-value\": result.highlight ? true : undefined,\n \"data-suggested-value\": result.highlight ? undefined : true\n }, str);\n }) : value);\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n ComboboxOptionText.displayName = \"ComboboxOptionText\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * ComboboxButton\n */\n\n\nvar ComboboxButton = /*#__PURE__*/forwardRef(function (_ref6, forwardedRef) {\n var _ref6$as = _ref6.as,\n Comp = _ref6$as === void 0 ? \"button\" : _ref6$as,\n onClick = _ref6.onClick,\n onKeyDown = _ref6.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref6, _excluded6);\n\n var _React$useContext7 = useContext(ComboboxContext),\n transition = _React$useContext7.transition,\n state = _React$useContext7.state,\n buttonRef = _React$useContext7.buttonRef,\n listboxId = _React$useContext7.listboxId,\n isExpanded = _React$useContext7.isExpanded;\n\n var ref = useComposedRefs(buttonRef, forwardedRef);\n var handleKeyDown = useKeyDown();\n\n var handleClick = function handleClick() {\n if (state === IDLE) {\n transition(OPEN_WITH_BUTTON);\n } else {\n transition(CLOSE_WITH_BUTTON);\n }\n };\n\n return /*#__PURE__*/createElement(Comp, _extends({\n \"aria-controls\": listboxId,\n \"aria-haspopup\": \"listbox\",\n \"aria-expanded\": isExpanded\n }, props, {\n \"data-reach-combobox-button\": \"\",\n ref: ref,\n onClick: composeEventHandlers(onClick, handleClick),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown)\n }));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n ComboboxButton.displayName = \"ComboboxButton\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Move focus back to the input if we start navigating w/ the\n * keyboard after focus has moved to any focusable content in\n * the popup.\n *\n * @param lastEventType\n * @param inputRef\n */\n\n\nfunction useFocusManagement(lastEventType, inputRef) {\n // useLayoutEffect so that the cursor goes to the end of the input instead\n // of awkwardly at the beginning, unclear to me why 🤷â€â™‚ï¸\n //\n // Should be safe to use here since we're just focusing an input.\n useIsomorphicLayoutEffect(function () {\n if (lastEventType === NAVIGATE || lastEventType === ESCAPE || lastEventType === SELECT_WITH_CLICK || lastEventType === OPEN_WITH_BUTTON) {\n var _inputRef$current2;\n\n (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();\n }\n }, [inputRef, lastEventType]);\n}\n/**\n * We want the same events when the input or the popup have focus (HOW COOL ARE\n * HOOKS BTW?) This is probably the hairiest piece but it's not bad.\n */\n\n\nfunction useKeyDown() {\n var _React$useContext8 = useContext(ComboboxContext),\n navigationValue = _React$useContext8.data.navigationValue,\n onSelect = _React$useContext8.onSelect,\n state = _React$useContext8.state,\n transition = _React$useContext8.transition,\n autocompletePropRef = _React$useContext8.autocompletePropRef,\n persistSelectionRef = _React$useContext8.persistSelectionRef,\n isControlledRef = _React$useContext8.isControlledRef;\n\n var options = useDescendants(ComboboxDescendantContext);\n return function handleKeyDown(event) {\n var index = options.findIndex(function (_ref7) {\n var value = _ref7.value;\n return value === navigationValue;\n });\n\n function getNextOption() {\n var atBottom = index === options.length - 1;\n\n if (atBottom) {\n if (autocompletePropRef.current) {\n // Go back to the value the user has typed because we are\n // autocompleting and they need to be able to get back to what\n // they had typed w/o having to backspace out.\n return null;\n } else {\n // cycle through\n return getFirstOption();\n }\n } else {\n // Go to the next item in the list\n return options[(index + 1) % options.length];\n }\n }\n\n function getPreviousOption() {\n var atTop = index === 0;\n\n if (atTop) {\n if (autocompletePropRef.current) {\n // Go back to the value the user has typed because we are\n // autocompleting and they need to be able to get back to what\n // they had typed w/o having to backspace out.\n return null;\n } else {\n // cycle through\n return getLastOption();\n }\n } else if (index === -1) {\n // displaying the user's value, so go select the last one\n return getLastOption();\n } else {\n // normal case, select previous\n return options[(index - 1 + options.length) % options.length];\n }\n }\n\n function getFirstOption() {\n return options[0];\n }\n\n function getLastOption() {\n return options[options.length - 1];\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n // Don't scroll the page\n event.preventDefault();\n\n if (!options || !options.length) {\n return;\n }\n\n if (state === IDLE) {\n // Opening a closed list\n transition(NAVIGATE, {\n persistSelection: persistSelectionRef.current\n });\n } else {\n var next = getNextOption();\n transition(NAVIGATE, {\n value: next ? next.value : null\n });\n }\n\n break;\n // A lot of duplicate code with ArrowDown up next, I'm already over it.\n\n case \"ArrowUp\":\n // Don't scroll the page\n event.preventDefault();\n\n if (!options || options.length === 0) {\n return;\n }\n\n if (state === IDLE) {\n transition(NAVIGATE);\n } else {\n var prev = getPreviousOption();\n transition(NAVIGATE, {\n value: prev ? prev.value : null\n });\n }\n\n break;\n\n case \"Home\":\n case \"PageUp\":\n // Don't scroll the page\n event.preventDefault();\n\n if (!options || options.length === 0) {\n return;\n }\n\n if (state === IDLE) {\n transition(NAVIGATE);\n } else {\n transition(NAVIGATE, {\n value: getFirstOption().value\n });\n }\n\n break;\n\n case \"End\":\n case \"PageDown\":\n // Don't scroll the page\n event.preventDefault();\n\n if (!options || options.length === 0) {\n return;\n }\n\n if (state === IDLE) {\n transition(NAVIGATE);\n } else {\n transition(NAVIGATE, {\n value: getLastOption().value\n });\n }\n\n break;\n\n case \"Escape\":\n if (state !== IDLE) {\n transition(ESCAPE);\n }\n\n break;\n\n case \"Enter\":\n if (state === NAVIGATING && navigationValue !== null) {\n // don't want to submit forms\n event.preventDefault();\n onSelect && onSelect(navigationValue);\n transition(SELECT_WITH_KEYBOARD, {\n isControlled: isControlledRef.current\n });\n }\n\n break;\n }\n };\n}\n\nfunction useBlur() {\n var _React$useContext9 = useContext(ComboboxContext),\n state = _React$useContext9.state,\n transition = _React$useContext9.transition,\n popoverRef = _React$useContext9.popoverRef,\n inputRef = _React$useContext9.inputRef,\n buttonRef = _React$useContext9.buttonRef;\n\n return function handleBlur(event) {\n var popover = popoverRef.current;\n var input = inputRef.current;\n var button = buttonRef.current;\n var activeElement = event.relatedTarget; // we on want to close only if focus propss outside the combobox\n\n if (activeElement !== input && activeElement !== button && popover) {\n if (popover.contains(activeElement)) {\n // focus landed inside the combobox, keep it open\n if (state !== INTERACTING) {\n transition(INTERACT);\n }\n } else {\n // focus landed outside the combobox, close it.\n transition(BLUR);\n }\n }\n };\n}\n/**\n * This manages transitions between states with a built in reducer to manage\n * the data that goes with those transitions.\n *\n * @param chart\n * @param reducer\n * @param initialData\n */\n\n\nfunction useReducerMachine(chart, reducer, initialData) {\n var _React$useState = useState(chart.initial),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var _React$useReducer = useReducer(reducer, initialData),\n data = _React$useReducer[0],\n dispatch = _React$useReducer[1];\n\n var transition = function transition(event, payload) {\n if (payload === void 0) {\n payload = {};\n }\n\n var currentState = chart.states[state];\n var nextState = currentState && currentState.on[event];\n\n if (nextState) {\n dispatch(_extends({\n type: event,\n state: state,\n nextState: state\n }, payload));\n setState(nextState);\n return;\n }\n };\n\n return [state, data, transition];\n}\n/**\n * We don't want to track the active descendant with indexes because nothing is\n * more annoying in a combobox than having it change values RIGHT AS YOU HIT\n * ENTER. That only happens if you use the index as your data, rather than\n * *your data as your data*. We use this to generate a unique ID based on the\n * value of each item. This function is short, sweet, and good enoughâ„¢ (I also\n * don't know how it works, tbqh)\n *\n * @see https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript\n * @param str\n */\n\n\nfunction makeHash(str) {\n var hash = 0;\n\n if (str.length === 0) {\n return hash;\n }\n\n for (var i = 0; i < str.length; i++) {\n var _char = str.charCodeAt(i);\n\n hash = (hash << 5) - hash + _char;\n hash = hash & hash;\n }\n\n return hash;\n} // function getActiveElement(node: Element | null | undefined) {\n// let activeElement: Element | null = null;\n// try {\n// // If Element.getRootNode is supported, we'll retrieve either the root\n// // Document or shadow root depending on where the component is rendered.\n// // https://github.com/reach/reach-ui/issues/787\n// activeElement = (node?.getRootNode() as ShadowRoot | Document)\n// .activeElement;\n// } finally {\n// return activeElement || (node?.ownerDocument || document).activeElement;\n// }\n// }\n\n\nfunction getDataState(state) {\n return state.toLowerCase();\n}\n/**\n * Escape regexp special characters in `str`\n *\n * @see https://github.com/component/escape-regexp/blob/5ce923c1510c9802b3da972c90b6861dd2829b6b/index.js\n * @param str\n */\n\n\nfunction escapeRegexp(str) {\n return String(str).replace(/([.*+?=^!:${}()|[\\]/\\\\])/g, \"\\\\$1\");\n} //////////////////////////\n//////////////////////////////////////////////////////\n\n/**\n * A hook that exposes data for a given `Combobox` component to its descendants.\n *\n * @see Docs https://reach.tech/combobox#usecomboboxcontext\n */\n\nfunction useComboboxContext() {\n var _React$useContext10 = useContext(ComboboxContext),\n isExpanded = _React$useContext10.isExpanded,\n comboboxId = _React$useContext10.comboboxId,\n data = _React$useContext10.data,\n state = _React$useContext10.state;\n\n var navigationValue = data.navigationValue;\n return useMemo(function () {\n return {\n id: comboboxId,\n isExpanded: isExpanded,\n navigationValue: navigationValue != null ? navigationValue : null,\n state: state\n };\n }, [comboboxId, isExpanded, navigationValue, state]);\n}\n/**\n * A hook that exposes data for a given `ComboboxOption` component to its descendants.\n *\n * @see Docs https://reach.tech/combobox#usecomboboxcontext\n */\n\nfunction useComboboxOptionContext() {\n var _React$useContext11 = useContext(OptionContext),\n value = _React$useContext11.value,\n index = _React$useContext11.index;\n\n return useMemo(function () {\n return {\n value: value,\n index: index\n };\n }, [value, index]);\n} ////////////////////////////////////////////////////////////////////////////////\n// Well alright, you made it all the way here to like 1100 lines of code (geez,\n// what the heck?). Have a great day :D\n////////////////////////////////////////////////////////////////////////////////\n// Types\n\nexport { Combobox, ComboboxButton, ComboboxInput, ComboboxList, ComboboxOption, ComboboxOptionText, ComboboxPopover, escapeRegexp, useKeyDown as unstable_useKeyDown, useComboboxContext, useComboboxOptionContext };\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\";\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","\"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 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 `_.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 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 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 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","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 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 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 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","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 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","/**\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 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","/** 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","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var 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","/**\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 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 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 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 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","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 { 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","module.exports = require('./dist/shared/lib/dynamic')\n","module.exports = require('./dist/client/script')\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;","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","var candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node) {\n if (\n !isNodeMatchingSelectorFocusable(node)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node);\n}\n\nfunction isNodeMatchingSelectorFocusable(node) {\n if (\n node.disabled\n || isHiddenInput(node)\n || isHidden(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\nfunction isHidden(node) {\n // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element,\n // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well.\n return node.offsetParent === null || getComputedStyle(node).visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\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","// 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/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","\"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","\"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","// 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","/**\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","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","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","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","// 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","// 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","\"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","\"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","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","// 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","// 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","\"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","\"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","// 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/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","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 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 { 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","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 { 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 { 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","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 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 { 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 { 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 { 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 { 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\";\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 { 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 {\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 { 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 { 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 { 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 { 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 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';\r\nvar isObject = (value) => !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\r\n ? isCheckBoxInput(event.target)\r\n ? event.target.checked\r\n : event.target.value\r\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n if (!path || !isObject(obj)) {\r\n return defaultValue;\r\n }\r\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nconst EVENTS = {\r\n BLUR: 'blur',\r\n FOCUS_OUT: 'focusout',\r\n CHANGE: 'change',\r\n};\r\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n onTouched: 'onTouched',\r\n all: 'all',\r\n};\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\n\nconst HookFormContext = React.createContext(null);\r\n/**\r\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}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @returns return all useForm methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * <FormProvider {...methods} >\r\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\r\n * <NestedInput />\r\n * <input type=\"submit\" />\r\n * </form>\r\n * </FormProvider>\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return <input {...register(\"test\")} />;\r\n * }\r\n * ```\r\n */\r\nconst useFormContext = () => React.useContext(HookFormContext);\r\n/**\r\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}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @param props - all useFrom methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * <FormProvider {...methods} >\r\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\r\n * <NestedInput />\r\n * <input type=\"submit\" />\r\n * </form>\r\n * </FormProvider>\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return <input {...register(\"test\")} />;\r\n * }\r\n * ```\r\n */\r\nconst FormProvider = (props) => {\r\n const { children, ...data } = props;\r\n return (React.createElement(HookFormContext.Provider, { value: data }, props.children));\r\n};\n\nvar getProxyFormState = (formState, _proxyFormState, localProxyFormState, isRoot = true) => {\r\n const result = {};\r\n for (const key in formState) {\r\n Object.defineProperty(result, key, {\r\n get: () => {\r\n const _key = key;\r\n if (_proxyFormState[_key] !== VALIDATION_MODE.all) {\r\n _proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\r\n }\r\n localProxyFormState && (localProxyFormState[_key] = true);\r\n return formState[_key];\r\n },\r\n });\r\n }\r\n return result;\r\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, isRoot) => {\r\n const { name, ...formState } = formStateData;\r\n return (isEmptyObject(formState) ||\r\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\r\n Object.keys(formState).find((key) => _proxyFormState[key] ===\r\n (!isRoot || VALIDATION_MODE.all)));\r\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => exact && signalName\r\n ? name === signalName\r\n : !name ||\r\n !signalName ||\r\n name === signalName ||\r\n convertToArrayPayload(name).some((currentName) => currentName &&\r\n (currentName.startsWith(signalName) ||\r\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\r\n const _props = React.useRef(props);\r\n _props.current = props;\r\n React.useEffect(() => {\r\n const tearDown = (subscription) => {\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n };\r\n const subscription = !props.disabled &&\r\n _props.current.subject.subscribe({\r\n next: _props.current.callback,\r\n });\r\n return () => tearDown(subscription);\r\n }, [props.disabled]);\r\n}\n\n/**\r\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.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\r\n *\r\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, control } = useForm({\r\n * defaultValues: {\r\n * firstName: \"firstName\"\r\n * }});\r\n * const { dirtyFields } = useFormState({\r\n * control\r\n * });\r\n * const onSubmit = (data) => console.log(data);\r\n *\r\n * return (\r\n * <form onSubmit={handleSubmit(onSubmit)}>\r\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\r\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\r\n * <input type=\"submit\" />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFormState(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, disabled, name, exact } = props || {};\r\n const [formState, updateFormState] = React.useState(control._formState);\r\n const _localProxyFormState = React.useRef({\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n });\r\n const _name = React.useRef(name);\r\n const _mounted = React.useRef(true);\r\n _name.current = name;\r\n const callback = React.useCallback((value) => _mounted.current &&\r\n shouldSubscribeByName(_name.current, value.name, exact) &&\r\n shouldRenderFormState(value, _localProxyFormState.current) &&\r\n updateFormState({\r\n ...control._formState,\r\n ...value,\r\n }), [control, exact]);\r\n useSubscribe({\r\n disabled,\r\n callback,\r\n subject: control._subjects.state,\r\n });\r\n React.useEffect(() => {\r\n _mounted.current = true;\r\n return () => {\r\n _mounted.current = false;\r\n };\r\n }, []);\r\n return getProxyFormState(formState, control._proxyFormState, _localProxyFormState.current, false);\r\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal) => {\r\n const isArray = Array.isArray(names);\r\n if (isString(names)) {\r\n isGlobal && _names.watch.add(names);\r\n return get(formValues, names);\r\n }\r\n if (isArray) {\r\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\r\n get(formValues, fieldName)));\r\n }\r\n isGlobal && (_names.watchAll = true);\r\n return formValues;\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar objectHasFunction = (data) => {\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n * name: \"fieldName\"\r\n * control,\r\n * })\r\n * ```\r\n */\r\nfunction useWatch(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n const callback = React.useCallback((formState) => {\r\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\r\n const fieldValues = generateWatchOutput(_name.current, control._names, formState.values || control._formValues);\r\n updateValue(isUndefined(_name.current) ||\r\n (isObject(fieldValues) && !objectHasFunction(fieldValues))\r\n ? { ...fieldValues }\r\n : Array.isArray(fieldValues)\r\n ? [...fieldValues]\r\n : isUndefined(fieldValues)\r\n ? defaultValue\r\n : fieldValues);\r\n }\r\n }, [control, exact, defaultValue]);\r\n useSubscribe({\r\n disabled,\r\n subject: control._subjects.watch,\r\n callback,\r\n });\r\n const [value, updateValue] = React.useState(isUndefined(defaultValue)\r\n ? control._getWatch(name)\r\n : defaultValue);\r\n React.useEffect(() => {\r\n control._removeUnmounted();\r\n });\r\n return value;\r\n}\n\n/**\r\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.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns field properties, field and form state. {@link UseControllerReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function Input(props) {\r\n * const { field, fieldState, formState } = useController(props);\r\n * return (\r\n * <div>\r\n * <input {...field} placeholder={props.name} />\r\n * <p>{fieldState.isTouched && \"Touched\"}</p>\r\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\r\n * </div>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useController(props) {\r\n const methods = useFormContext();\r\n const { name, control = methods.control, shouldUnregister } = props;\r\n const isArrayField = isNameInFieldArray(control._names.array, name);\r\n const value = useWatch({\r\n control,\r\n name,\r\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\r\n exact: true,\r\n });\r\n const formState = useFormState({\r\n control,\r\n name,\r\n });\r\n const _registerProps = React.useRef(control.register(name, {\r\n ...props.rules,\r\n value,\r\n }));\r\n React.useEffect(() => {\r\n const updateMounted = (name, value) => {\r\n const field = get(control._fields, name);\r\n if (field) {\r\n field._f.mount = value;\r\n }\r\n };\r\n updateMounted(name, true);\r\n return () => {\r\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\r\n (isArrayField\r\n ? _shouldUnregisterField && !control._stateFlags.action\r\n : _shouldUnregisterField)\r\n ? control.unregister(name)\r\n : updateMounted(name, false);\r\n };\r\n }, [name, control, isArrayField, shouldUnregister]);\r\n return {\r\n field: {\r\n name,\r\n value,\r\n onChange: React.useCallback((event) => {\r\n _registerProps.current.onChange({\r\n target: {\r\n value: getEventValue(event),\r\n name: name,\r\n },\r\n type: EVENTS.CHANGE,\r\n });\r\n }, [name]),\r\n onBlur: React.useCallback(() => {\r\n _registerProps.current.onBlur({\r\n target: {\r\n value: get(control._formValues, name),\r\n name: name,\r\n },\r\n type: EVENTS.BLUR,\r\n });\r\n }, [name, control]),\r\n ref: React.useCallback((elm) => {\r\n const field = get(control._fields, name);\r\n if (elm && field && elm.focus) {\r\n field._f.ref = {\r\n focus: () => elm.focus(),\r\n select: () => elm.select(),\r\n setCustomValidity: (message) => elm.setCustomValidity(message),\r\n reportValidity: () => elm.reportValidity(),\r\n };\r\n }\r\n }, [name, control._fields]),\r\n },\r\n formState,\r\n fieldState: Object.defineProperties({}, {\r\n invalid: {\r\n get: () => !!get(formState.errors, name),\r\n },\r\n isDirty: {\r\n get: () => !!get(formState.dirtyFields, name),\r\n },\r\n isTouched: {\r\n get: () => !!get(formState.touchedFields, name),\r\n },\r\n error: {\r\n get: () => get(formState.errors, name),\r\n },\r\n }),\r\n };\r\n}\n\n/**\r\n * Component based on `useController` hook to work with controlled component.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns provide field handler functions, field and form state.\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { control } = useForm<FormValues>({\r\n * defaultValues: {\r\n * test: \"\"\r\n * }\r\n * });\r\n *\r\n * return (\r\n * <form>\r\n * <Controller\r\n * control={control}\r\n * name=\"test\"\r\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\r\n * <>\r\n * <input\r\n * onChange={onChange} // send value to hook form\r\n * onBlur={onBlur} // notify when input is touched\r\n * value={value} // return updated value\r\n * ref={ref} // set ref for focus management\r\n * />\r\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\r\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\r\n * </>\r\n * )}\r\n * />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nconst Controller = (props) => props.render(useController(props));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? {\r\n ...errors[name],\r\n types: {\r\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\r\n [type]: message || true,\r\n },\r\n }\r\n : {};\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || Array.isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nconst focusFieldBy = (fields, callback, fieldsNames) => {\r\n for (const key of fieldsNames || Object.keys(fields)) {\r\n const field = get(fields, key);\r\n if (field) {\r\n const { _f, ...currentField } = field;\r\n if (_f && callback(_f.name)) {\r\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\r\n break;\r\n }\r\n else if (_f.refs) {\r\n _f.refs[0].focus();\r\n break;\r\n }\r\n }\r\n else if (isObject(currentField)) {\r\n focusFieldBy(currentField, callback);\r\n }\r\n }\r\n }\r\n};\n\nvar generateId = () => {\r\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\r\n ? options.focusName ||\r\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\r\n : '';\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\r\n (_names.watchAll ||\r\n _names.watch.has(name) ||\r\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\r\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nfunction append(data, value) {\r\n return [...data, ...convertToArrayPayload(value)];\r\n}\n\nvar isWeb = typeof window !== 'undefined' &&\r\n typeof window.HTMLElement !== 'undefined' &&\r\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\r\n let copy;\r\n const isArray = Array.isArray(data);\r\n if (data instanceof Date) {\r\n copy = new Date(data);\r\n }\r\n else if (data instanceof Set) {\r\n copy = new Set(data);\r\n }\r\n else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) &&\r\n (isArray || isObject(data))) {\r\n copy = isArray ? [] : {};\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n copy = data;\r\n break;\r\n }\r\n copy[key] = cloneObject(data[key]);\r\n }\r\n }\r\n else {\r\n return data;\r\n }\r\n return copy;\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...convertToArrayPayload(value),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar moveArrayAt = (data, from, to) => {\r\n if (!Array.isArray(data)) {\r\n return [];\r\n }\r\n if (isUndefined(data[to])) {\r\n data[to] = undefined;\r\n }\r\n data.splice(to, 0, data.splice(from, 1)[0]);\r\n return data;\r\n};\n\nfunction prepend(data, value) {\r\n return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\r\n}\n\nfunction removeAtIndexes(data, indexes) {\r\n let i = 0;\r\n const temp = [...data];\r\n for (const index of indexes) {\r\n temp.splice(index - i, 1);\r\n i++;\r\n }\r\n return compact(temp).length ? temp : [];\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\r\n};\n\nfunction baseGet(object, updatePath) {\r\n const length = updatePath.slice(0, -1).length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return object;\r\n}\r\nfunction unset(object, path) {\r\n const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n const childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n let previousObjRef;\r\n if (childObject) {\r\n delete childObject[key];\r\n }\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index &&\r\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (Array.isArray(objectRef) &&\r\n !objectRef.filter((data) => !isUndefined(data)).length))) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return object;\r\n}\n\nvar updateAt = (fieldValues, index, value) => {\r\n fieldValues[index] = value;\r\n return fieldValues;\r\n};\n\n/**\r\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.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\r\n *\r\n * @param props - useFieldArray props\r\n *\r\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\r\n * defaultValues: {\r\n * test: []\r\n * }\r\n * });\r\n * const { fields, append } = useFieldArray({\r\n * control,\r\n * name: \"test\"\r\n * });\r\n *\r\n * return (\r\n * <form onSubmit={handleSubmit(data => console.log(data))}>\r\n * {fields.map((item, index) => (\r\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\r\n * ))}\r\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\r\n * append\r\n * </button>\r\n * <input type=\"submit\" />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFieldArray(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\r\n const [fields, setFields] = React.useState(control._getFieldArray(name));\r\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\r\n const _fieldIds = React.useRef(fields);\r\n const _name = React.useRef(name);\r\n const _actioned = React.useRef(false);\r\n _name.current = name;\r\n _fieldIds.current = fields;\r\n control._names.array.add(name);\r\n const callback = React.useCallback(({ values, name: fieldArrayName, }) => {\r\n if (fieldArrayName === _name.current || !fieldArrayName) {\r\n const fieldValues = get(values, _name.current, []);\r\n setFields(fieldValues);\r\n ids.current = fieldValues.map(generateId);\r\n }\r\n }, []);\r\n useSubscribe({\r\n callback,\r\n subject: control._subjects.array,\r\n });\r\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\r\n _actioned.current = true;\r\n control._updateFieldArray(name, updatedFieldArrayValues);\r\n }, [control, name]);\r\n const append$1 = (value, options) => {\r\n const appendValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = append(control._getFieldArray(name), appendValue);\r\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\r\n ids.current = append(ids.current, appendValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, append, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const prepend$1 = (value, options) => {\r\n const prependValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = prepend(control._getFieldArray(name), prependValue);\r\n control._names.focus = getFocusFieldName(name, 0, options);\r\n ids.current = prepend(ids.current, prependValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, prepend, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const remove = (index) => {\r\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\r\n ids.current = removeArrayAt(ids.current, index);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\r\n argA: index,\r\n });\r\n };\r\n const insert$1 = (index, value, options) => {\r\n const insertValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\r\n control._names.focus = getFocusFieldName(name, index, options);\r\n ids.current = insert(ids.current, index, insertValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\r\n argA: index,\r\n argB: fillEmptyArray(value),\r\n });\r\n };\r\n const swap = (indexA, indexB) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\r\n swapArrayAt(ids.current, indexA, indexB);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n }, false);\r\n };\r\n const move = (from, to) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n moveArrayAt(updatedFieldArrayValues, from, to);\r\n moveArrayAt(ids.current, from, to);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n }, false);\r\n };\r\n const update = (index, value) => {\r\n const updateValue = cloneObject(value);\r\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\r\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\r\n updateValues(updatedFieldArrayValues);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\r\n argA: index,\r\n argB: updateValue,\r\n }, true, false);\r\n };\r\n const replace = (value) => {\r\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\r\n ids.current = updatedFieldArrayValues.map(generateId);\r\n updateValues([...updatedFieldArrayValues]);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\r\n };\r\n React.useEffect(() => {\r\n control._stateFlags.action = false;\r\n isWatched(name, control._names) && control._subjects.state.next({});\r\n if (_actioned.current) {\r\n control._executeSchema([name]).then((result) => {\r\n const error = get(result.errors, name);\r\n const existingError = get(control._formState.errors, name);\r\n if (existingError ? !error && existingError.type : error && error.type) {\r\n error\r\n ? set(control._formState.errors, name, error)\r\n : unset(control._formState.errors, name);\r\n control._subjects.state.next({\r\n errors: control._formState.errors,\r\n });\r\n }\r\n });\r\n }\r\n control._subjects.watch.next({\r\n name,\r\n values: control._formValues,\r\n });\r\n control._names.focus &&\r\n focusFieldBy(control._fields, (key) => key.startsWith(control._names.focus));\r\n control._names.focus = '';\r\n control._proxyFormState.isValid && control._updateValid();\r\n }, [fields, name, control]);\r\n React.useEffect(() => {\r\n !get(control._formValues, name) && control._updateFieldArray(name);\r\n return () => {\r\n (control._options.shouldUnregister || shouldUnregister) &&\r\n control.unregister(name);\r\n };\r\n }, [name, control, keyName, shouldUnregister]);\r\n return {\r\n swap: React.useCallback(swap, [updateValues, name, control]),\r\n move: React.useCallback(move, [updateValues, name, control]),\r\n prepend: React.useCallback(prepend$1, [updateValues, name, control]),\r\n append: React.useCallback(append$1, [updateValues, name, control]),\r\n remove: React.useCallback(remove, [updateValues, name, control]),\r\n insert: React.useCallback(insert$1, [updateValues, name, control]),\r\n update: React.useCallback(update, [updateValues, name, control]),\r\n replace: React.useCallback(replace, [updateValues, name, control]),\r\n fields: React.useMemo(() => fields.map((field, index) => ({\r\n ...field,\r\n [keyName]: ids.current[index] || generateId(),\r\n })), [fields, keyName]),\r\n };\r\n}\n\nfunction createSubject() {\r\n let _observers = [];\r\n const next = (value) => {\r\n for (const observer of _observers) {\r\n observer.next(value);\r\n }\r\n };\r\n const subscribe = (observer) => {\r\n _observers.push(observer);\r\n return {\r\n unsubscribe: () => {\r\n _observers = _observers.filter((o) => o !== observer);\r\n },\r\n };\r\n };\r\n const unsubscribe = () => {\r\n _observers = [];\r\n };\r\n return {\r\n get observers() {\r\n return _observers;\r\n },\r\n next,\r\n subscribe,\r\n unsubscribe,\r\n };\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\r\n if (isPrimitive(object1) || isPrimitive(object2)) {\r\n return object1 === object2;\r\n }\r\n if (isDateObject(object1) && isDateObject(object2)) {\r\n return object1.getTime() === object2.getTime();\r\n }\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n if (!keys2.includes(key)) {\r\n return false;\r\n }\r\n if (key !== 'ref') {\r\n const val2 = object2[key];\r\n if ((isDateObject(val1) && isDateObject(val2)) ||\r\n (isObject(val1) && isObject(val2)) ||\r\n (Array.isArray(val1) && Array.isArray(val2))\r\n ? !deepEqual(val1, val2)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nvar getValidationModes = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n isOnAll: mode === VALIDATION_MODE.all,\r\n isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => {\r\n const owner = value ? value.ownerDocument : 0;\r\n const ElementClass = owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement;\r\n return value instanceof ElementClass;\r\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction markFieldsDirty(data, fields = {}) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n fields[key] = Array.isArray(data[key]) ? [] : {};\r\n markFieldsDirty(data[key], fields[key]);\r\n }\r\n else if (!isNullOrUndefined(data[key])) {\r\n fields[key] = true;\r\n }\r\n }\r\n }\r\n return fields;\r\n}\r\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n if (isUndefined(formValues) ||\r\n isPrimitive(dirtyFieldsFromValues[key])) {\r\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\r\n ? markFieldsDirty(data[key], [])\r\n : { ...markFieldsDirty(data[key]) };\r\n }\r\n else {\r\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\r\n }\r\n }\r\n else {\r\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\r\n }\r\n }\r\n }\r\n return dirtyFieldsFromValues;\r\n}\r\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (Array.isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.checked && !option.disabled)\r\n .map((option) => option.value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n return options[0].checked && !options[0].disabled\r\n ? // @ts-expect-error expected to work in the browser\r\n options[0].attributes && !isUndefined(options[0].attributes.value)\r\n ? isUndefined(options[0].value) || options[0].value === ''\r\n ? validResult\r\n : { value: options[0].value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\r\n ? value\r\n : valueAsNumber\r\n ? value === '' || isNullOrUndefined(value)\r\n ? NaN\r\n : +value\r\n : valueAsDate && isString(value)\r\n ? new Date(value)\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: null,\r\n};\r\nvar getRadioValue = (options) => Array.isArray(options)\r\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\r\n ? {\r\n isValid: true,\r\n value: option.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nfunction getFieldValue(_f) {\r\n const ref = _f.ref;\r\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\r\n return;\r\n }\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return getRadioValue(_f.refs).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return [...ref.selectedOptions].map(({ value }) => value);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(_f.refs).value;\r\n }\r\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\r\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\r\n const fields = {};\r\n for (const name of fieldsNames) {\r\n const field = get(_fields, name);\r\n field && set(fields, name, field._f);\r\n }\r\n return {\r\n criteriaMode,\r\n names: [...fieldsNames],\r\n fields,\r\n shouldUseNativeValidation,\r\n };\r\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\r\n ? undefined\r\n : isRegex(rule)\r\n ? rule.source\r\n : isObject(rule)\r\n ? isRegex(rule.value)\r\n ? rule.value.source\r\n : rule.value\r\n : rule;\n\nvar hasValidation = (options) => options.mount &&\r\n (options.required ||\r\n options.min ||\r\n options.max ||\r\n options.maxLength ||\r\n options.minLength ||\r\n options.pattern ||\r\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\r\n const error = get(errors, name);\r\n if (error || isKey(name)) {\r\n return {\r\n error,\r\n name,\r\n };\r\n }\r\n const names = name.split('.');\r\n while (names.length) {\r\n const fieldName = names.join('.');\r\n const field = get(_fields, fieldName);\r\n const foundError = get(errors, fieldName);\r\n if (field && !Array.isArray(field) && name !== fieldName) {\r\n return { name };\r\n }\r\n if (foundError && foundError.type) {\r\n return {\r\n name: fieldName,\r\n error: foundError,\r\n };\r\n }\r\n names.pop();\r\n }\r\n return {\r\n name,\r\n };\r\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\r\n if (mode.isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && mode.isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar isMessage = (value) => isString(value) || React.isValidElement(value);\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) ||\r\n (Array.isArray(result) && result.every(isMessage)) ||\r\n (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar validateField = async (field, inputValue, validateAllFieldCriteria, shouldUseNativeValidation) => {\r\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\r\n if (!mount || disabled) {\r\n return {};\r\n }\r\n const inputRef = refs ? refs[0] : ref;\r\n const setCustomValidity = (message) => {\r\n if (shouldUseNativeValidation && inputRef.reportValidity) {\r\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\r\n inputRef.reportValidity();\r\n }\r\n };\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\r\n inputValue === '' ||\r\n (Array.isArray(inputValue) && !inputValue.length);\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = {\r\n type: exceedMax ? maxType : minType,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\r\n };\r\n };\r\n if (required &&\r\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\r\n (isBoolean(inputValue) && !inputValue) ||\r\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\r\n (isRadio && !getRadioValue(refs).isValid))) {\r\n const { value, message } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (value) {\r\n error[name] = {\r\n type: INPUT_VALIDATION_RULES.required,\r\n message,\r\n ref: inputRef,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\r\n const valueNumber = ref.valueAsNumber || +inputValue;\r\n if (!isNullOrUndefined(maxOutput.value)) {\r\n exceedMax = valueNumber > maxOutput.value;\r\n }\r\n if (!isNullOrUndefined(minOutput.value)) {\r\n exceedMin = valueNumber < minOutput.value;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(inputValue);\r\n if (isString(maxOutput.value)) {\r\n exceedMax = valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value)) {\r\n exceedMin = valueDate < new Date(minOutput.value);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if ((maxLength || minLength) && !isEmpty && isString(inputValue)) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n inputValue.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n inputValue.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (pattern && !isEmpty && isString(inputValue)) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\r\n error[name] = {\r\n type: INPUT_VALIDATION_RULES.pattern,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n if (isFunction(validate)) {\r\n const result = await validate(inputValue);\r\n const validateError = getValidateError(result, inputRef);\r\n if (validateError) {\r\n error[name] = {\r\n ...validateError,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(validateError.message);\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const key in validate) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateError = getValidateError(await validate[key](inputValue), inputRef, key);\r\n if (validateError) {\r\n validationResult = {\r\n ...validateError,\r\n ...appendErrorsCurry(key, validateError.message),\r\n };\r\n setCustomValidity(validateError.message);\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = {\r\n ref: inputRef,\r\n ...validationResult,\r\n };\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n setCustomValidity(true);\r\n return error;\r\n};\n\nconst defaultOptions = {\r\n mode: VALIDATION_MODE.onSubmit,\r\n reValidateMode: VALIDATION_MODE.onChange,\r\n shouldFocusError: true,\r\n};\r\nfunction createFormControl(props = {}) {\r\n let _options = {\r\n ...defaultOptions,\r\n ...props,\r\n };\r\n let _formState = {\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n };\r\n let _fields = {};\r\n let _defaultValues = cloneObject(_options.defaultValues) || {};\r\n let _formValues = _options.shouldUnregister\r\n ? {}\r\n : cloneObject(_defaultValues);\r\n let _stateFlags = {\r\n action: false,\r\n mount: false,\r\n watch: false,\r\n };\r\n let _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n };\r\n let delayErrorCallback;\r\n let timer = 0;\r\n let validateFields = {};\r\n const _proxyFormState = {\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n };\r\n const _subjects = {\r\n watch: createSubject(),\r\n array: createSubject(),\r\n state: createSubject(),\r\n };\r\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\r\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\r\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\r\n const debounce = (callback) => (wait) => {\r\n clearTimeout(timer);\r\n timer = window.setTimeout(callback, wait);\r\n };\r\n const _updateValid = async (shouldSkipRender) => {\r\n let isValid = false;\r\n if (_proxyFormState.isValid) {\r\n isValid = _options.resolver\r\n ? isEmptyObject((await _executeSchema()).errors)\r\n : await executeBuildInValidation(_fields, true);\r\n if (!shouldSkipRender && isValid !== _formState.isValid) {\r\n _formState.isValid = isValid;\r\n _subjects.state.next({\r\n isValid,\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\r\n if (args && method) {\r\n _stateFlags.action = true;\r\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\r\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\r\n shouldSetValues && set(_fields, name, fieldValues);\r\n }\r\n if (_proxyFormState.errors &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.errors, name))) {\r\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.errors, name, errors);\r\n unsetEmptyArray(_formState.errors, name);\r\n }\r\n if (_proxyFormState.touchedFields &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.touchedFields, name))) {\r\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\r\n }\r\n if (_proxyFormState.dirtyFields) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n }\r\n _subjects.state.next({\r\n isDirty: _getDirty(name, values),\r\n dirtyFields: _formState.dirtyFields,\r\n errors: _formState.errors,\r\n isValid: _formState.isValid,\r\n });\r\n }\r\n else {\r\n set(_formValues, name, values);\r\n }\r\n };\r\n const updateErrors = (name, error) => {\r\n set(_formState.errors, name, error);\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n });\r\n };\r\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\r\n const field = get(_fields, name);\r\n if (field) {\r\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\r\n isUndefined(defaultValue) ||\r\n (ref && ref.defaultChecked) ||\r\n shouldSkipSetValueAs\r\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\r\n : setFieldValue(name, defaultValue);\r\n _stateFlags.mount && _updateValid();\r\n }\r\n };\r\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\r\n let isFieldDirty = false;\r\n const output = {\r\n name,\r\n };\r\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\r\n if (_proxyFormState.isDirty) {\r\n const isPreviousFormDirty = _formState.isDirty;\r\n _formState.isDirty = output.isDirty = _getDirty();\r\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\r\n }\r\n if (_proxyFormState.dirtyFields && (!isBlurEvent || shouldDirty)) {\r\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\r\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\r\n isCurrentFieldPristine\r\n ? unset(_formState.dirtyFields, name)\r\n : set(_formState.dirtyFields, name, true);\r\n output.dirtyFields = _formState.dirtyFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n isPreviousFieldDirty !== get(_formState.dirtyFields, name);\r\n }\r\n if (isBlurEvent && !isPreviousFieldTouched) {\r\n set(_formState.touchedFields, name, isBlurEvent);\r\n output.touchedFields = _formState.touchedFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n (_proxyFormState.touchedFields &&\r\n isPreviousFieldTouched !== isBlurEvent);\r\n }\r\n isFieldDirty && shouldRender && _subjects.state.next(output);\r\n return isFieldDirty ? output : {};\r\n };\r\n const shouldRenderByError = async (name, isValid, error, fieldState) => {\r\n const previousFieldError = get(_formState.errors, name);\r\n const shouldUpdateValid = _proxyFormState.isValid && _formState.isValid !== isValid;\r\n if (props.delayError && error) {\r\n delayErrorCallback = debounce(() => updateErrors(name, error));\r\n delayErrorCallback(props.delayError);\r\n }\r\n else {\r\n clearTimeout(timer);\r\n delayErrorCallback = null;\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\r\n !isEmptyObject(fieldState) ||\r\n shouldUpdateValid) {\r\n const updatedFormState = {\r\n ...fieldState,\r\n ...(shouldUpdateValid ? { isValid } : {}),\r\n errors: _formState.errors,\r\n name,\r\n };\r\n _formState = {\r\n ..._formState,\r\n ...updatedFormState,\r\n };\r\n _subjects.state.next(updatedFormState);\r\n }\r\n validateFields[name]--;\r\n if (_proxyFormState.isValidating &&\r\n !Object.values(validateFields).some((v) => v)) {\r\n _subjects.state.next({\r\n isValidating: false,\r\n });\r\n validateFields = {};\r\n }\r\n };\r\n const _executeSchema = async (name) => _options.resolver\r\n ? await _options.resolver({ ..._formValues }, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation))\r\n : {};\r\n const executeSchemaAndUpdateState = async (names) => {\r\n const { errors } = await _executeSchema();\r\n if (names) {\r\n for (const name of names) {\r\n const error = get(errors, name);\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n }\r\n else {\r\n _formState.errors = errors;\r\n }\r\n return errors;\r\n };\r\n const executeBuildInValidation = async (fields, shouldOnlyCheckValid, context = {\r\n valid: true,\r\n }) => {\r\n for (const name in fields) {\r\n const field = fields[name];\r\n if (field) {\r\n const { _f: fieldReference, ...fieldValue } = field;\r\n if (fieldReference) {\r\n const fieldError = await validateField(field, get(_formValues, fieldReference.name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation);\r\n if (fieldError[fieldReference.name]) {\r\n context.valid = false;\r\n if (shouldOnlyCheckValid) {\r\n break;\r\n }\r\n }\r\n if (!shouldOnlyCheckValid) {\r\n fieldError[fieldReference.name]\r\n ? set(_formState.errors, fieldReference.name, fieldError[fieldReference.name])\r\n : unset(_formState.errors, fieldReference.name);\r\n }\r\n }\r\n fieldValue &&\r\n (await executeBuildInValidation(fieldValue, shouldOnlyCheckValid, context));\r\n }\r\n }\r\n return context.valid;\r\n };\r\n const _removeUnmounted = () => {\r\n for (const name of _names.unMount) {\r\n const field = get(_fields, name);\r\n field &&\r\n (field._f.refs\r\n ? field._f.refs.every((ref) => !live(ref))\r\n : !live(field._f.ref)) &&\r\n unregister(name);\r\n }\r\n _names.unMount = new Set();\r\n };\r\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\r\n !deepEqual(getValues(), _defaultValues));\r\n const _getWatch = (names, defaultValue, isGlobal) => {\r\n const fieldValues = {\r\n ...(_stateFlags.mount\r\n ? _formValues\r\n : isUndefined(defaultValue)\r\n ? _defaultValues\r\n : isString(names)\r\n ? { [names]: defaultValue }\r\n : defaultValue),\r\n };\r\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\r\n };\r\n const _getFieldArray = (name) => compact(get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\r\n const setFieldValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n let fieldValue = value;\r\n if (field) {\r\n const fieldReference = field._f;\r\n if (fieldReference) {\r\n !fieldReference.disabled &&\r\n set(_formValues, name, getFieldValueAs(value, fieldReference));\r\n fieldValue =\r\n isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\r\n ? ''\r\n : value;\r\n if (isMultipleSelect(fieldReference.ref)) {\r\n [...fieldReference.ref.options].forEach((selectRef) => (selectRef.selected = fieldValue.includes(selectRef.value)));\r\n }\r\n else if (fieldReference.refs) {\r\n if (isCheckBoxInput(fieldReference.ref)) {\r\n fieldReference.refs.length > 1\r\n ? fieldReference.refs.forEach((checkboxRef) => !checkboxRef.disabled &&\r\n (checkboxRef.checked = Array.isArray(fieldValue)\r\n ? !!fieldValue.find((data) => data === checkboxRef.value)\r\n : fieldValue === checkboxRef.value))\r\n : fieldReference.refs[0] &&\r\n (fieldReference.refs[0].checked = !!fieldValue);\r\n }\r\n else {\r\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\r\n }\r\n }\r\n else if (isFileInput(fieldReference.ref)) {\r\n fieldReference.ref.value = '';\r\n }\r\n else {\r\n fieldReference.ref.value = fieldValue;\r\n if (!fieldReference.ref.type) {\r\n _subjects.watch.next({\r\n name,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n (options.shouldDirty || options.shouldTouch) &&\r\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\r\n options.shouldValidate && trigger(name);\r\n };\r\n const setValues = (name, value, options) => {\r\n for (const fieldKey in value) {\r\n const fieldValue = value[fieldKey];\r\n const fieldName = `${name}.${fieldKey}`;\r\n const field = get(_fields, fieldName);\r\n (_names.array.has(name) ||\r\n !isPrimitive(fieldValue) ||\r\n (field && !field._f)) &&\r\n !isDateObject(fieldValue)\r\n ? setValues(fieldName, fieldValue, options)\r\n : setFieldValue(fieldName, fieldValue, options);\r\n }\r\n };\r\n const setValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n const isFieldArray = _names.array.has(name);\r\n const cloneValue = cloneObject(value);\r\n set(_formValues, name, cloneValue);\r\n if (isFieldArray) {\r\n _subjects.array.next({\r\n name,\r\n values: _formValues,\r\n });\r\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\r\n options.shouldDirty) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n _subjects.state.next({\r\n name,\r\n dirtyFields: _formState.dirtyFields,\r\n isDirty: _getDirty(name, cloneValue),\r\n });\r\n }\r\n }\r\n else {\r\n field && !field._f && !isNullOrUndefined(cloneValue)\r\n ? setValues(name, cloneValue, options)\r\n : setFieldValue(name, cloneValue, options);\r\n }\r\n isWatched(name, _names) && _subjects.state.next({});\r\n _subjects.watch.next({\r\n name,\r\n });\r\n };\r\n const onChange = async (event) => {\r\n const target = event.target;\r\n let name = target.name;\r\n const field = get(_fields, name);\r\n if (field) {\r\n let error;\r\n let isValid;\r\n const fieldValue = target.type\r\n ? getFieldValue(field._f)\r\n : getEventValue(event);\r\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\r\n const shouldSkipValidation = (!hasValidation(field._f) &&\r\n !_options.resolver &&\r\n !get(_formState.errors, name) &&\r\n !field._f.deps) ||\r\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\r\n const watched = isWatched(name, _names, isBlurEvent);\r\n set(_formValues, name, fieldValue);\r\n if (isBlurEvent) {\r\n field._f.onBlur && field._f.onBlur(event);\r\n delayErrorCallback && delayErrorCallback(0);\r\n }\r\n else if (field._f.onChange) {\r\n field._f.onChange(event);\r\n }\r\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\r\n const shouldRender = !isEmptyObject(fieldState) || watched;\r\n !isBlurEvent &&\r\n _subjects.watch.next({\r\n name,\r\n type: event.type,\r\n });\r\n if (shouldSkipValidation) {\r\n return (shouldRender &&\r\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\r\n }\r\n !isBlurEvent && watched && _subjects.state.next({});\r\n validateFields[name] = validateFields[name] ? +1 : 1;\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const { errors } = await _executeSchema([name]);\r\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\r\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\r\n error = errorLookupResult.error;\r\n name = errorLookupResult.name;\r\n isValid = isEmptyObject(errors);\r\n }\r\n else {\r\n error = (await validateField(field, get(_formValues, name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\r\n isValid = await _updateValid(true);\r\n }\r\n field._f.deps &&\r\n trigger(field._f.deps);\r\n shouldRenderByError(name, isValid, error, fieldState);\r\n }\r\n };\r\n const trigger = async (name, options = {}) => {\r\n let isValid;\r\n let validationResult;\r\n const fieldNames = convertToArrayPayload(name);\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\r\n isValid = isEmptyObject(errors);\r\n validationResult = name\r\n ? !fieldNames.some((name) => get(errors, name))\r\n : isValid;\r\n }\r\n else if (name) {\r\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\r\n const field = get(_fields, fieldName);\r\n return await executeBuildInValidation(field && field._f ? { [fieldName]: field } : field);\r\n }))).every(Boolean);\r\n !(!validationResult && !_formState.isValid) && _updateValid();\r\n }\r\n else {\r\n validationResult = isValid = await executeBuildInValidation(_fields);\r\n }\r\n _subjects.state.next({\r\n ...(!isString(name) ||\r\n (_proxyFormState.isValid && isValid !== _formState.isValid)\r\n ? {}\r\n : { name }),\r\n ...(_options.resolver ? { isValid } : {}),\r\n errors: _formState.errors,\r\n isValidating: false,\r\n });\r\n options.shouldFocus &&\r\n !validationResult &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), name ? fieldNames : _names.mount);\r\n return validationResult;\r\n };\r\n const getValues = (fieldNames) => {\r\n const values = {\r\n ..._defaultValues,\r\n ...(_stateFlags.mount ? _formValues : {}),\r\n };\r\n return isUndefined(fieldNames)\r\n ? values\r\n : isString(fieldNames)\r\n ? get(values, fieldNames)\r\n : fieldNames.map((name) => get(values, name));\r\n };\r\n const getFieldState = (name, formState) => ({\r\n invalid: !!get((formState || _formState).errors, name),\r\n isDirty: !!get((formState || _formState).dirtyFields, name),\r\n isTouched: !!get((formState || _formState).touchedFields, name),\r\n error: get((formState || _formState).errors, name),\r\n });\r\n const clearErrors = (name) => {\r\n name\r\n ? convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName))\r\n : (_formState.errors = {});\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n });\r\n };\r\n const setError = (name, error, options) => {\r\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\r\n set(_formState.errors, name, {\r\n ...error,\r\n ref,\r\n });\r\n _subjects.state.next({\r\n name,\r\n errors: _formState.errors,\r\n isValid: false,\r\n });\r\n options && options.shouldFocus && ref && ref.focus && ref.focus();\r\n };\r\n const watch = (name, defaultValue) => isFunction(name)\r\n ? _subjects.watch.subscribe({\r\n next: (info) => name(_getWatch(undefined, defaultValue), info),\r\n })\r\n : _getWatch(name, defaultValue, true);\r\n const unregister = (name, options = {}) => {\r\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\r\n _names.mount.delete(fieldName);\r\n _names.array.delete(fieldName);\r\n if (get(_fields, fieldName)) {\r\n if (!options.keepValue) {\r\n unset(_fields, fieldName);\r\n unset(_formValues, fieldName);\r\n }\r\n !options.keepError && unset(_formState.errors, fieldName);\r\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\r\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\r\n !_options.shouldUnregister &&\r\n !options.keepDefaultValue &&\r\n unset(_defaultValues, fieldName);\r\n }\r\n }\r\n _subjects.watch.next({});\r\n _subjects.state.next({\r\n ..._formState,\r\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\r\n });\r\n !options.keepIsValid && _updateValid();\r\n };\r\n const register = (name, options = {}) => {\r\n let field = get(_fields, name);\r\n const disabledIsDefined = isBoolean(options.disabled);\r\n set(_fields, name, {\r\n _f: {\r\n ...(field && field._f ? field._f : { ref: { name } }),\r\n name,\r\n mount: true,\r\n ...options,\r\n },\r\n });\r\n _names.mount.add(name);\r\n field\r\n ? disabledIsDefined &&\r\n set(_formValues, name, options.disabled\r\n ? undefined\r\n : get(_formValues, name, getFieldValue(field._f)))\r\n : updateValidAndValue(name, true, options.value);\r\n return {\r\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\r\n ...(_options.shouldUseNativeValidation\r\n ? {\r\n required: !!options.required,\r\n min: getRuleValue(options.min),\r\n max: getRuleValue(options.max),\r\n minLength: getRuleValue(options.minLength),\r\n maxLength: getRuleValue(options.maxLength),\r\n pattern: getRuleValue(options.pattern),\r\n }\r\n : {}),\r\n name,\r\n onChange,\r\n onBlur: onChange,\r\n ref: (ref) => {\r\n if (ref) {\r\n register(name, options);\r\n field = get(_fields, name);\r\n const fieldRef = isUndefined(ref.value)\r\n ? ref.querySelectorAll\r\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\r\n : ref\r\n : ref;\r\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\r\n const refs = field._f.refs || [];\r\n if (radioOrCheckbox\r\n ? refs.find((option) => option === fieldRef)\r\n : fieldRef === field._f.ref) {\r\n return;\r\n }\r\n set(_fields, name, {\r\n _f: {\r\n ...field._f,\r\n ...(radioOrCheckbox\r\n ? {\r\n refs: [\r\n ...refs.filter(live),\r\n fieldRef,\r\n ...(!!Array.isArray(get(_defaultValues, name))\r\n ? [{}]\r\n : []),\r\n ],\r\n ref: { type: fieldRef.type, name },\r\n }\r\n : { ref: fieldRef }),\r\n },\r\n });\r\n updateValidAndValue(name, false, undefined, fieldRef);\r\n }\r\n else {\r\n field = get(_fields, name, {});\r\n if (field._f) {\r\n field._f.mount = false;\r\n }\r\n (_options.shouldUnregister || options.shouldUnregister) &&\r\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\r\n _names.unMount.add(name);\r\n }\r\n },\r\n };\r\n };\r\n const handleSubmit = (onValid, onInvalid) => async (e) => {\r\n if (e) {\r\n e.preventDefault && e.preventDefault();\r\n e.persist && e.persist();\r\n }\r\n let hasNoPromiseError = true;\r\n let fieldValues = cloneObject(_formValues);\r\n _subjects.state.next({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (_options.resolver) {\r\n const { errors, values } = await _executeSchema();\r\n _formState.errors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n await executeBuildInValidation(_fields);\r\n }\r\n if (isEmptyObject(_formState.errors)) {\r\n _subjects.state.next({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n if (onInvalid) {\r\n await onInvalid({ ..._formState.errors }, e);\r\n }\r\n _options.shouldFocusError &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), _names.mount);\r\n }\r\n }\r\n catch (err) {\r\n hasNoPromiseError = false;\r\n throw err;\r\n }\r\n finally {\r\n _formState.isSubmitted = true;\r\n _subjects.state.next({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(_formState.errors) && hasNoPromiseError,\r\n submitCount: _formState.submitCount + 1,\r\n errors: _formState.errors,\r\n });\r\n }\r\n };\r\n const resetField = (name, options = {}) => {\r\n if (get(_fields, name)) {\r\n if (isUndefined(options.defaultValue)) {\r\n setValue(name, get(_defaultValues, name));\r\n }\r\n else {\r\n setValue(name, options.defaultValue);\r\n set(_defaultValues, name, options.defaultValue);\r\n }\r\n if (!options.keepTouched) {\r\n unset(_formState.touchedFields, name);\r\n }\r\n if (!options.keepDirty) {\r\n unset(_formState.dirtyFields, name);\r\n _formState.isDirty = options.defaultValue\r\n ? _getDirty(name, get(_defaultValues, name))\r\n : _getDirty();\r\n }\r\n if (!options.keepError) {\r\n unset(_formState.errors, name);\r\n _proxyFormState.isValid && _updateValid();\r\n }\r\n _subjects.state.next({ ..._formState });\r\n }\r\n };\r\n const reset = (formValues, keepStateOptions = {}) => {\r\n const updatedValues = formValues || _defaultValues;\r\n const cloneUpdatedValues = cloneObject(updatedValues);\r\n const values = formValues && !isEmptyObject(formValues)\r\n ? cloneUpdatedValues\r\n : _defaultValues;\r\n if (!keepStateOptions.keepDefaultValues) {\r\n _defaultValues = updatedValues;\r\n }\r\n if (!keepStateOptions.keepValues) {\r\n if (keepStateOptions.keepDirtyValues) {\r\n for (const fieldName of _names.mount) {\r\n get(_formState.dirtyFields, fieldName)\r\n ? set(values, fieldName, get(_formValues, fieldName))\r\n : setValue(fieldName, get(values, fieldName));\r\n }\r\n }\r\n else {\r\n if (isWeb && isUndefined(formValues)) {\r\n for (const name of _names.mount) {\r\n const field = get(_fields, name);\r\n if (field && field._f) {\r\n const fieldReference = Array.isArray(field._f.refs)\r\n ? field._f.refs[0]\r\n : field._f.ref;\r\n try {\r\n isHTMLElement(fieldReference) &&\r\n fieldReference.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n _fields = {};\r\n }\r\n _formValues = props.shouldUnregister\r\n ? keepStateOptions.keepDefaultValues\r\n ? cloneObject(_defaultValues)\r\n : {}\r\n : cloneUpdatedValues;\r\n _subjects.array.next({\r\n values,\r\n });\r\n _subjects.watch.next({\r\n values,\r\n });\r\n }\r\n _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n watchAll: false,\r\n focus: '',\r\n };\r\n _stateFlags.mount =\r\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\r\n _stateFlags.watch = !!props.shouldUnregister;\r\n _subjects.state.next({\r\n submitCount: keepStateOptions.keepSubmitCount\r\n ? _formState.submitCount\r\n : 0,\r\n isDirty: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.isDirty\r\n : !!(keepStateOptions.keepDefaultValues &&\r\n !deepEqual(formValues, _defaultValues)),\r\n isSubmitted: keepStateOptions.keepIsSubmitted\r\n ? _formState.isSubmitted\r\n : false,\r\n dirtyFields: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.dirtyFields\r\n : keepStateOptions.keepDefaultValues && formValues\r\n ? getDirtyFields(_defaultValues, formValues)\r\n : {},\r\n touchedFields: keepStateOptions.keepTouched\r\n ? _formState.touchedFields\r\n : {},\r\n errors: keepStateOptions.keepErrors\r\n ? _formState.errors\r\n : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const setFocus = (name, options = {}) => {\r\n const field = get(_fields, name)._f;\r\n const fieldRef = field.refs ? field.refs[0] : field.ref;\r\n options.shouldSelect ? fieldRef.select() : fieldRef.focus();\r\n };\r\n return {\r\n control: {\r\n register,\r\n unregister,\r\n getFieldState,\r\n _executeSchema,\r\n _getWatch,\r\n _getDirty,\r\n _updateValid,\r\n _removeUnmounted,\r\n _updateFieldArray,\r\n _getFieldArray,\r\n _subjects,\r\n _proxyFormState,\r\n get _fields() {\r\n return _fields;\r\n },\r\n get _formValues() {\r\n return _formValues;\r\n },\r\n get _stateFlags() {\r\n return _stateFlags;\r\n },\r\n set _stateFlags(value) {\r\n _stateFlags = value;\r\n },\r\n get _defaultValues() {\r\n return _defaultValues;\r\n },\r\n get _names() {\r\n return _names;\r\n },\r\n set _names(value) {\r\n _names = value;\r\n },\r\n get _formState() {\r\n return _formState;\r\n },\r\n set _formState(value) {\r\n _formState = value;\r\n },\r\n get _options() {\r\n return _options;\r\n },\r\n set _options(value) {\r\n _options = {\r\n ..._options,\r\n ...value,\r\n };\r\n },\r\n },\r\n trigger,\r\n register,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n getValues,\r\n reset,\r\n resetField,\r\n clearErrors,\r\n unregister,\r\n setError,\r\n setFocus,\r\n getFieldState,\r\n };\r\n}\n\n/**\r\n * Custom hook to mange the entire form.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\r\n *\r\n * @param props - form configuration and validation parameters.\r\n *\r\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * console.log(watch(\"example\"));\r\n *\r\n * return (\r\n * <form onSubmit={handleSubmit(onSubmit)}>\r\n * <input defaultValue=\"test\" {...register(\"example\")} />\r\n * <input {...register(\"exampleRequired\", { required: true })} />\r\n * {errors.exampleRequired && <span>This field is required</span>}\r\n * <input type=\"submit\" />\r\n * </form>\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useForm(props = {}) {\r\n const _formControl = React.useRef();\r\n const [formState, updateFormState] = React.useState({\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n });\r\n if (_formControl.current) {\r\n _formControl.current.control._options = props;\r\n }\r\n else {\r\n _formControl.current = {\r\n ...createFormControl(props),\r\n formState,\r\n };\r\n }\r\n const control = _formControl.current.control;\r\n const callback = React.useCallback((value) => {\r\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\r\n control._formState = {\r\n ...control._formState,\r\n ...value,\r\n };\r\n updateFormState({ ...control._formState });\r\n }\r\n }, [control]);\r\n useSubscribe({\r\n subject: control._subjects.state,\r\n callback,\r\n });\r\n React.useEffect(() => {\r\n if (!control._stateFlags.mount) {\r\n control._proxyFormState.isValid && control._updateValid();\r\n control._stateFlags.mount = true;\r\n }\r\n if (control._stateFlags.watch) {\r\n control._stateFlags.watch = false;\r\n control._subjects.state.next({});\r\n }\r\n control._removeUnmounted();\r\n });\r\n _formControl.current.formState = getProxyFormState(formState, control._proxyFormState);\r\n return _formControl.current;\r\n}\n\nexport { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n"],"names":["Image","configEnv","process","handleLoading","img","placeholder","onLoadRef","onLoadingCompleteRef","setBlurComplete","unoptimized","sizesInput","src","p","decode","Promise","resolve","catch","then","parentElement","current","event","Event","Object","defineProperty","writable","value","prevented","stopped","nativeEvent","currentTarget","target","isDefaultPrevented","isPropagationStopped","persist","preventDefault","stopPropagation","getDynamicProps","fetchPriority","use","Boolean","fetchpriority","ImageElement","forwardRef","forwardedRef","decoding","className","loading","setShowAltText","rest","srcSet","sizes","height","width","style","fill","onLoad","onError","ownRef","useCallback","complete","ref","useMergedRef","data-nimg","ImagePreload","isAppRouter","imgAttributes","opts","as","imageSrcSet","imageSizes","crossOrigin","referrerPolicy","ReactDOM","preload","Head","link","rel","href","undefined","props","pagesRouter","useContext","RouterContext","configContext","ImageConfigContext","config","useMemo","c","imageConfigDefault","allSizes","deviceSizes","sort","a","b","qualities","onLoadingComplete","useRef","useEffect","useState","blurComplete","showAltText","getImgProps","defaultLoader","imgConf","meta","imgMeta","priority","dynamic","noSSR","convertModule","mod","default","LoadableInitializer","loadableOptions","webpack","modules","dynamicOptions","options","loadableFn","Loadable","error","isLoading","pastDelay","loader","loaderFn","loadableGenerated","ssr","isStaticRequire","getInt","x","Number","isFinite","NaN","test","parseInt","_state","blurWidth","blurHeight","quality","blurDataURL","layout","objectPosition","lazyBoundary","overrideSrc","objectFit","lazyRoot","isDefaultLoader","customImageLoader","obj","layoutStyle","intrinsic","maxWidth","responsive","layoutSizes","staticSrc","widthInt","heightInt","isStaticImport","isStaticImageData","staticImageData","JSON","stringify","ratio","Math","round","isLazy","startsWith","dangerouslyAllowSVG","split","endsWith","qualityInt","imgStyle","assign","position","left","top","right","bottom","color","backgroundImage","getImageBlurSvg","backgroundSize","backgroundPosition","backgroundRepeat","generateImgAttrs","viewportWidthRe","percentSizes","match","exec","push","length","smallestRatio","min","widths","filter","s","kind","Set","map","w","find","getWidths","last","i","join","placeholderStyle","svgWidth","svgHeight","viewBox","std","preserveAspectRatio","q","reduce","prev","cur","abs","DEFAULT_Q","path","encodeURIComponent","__next_img_default","LoadableContext","React","createContext","ALL_INITIALIZERS","READY_INITIALIZERS","initialized","load","promise","state","loaded","err","loadFn","_loadFn","_opts","_callbacks","_delay","_timeout","retry","_res","_clearTimeouts","timedOut","res","delay","setTimeout","_update","timeout","_err","partial","forEach","callback","clearTimeout","getCurrentValue","subscribe","add","delete","LoadableSubscription","createLoadableComponent","subscription","init","sub","bind","moduleIds","window","ids","moduleId","includes","LoadableComponent","Array","isArray","moduleName","context","useSyncExternalStore","useImperativeHandle","createElement","displayName","flushInitializers","initializers","promises","pop","all","preloadAll","resolveInitializers","reject","preloadReady","resolvePreload","__NEXT_PRELOADREADY","defaultOptions","getDefaultOptions","normalizeDates","dates","normalize","constructFrom","date","addMonths","amount","_date","toDate","in","isNaN","dayOfMonth","getDate","endOfDesiredMonth","getTime","setMonth","getMonth","daysInMonth","setFullYear","getFullYear","getTimezoneOffsetInMilliseconds","utcDate","Date","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","startOfDay","earlierStartOfDay","earlierTimestamp","millisecondsInDay","differenceInDays","sign","compareLocalAsc","difference","setDate","isLastDayNotFull","result","diff","eachDayOfInterval","interval","normalizeInterval","start","end","reversed","endTime","setHours","step","reverse","endOfMonth","month","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","args","String","defaultWidth","format","formats","formatLong","full","long","medium","short","time","timeFormats","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","formattingValues","defaultFormattingWidth","valuesArray","values","argumentCallback","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","key","findIndex","predicate","array","pattern","findKey","object","prototype","hasOwnProperty","call","valueCallback","slice","enUS","code","formatDistance","token","count","tokenValue","replace","toString","addSuffix","comparison","formatRelative","_baseDate","_options","ordinalNumber","localize","dirtyNumber","number","rem100","era","narrow","abbreviated","wide","quarter","day","dayValues","dayPeriod","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","any","parseQuarterPatterns","index","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","weekStartsOn","startOfISOWeek","startOfWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getWeekYear","firstWeekContainsDate","locale","firstWeekOfNextYear","firstWeekOfThisYear","targetLength","output","padStart","lightFormatters","y","signedYear","addLeadingZeros","M","d","h","H","m","S","numberOfDigits","trunc","fractionalSeconds","pow","formatters","G","unit","Y","signedWeekYear","weekYear","twoDigitYear","R","u","Q","ceil","L","week","getWeek","startOfWeekYear","firstWeek","millisecondsInWeek","I","isoWeek","getISOWeek","startOfISOWeekYear","fourthOfJanuary","D","dayOfYear","date_","startOfYear","E","dayOfWeek","getDay","e","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","hours","toLowerCase","dayPeriodEnum","B","K","k","X","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","t","T","offset","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","longFormatters","P","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","weekYearTokenRE","throwTokens","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","defaultLocale","originalDate","isDate","isValid","parts","substring","firstCharacter","longFormatter","isToken","cleanEscapedString","input","matched","preprocessor","formatterOptions","part","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","dayOfYearTokenRE","isProtectedDayOfYearToken","warnOrThrowProtectedError","subject","_message","console","warn","formatter","getDaysInMonth","monthIndex","lastDayOfMonth","isAfter","dateToCompare","isBefore","isFirstDayOfMonth","isSameDay","dateLeft_","dateRight_","isSameMonth","isSameYear","isWithinInterval","startTime","lastDayOfWeek","parseISO","argument","invalidDate","additionalDigits","dateStrings","splitDateString","timeString","dateString","patterns","dateTimeDelimiter","timeZoneDelimiter","substr","timezone","parseYearResult","parseYear","regex","RegExp","captures","restDateString","century","parseDate","fourthOfJanuaryDay","dateRegex","isWeekDate","parseDateUnit","validateWeekDate","getUTCDay","setUTCDate","getUTCDate","validateDate","daysInMonths","validateDayOfYearDate","isLeapYearIndex","max","timestamp","parseTime","timeRegex","parseTimeUnit","seconds","millisecondsInHour","millisecondsInMinute","parseTimezone","timezoneString","timezoneRegex","validateTimezone","tmpDate","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseFloat","startOfMonth","subDays","addDays","subMonths"],"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,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,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369]}